[toc]

第一个程序:

image.png

选择 控制台应用程序

image.png

创建完工程之后,我们可以编写如下代码:

  1. #include "pch.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. int main()
  5. {
  6. printf("Hello world");
  7. system("pause");
  8. return 0;
  9. }

程序并不能直接运行,因为我们需要将其编译为可执行的文件。

image.png

生成成功之后,exe文件是可以运行的程序。

image.png

vs的工程管理方式:
解决方案:
工程1
文件1.cpp
文件2.cpp
…..
工程2
…..
工程3
…..
……

再在解决方案之下,新建一个工程:

image.png
image.png

如果说代码编写完毕了,通过vs启动程序,有几个方式:
方式1:快捷键是 F5 调试运行程序
image.png
方式2:ctrl+F5 直接运行程序
当一个解决方案下,有多个工程的时候,可以使用如下方式,设置默认运行工程
image.png
vs解决方案目录的结构如下:
image.png

第一个C语言程序:

  1. /*
  2. 工程名: Test
  3. 用途:教学
  4. 编写者:高老师
  5. 时间:2019-8-20
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h> //预处理
  9. int main(void) //主函数
  10. {
  11. printf("hello 15PB"); //调用库函数,printf是输出
  12. system("title 十五派");
  13. //system("cls");
  14. system("pause"); //调用库函数,system是执行cmd命令
  15. return 0; //返回。
  16. }

其中包含的知识点:

预处理:

inlude 的作用:就是将包含的文件,复制粘贴到命令处。

库函数:

printf system
总结:我们使用库函数去完成一些功能,库函数是编译器提供给我们使用的。但是我们如果要使用某一个库函数,就需要包含相应的头文件。
比如 printf 属于 system 属于

关键字:

是C语言已经使用了的一些单词。

注释:

分为单行注释和多行注释
作用:
1 便于自己复习
2 便于工作交接
3 还可以找错误
我们可以逐步的缩小错误所在的范围:

  1. #include <stdio.h>
  2. #include <stdlib.h> //预处理
  3. int main(void) //主函数
  4. {
  5. printf("hello 15PB"); //调用库函数,printf是输出
  6. system("title 十五派");
  7. system("cls");
  8. /* system("pause") 将这里注释之后,错误没有了,说明错误在这个范围内
  9. return 0; //返回。
  10. */
  11. }

课堂练习:

设置控制台的标题为“ Hello 15PB ” ,并输出白底黑字的内容“ Hello 信息安全 ”;

  1. /*
  2. 工程名: Test
  3. 用途:教学
  4. 编写者:高老师
  5. 时间:2019-8-20
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. int main(void)
  10. {
  11. printf("hello 信息安全");
  12. system("title hello 15PB");
  13. system("color 70");
  14. system("pause");
  15. return 0;
  16. }

image.png

需要注意:

1 语句以分号为结尾
2 System s需要小写
3 双引号,需要是英文的
C语言中使用的所有符号,都是英文符号。

关于main函数的问题:
C语言第一行被执行的代码,就是main函数的复合语句。
同一个工程中,只能有一个main函数。
image.png
image.png

关于常量 变量 赋值的问题

常量就是不可以改变的量
变量是背后有一块内存,变量名代表那一块空间。
&符号能够得到变量的地址。
int nNum = 0; 就是定义了一个变量 类型是 int 。

关于赋值符号的左值和右值。

对于一个变量来说,放在赋值左边的时候,使用的是背后内存
放在右边的时候,使用的是内存中的数值。

  1. int main()
  2. {
  3. int a = 0;
  4. int b = 0;
  5. a = 100;//复制符号左边的量,需要有内存
  6. //左边使用的也是内存
  7. b = a; //右边,只要有数值就可以了。
  8. //100 = a;//错误 左边如果是一个常量是不行的,
  9. //因为常量背后没有内存
  10. return 0;
  11. }

关于赋值时的类型转换:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5. int a = 10;
  6. short b = 0;
  7. a = b;
  8. int c = 100;
  9. short d = 20;
  10. d = c;
  11. int e = 65538;
  12. short f = 0;
  13. f = e; //这里丢失数据了
  14. return 0;
  15. }

我们在赋值的时候,如果赋值符号左右两边的类型不一致。
会自动的将右边的类型,给转换为左边的类型,然后再赋值。这个叫做隐式转换。
缺点就是,当右边的类型范围大,左边的类型范围小的时候,有可能会丢失数据。
我们还学习了一个调试技巧。
设置断点——-》F5 程序运行起来,就会停在断点的位置———》F10 单步步过 一步一步的运行我们的程序,观察结果
F11 单步步入
调试时的监视功能:
image.png
如果找不到这个窗口的话:
image.png

关于显式类型转换:

  1. #include <stdlib.h>
  2. int main()
  3. {
  4. double a = 3.14;
  5. int b = 0;
  6. b = (int)a;//当我明确知道他俩类型不一样的时候,应该写显示转换,表示我是故意这么做的。
  7. return 0;
  8. }

课堂练习:交换两个数的值

交换两个变量a和b的值
int a = 5;
int b = 6;
交换后,a等于6,b等于5

  1. int main()
  2. {
  3. int a = 5;
  4. int b = 6;
  5. int c = 0;
  6. c = a;
  7. a = b;
  8. b = c;
  9. return 0;
  10. }

如果不想使用中间变量

  1. int main()
  2. {
  3. int a = 5;
  4. int b = 6;
  5. a = a + b;
  6. b = a - b;
  7. a = a - b;
  8. return 0;
  9. }

程序的输入与输出:

需要注意:printf函数的格式控制符的数量和类型一定要和后面的参数匹配上。
image.pngimage.png

关于整数的其他进制输出:

image.png

关于字符和整数:

字符和整数 没有本质区别,都是数字。 字符也是其阿斯克码。
image.png

课堂练习:

从键盘获取两个数,输出和

  1. int main()
  2. {
  3. //scanf();
  4. int a = 0;
  5. int b = 0;
  6. printf("请输入两个数");
  7. scanf_s("%d %d",&a,&b);
  8. printf("%d", a + b);
  9. return 0;
  10. }

从控制台中接收一个字符。

  1. int main()
  2. {
  3. int a = 0;
  4. int b = 0;
  5. char m = 0;
  6. printf("请输入两个数");
  7. scanf_s("%d %d",&a,&b);
  8. printf("%d", a + b);
  9. printf("请输入一个字符");
  10. scanf_s("%c", &m);//去掉缓冲区中的回车
  11. scanf_s("%c", &m);
  12. printf("获取到的字符为%c",m);
  13. return 0;
  14. }

关于字符的两个函数:

getchar 获取一个字符
putchar 输出一个字符
image.png
_getch() 存在于这个头文件中
功能是无回显的获取一个字符
image.png

关于运算符:

算数运算符:

      • / % ++ —

需要注意的:

1 / 在C语言中,两个整数相除,得到的只能是整数
如果要得到小数部分,应该有浮点数参与运算
2 % 是取模, 进行运算的数,只能是整数
3 ++ 自增 自己增加1
— 自减 自己减小1

  1. int main()
  2. {
  3. int a = 10;
  4. a++;
  5. printf("%d", a);
  6. return 0;
  7. }

image.png

自增或者自减 可以前置也可以后置

对于前置的自增/自减,在自增自减的同时还参与了其他的运算,那么就先自增/自减,再进行其他运算
对于后的自增/自减,在自增自减的同时还参与了其他的运算,先进行其他运算,再进行自增/自减

  1. int main()
  2. {
  3. int c = 0;
  4. int a = 10;
  5. c = a++;
  6. printf("%d %d\n", a,c);
  7. int b = 10;
  8. c = ++b;
  9. printf("%d %d", b,c);
  10. return 0;
  11. }