[toc]
第一个程序:

选择 控制台应用程序

创建完工程之后,我们可以编写如下代码:
#include "pch.h"#include <stdio.h>#include <stdlib.h>int main(){printf("Hello world");system("pause");return 0;}
程序并不能直接运行,因为我们需要将其编译为可执行的文件。
生成成功之后,exe文件是可以运行的程序。

vs的工程管理方式:
解决方案:
工程1
文件1.cpp
文件2.cpp
…..
工程2
…..
工程3
…..
……
再在解决方案之下,新建一个工程:


如果说代码编写完毕了,通过vs启动程序,有几个方式:
方式1:快捷键是 F5 调试运行程序
方式2:ctrl+F5 直接运行程序
当一个解决方案下,有多个工程的时候,可以使用如下方式,设置默认运行工程
vs解决方案目录的结构如下:
第一个C语言程序:
/*工程名: Test用途:教学编写者:高老师时间:2019-8-20*/#include <stdio.h>#include <stdlib.h> //预处理int main(void) //主函数{printf("hello 15PB"); //调用库函数,printf是输出system("title 十五派");//system("cls");system("pause"); //调用库函数,system是执行cmd命令return 0; //返回。}
其中包含的知识点:
预处理:
inlude 的作用:就是将包含的文件,复制粘贴到命令处。
库函数:
printf system
总结:我们使用库函数去完成一些功能,库函数是编译器提供给我们使用的。但是我们如果要使用某一个库函数,就需要包含相应的头文件。
比如 printf 属于
关键字:
是C语言已经使用了的一些单词。
注释:
分为单行注释和多行注释
作用:
1 便于自己复习
2 便于工作交接
3 还可以找错误
我们可以逐步的缩小错误所在的范围:
#include <stdio.h>#include <stdlib.h> //预处理int main(void) //主函数{printf("hello 15PB"); //调用库函数,printf是输出system("title 十五派");system("cls");/* system("pause") 将这里注释之后,错误没有了,说明错误在这个范围内return 0; //返回。*/}
课堂练习:
设置控制台的标题为“ Hello 15PB ” ,并输出白底黑字的内容“ Hello 信息安全 ”;
/*工程名: Test用途:教学编写者:高老师时间:2019-8-20*/#include <stdio.h>#include <stdlib.h>int main(void){printf("hello 信息安全");system("title hello 15PB");system("color 70");system("pause");return 0;}

需要注意:
1 语句以分号为结尾
2 System s需要小写
3 双引号,需要是英文的
C语言中使用的所有符号,都是英文符号。
关于main函数的问题:
C语言第一行被执行的代码,就是main函数的复合语句。
同一个工程中,只能有一个main函数。

关于常量 变量 赋值的问题
常量就是不可以改变的量
变量是背后有一块内存,变量名代表那一块空间。
&符号能够得到变量的地址。
int nNum = 0; 就是定义了一个变量 类型是 int 。
关于赋值符号的左值和右值。
对于一个变量来说,放在赋值左边的时候,使用的是背后内存
放在右边的时候,使用的是内存中的数值。
int main(){int a = 0;int b = 0;a = 100;//复制符号左边的量,需要有内存//左边使用的也是内存b = a; //右边,只要有数值就可以了。//100 = a;//错误 左边如果是一个常量是不行的,//因为常量背后没有内存return 0;}
关于赋值时的类型转换:
#include <stdio.h>#include <stdlib.h>int main(){int a = 10;short b = 0;a = b;int c = 100;short d = 20;d = c;int e = 65538;short f = 0;f = e; //这里丢失数据了return 0;}
我们在赋值的时候,如果赋值符号左右两边的类型不一致。
会自动的将右边的类型,给转换为左边的类型,然后再赋值。这个叫做隐式转换。
缺点就是,当右边的类型范围大,左边的类型范围小的时候,有可能会丢失数据。
我们还学习了一个调试技巧。
设置断点——-》F5 程序运行起来,就会停在断点的位置———》F10 单步步过 一步一步的运行我们的程序,观察结果
F11 单步步入
调试时的监视功能:
如果找不到这个窗口的话:
关于显式类型转换:
#include <stdlib.h>int main(){double a = 3.14;int b = 0;b = (int)a;//当我明确知道他俩类型不一样的时候,应该写显示转换,表示我是故意这么做的。return 0;}
课堂练习:交换两个数的值
交换两个变量a和b的值
int a = 5;
int b = 6;
交换后,a等于6,b等于5
int main(){int a = 5;int b = 6;int c = 0;c = a;a = b;b = c;return 0;}
如果不想使用中间变量
int main(){int a = 5;int b = 6;a = a + b;b = a - b;a = a - b;return 0;}
程序的输入与输出:
需要注意:printf函数的格式控制符的数量和类型一定要和后面的参数匹配上。

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

关于字符和整数:
字符和整数 没有本质区别,都是数字。 字符也是其阿斯克码。
课堂练习:
从键盘获取两个数,输出和
int main(){//scanf();int a = 0;int b = 0;printf("请输入两个数");scanf_s("%d %d",&a,&b);printf("%d", a + b);return 0;}
从控制台中接收一个字符。
int main(){int a = 0;int b = 0;char m = 0;printf("请输入两个数");scanf_s("%d %d",&a,&b);printf("%d", a + b);printf("请输入一个字符");scanf_s("%c", &m);//去掉缓冲区中的回车scanf_s("%c", &m);printf("获取到的字符为%c",m);return 0;}
关于字符的两个函数:
getchar 获取一个字符
putchar 输出一个字符
_getch() 存在于
功能是无回显的获取一个字符
关于运算符:
算数运算符:
- / % ++ —
需要注意的:
1 / 在C语言中,两个整数相除,得到的只能是整数
如果要得到小数部分,应该有浮点数参与运算
2 % 是取模, 进行运算的数,只能是整数
3 ++ 自增 自己增加1
— 自减 自己减小1
int main(){int a = 10;a++;printf("%d", a);return 0;}

自增或者自减 可以前置也可以后置
对于前置的自增/自减,在自增自减的同时还参与了其他的运算,那么就先自增/自减,再进行其他运算
对于后的自增/自减,在自增自减的同时还参与了其他的运算,先进行其他运算,再进行自增/自减
int main(){int c = 0;int a = 10;c = a++;printf("%d %d\n", a,c);int b = 10;c = ++b;printf("%d %d", b,c);return 0;}
