安装环境

01.第一个程序

  1. #include <stdio.h> // stdio.h是一个头文件(标准输入输出头文件),没有的话会编译错误,#include是一个预处理命令,用来引入头文件
  2. int main() //入口函数,所有C语言程序都需要包含main()函数。代码从main()函数开始执行
  3. {
  4. printf("Hello world \n"); // printf()用于格式化输出到屏幕。printf()函数在stdio.h头文件中声明了
  5. printf("Hello world \n");
  6. printf("Hello world \n");
  7. return 0; // 表示退出程序
  8. }

02.变量定义

  1. //int 变量类型
  2. //age 变量的名字
  3. //向内存申请一块内存来存放我们的内容
  4. int age = 20;

03.变量赋值与初始化

  1. int main()//入口函数
  2. {
  3. //int 变量类型
  4. //age 变量的名字
  5. //向内存申请一块内存来存放我们的内容
  6. //= 赋值运算符 ==等于
  7. int age = 20;
  8. }

04.变量输入

  1. int main()//入口函数
  2. {
  3. //int 变量类型
  4. //age 变量的名字
  5. //向内存申请一块内存来存放我们的内容
  6. //= 赋值运算符 ==等于
  7. int age = 20;
  8. printf("请输入你的年龄... \n");//在控制台打印输出
  9. scanf_s("%d",&age);//在控制台输入
  10. printf("当前age的值:%d \n",age);//在控制台打印输出
  11. }

05.变量与常量

常量:初始化之后就不可以在改变

  1. int main()//入口函数
  2. {
  3. //常量的定义
  4. const int maxCount = 60;
  5. //变量的定义
  6. int age = 10;
  7. age = 100;
  8. }

06.浮点数

浮点数:float,double

4/2=2

4/3=1.3333333

4/5=0.8

  1. int main()//入口函数
  2. {
  3. //
  4. int result1 = 4 / 2;
  5. double b = 5;
  6. double a = 3;
  7. double result2 = 4 / a;
  8. double result3 = 4 / b;
  9. //(double)result=(int)4 / (double)5;
  10. printf("%d \n", result1);
  11. printf("%f \n", result2);
  12. printf("%f \n", result3);
  13. }

07.表达式

表达式:由运算符和操作数(常量或者变量也可以),必须有一个返回值。

08.运算符优先级

  1. int main() //入口函数
  2. {
  3. int result = (2 + 5) * 4;
  4. printf("%d \n", result);
  5. }

09.判断语句if

=:一个”=”代表的是赋值

:两个””代表的是两边的值是否相等

  1. int main()//入口函数
  2. {
  3. int a = 6;
  4. if (a == 2 + 4)//判断条件 恒成立
  5. {
  6. printf("判断为真 \n");
  7. }
  8. printf("00000 \n");
  9. }

10.分支语句if-else

  1. int main()//入口函数
  2. {
  3. int a = 5;
  4. if (a == 2 + 4)//判断条件 恒成立
  5. {
  6. printf("判断为真 \n");
  7. }
  8. else if (a == 5)
  9. {
  10. printf("我是第二个IF \n");
  11. }else
  12. {
  13. printf("判断为假 \n");
  14. }
  15. printf("00000 \n");
  16. }

11.分支语句switch-case

  1. int main()//入口函数
  2. {
  3. int num = 2;
  4. switch (num)
  5. {
  6. case 1:
  7. printf("春天到了 \n");
  8. break;//结束循环
  9. case 2:
  10. printf("夏天到了 \n");
  11. break;
  12. case 3:
  13. printf("秋天到了 \n");
  14. break;
  15. case 4:
  16. printf("冬天到了 \n");
  17. break;
  18. default:
  19. printf("default \n");
  20. break;
  21. }
  22. if (num == 1)
  23. {
  24. printf("春天到了 \n");
  25. }
  26. else if (num == 2)
  27. {
  28. printf("夏天到了 \n");
  29. }
  30. else if (num == 3)
  31. {
  32. printf("秋天到了 \n");
  33. }
  34. else if (num == 4)
  35. {
  36. printf("冬天到了 \n");
  37. }
  38. else {
  39. printf("default \n");
  40. }
  41. }

12.循环for

  1. //i++ 自身加1 每次循环会做的一个动作
  2. for (int i = 0; i < 10;i++) {
  3. if (i == 3)
  4. {
  5. //continue;//结束本次循环
  6. break;//结束本层循环 也就是跳出循环
  7. }
  8. printf("i的值: %d \n", i);
  9. }

13.循环while和do-while

  1. int j = 0;
  2. while (j<10)
  3. {
  4. j++;
  5. printf("j %d \n",j);
  6. }
  7. do
  8. {
  9. j++;
  10. printf("j %d \n", j);
  11. } while (j < 10);

14.循环应用:求n项的和

  1. int main()//入口函数
  2. {
  3. //计算1-10之间的和
  4. //1+2 + 3+4+5+6+7+8+9+10
  5. int result = 0;
  6. for (int i = 0; i < 11;i++) {
  7. result = i + result;
  8. }
  9. printf("result= %d", result);
  10. }

15.数据类型-整数类型

  1. int main()//入口函数
  2. {
  3. //整数类型 char short int long
  4. int a = 255;
  5. printf("a : %d \n",a);
  6. printf("char %d \n", sizeof(char));
  7. printf("short %d \n", sizeof(short));
  8. printf("int %d \n", sizeof(int));
  9. printf("long %d \n", sizeof(long));
  10. }

16.数据类型-浮点类型

float double

  1. int main()//入口函数
  2. {
  3. //float double
  4. double a = (int)1 / (double)3;
  5. printf("a= %f \n",a);
  6. printf("float %d\n", sizeof(float));
  7. printf("double %d\n", sizeof(double));
  8. }

17.数据类型-字符类型

  1. int main()//入口函数
  2. {
  3. char a = 1;
  4. char b = 'a';
  5. if (a == b)
  6. {
  7. printf("他们相等 \n");
  8. }
  9. else
  10. {
  11. printf("他们不相等\n");
  12. }
  13. printf("a= %d \n", a);
  14. printf("b= %d \n", b);
  15. }

18.数据类型-类型转换

  1. int main()//入口函数
  2. {
  3. //char - short - int -float -double
  4. //自动转换:默认从小的类型向大的类型转换
  5. short a = 5;
  6. short b = 7;
  7. int c = a + b;
  8. //强制转换:从大类型转换成小类型
  9. double b = 5.0;
  10. double e = 8.0;
  11. int f = (int)b / e;
  12. }

19.运算符-算术运算符

//+ - * / ++ — %

  1. //+ - * / ++ -- %
  2. int a = 3;
  3. int b = 5;
  4. int c = b%a;
  5. a++;
  6. b--;
  7. printf("c %d \n",c);
  8. printf("a %d \n", a);
  9. printf("b %d \n", b);

20.运算符-关系运算符

  1. int main()//入口函数
  2. {
  3. //== != < > <= >=
  4. if (1 != 1) {
  5. printf("相等");
  6. }
  7. else
  8. {
  9. printf("不相等");
  10. }
  11. }

21.运算符-逻辑运算符

逻辑与:&& 有一个为假就是假

逻辑或:|| 有一个为真就是真

逻辑非:! 取反

  1. int main()//入口函数
  2. {
  3. if (!(5>2 || 5<2))
  4. {
  5. printf("返回真 \n");
  6. }
  7. else
  8. {
  9. printf("返回假 \n");
  10. }
  11. }

22.运算符-位运算符

位运算:&,|,^,~,<<,>>

  1. int main()//入口函数
  2. {
  3. int a = 2;
  4. int b = 3;
  5. //按位与&
  6. //10
  7. //11
  8. //10
  9. int c = a & b;
  10. //按位或 |
  11. //10
  12. //11
  13. //11
  14. int d = a | b;
  15. //按位异或 ^
  16. //10
  17. //11
  18. //01
  19. int e = a ^ b;
  20. printf("按位异或的结果e =%d \n",e);
  21. }

23.函数的定义与使用

函数:一块代码,可以传入零个或多个参数,执行我们需要的操作,之后返回零个或一个返回值。

  1. int aa()
  2. {
  3. int a = 2;
  4. int b = 3;
  5. //按位与&
  6. //10
  7. //11
  8. //10
  9. int c = a & b;
  10. return c;
  11. }
  12. int main()//入口函数
  13. {
  14. int result = aa();
  15. printf("%d \n", result);
  16. }

24.函数的参数和变量

  1. int aa(int a,int b)
  2. {
  3. //按位与&
  4. //10
  5. //11
  6. //10
  7. int c = a & b;//c就是局部变量
  8. return c;
  9. }
  10. int main()//入口函数
  11. {
  12. int result = aa(5,6);//result就是局部变量
  13. //101
  14. //110
  15. //100
  16. printf("%d \n", result);
  17. }

25.认识数组和数组的使用

数组:是用来存放多个相同类型的一个集合,并且固定大小。

  1. //int arr[5];
  2. int arr[5] = {1,2,3,4,5};
  3. int a = arr[0];
  4. for (int i = 0; i < 5; i++)
  5. {
  6. printf("%d \n", arr[i]);
  7. }

26.指针-取地址运算

1.内存地址:就是以字节为单位,给内存作的一个编号

2.指针:它的本质就是内存地址,就是一个个编号。

3.指针变量:

  1. ①我们定义的一个变量,在作编译的时候,系统会为它自动分配一个内存地址,
  2. ②然后我们还想定义一个变量去保存这个地址,那么我们就可以叫这个保存地址的变量叫它指针变量。

4.取地址符号:&

  1. int main()//入口函数
  2. {
  3. int i = 3;
  4. int* p;
  5. p = &i;
  6. printf("p:%x",p);
  7. }

27.指针-指针与数组

数组的名字实际上就是第一个元素的内存地址

28.指针-指针的运算

1.i与i

i++:它是先用i的值然后在++

i:先在用i的值

2.*p=p这个地址的内容

29.字符串-字符串变量

以0结尾的字符数组才是字符串。

  1. int main()//入口函数
  2. {
  3. char str[] = {'H','e','l','l','o','0'};
  4. char strA[] = "Hello";
  5. const char *pStr = "Hello";//只读
  6. //strA[0] = 'W';
  7. //pStr[0] = 'W';
  8. printf("%s", strA);
  9. }

30.字符串-字符串函数参数

  1. void testStr(char * pStr)
  2. {
  3. printf("%s \n", pStr);
  4. }
  5. int main()//入口函数
  6. {
  7. char strA[] = "Hello";
  8. testStr(strA);
  9. printf("%s \n", strA);
  10. }

31.字符串-字符串长度strlen

strlen:测量字符串的长度

sizeof:测量的是在内存中实际所占的大小

  1. int main()//入口函数
  2. {
  3. char strA[] = "Hello";
  4. int lenth = strlen(strA);
  5. int size = sizeof(strA);
  6. printf("%d \n", lenth);
  7. printf("%d \n", size);
  8. }

32.字符串-字符串比较strcmp

  1. int main()//入口函数
  2. {
  3. char strA[] = "Hello";
  4. char strB[] = "World";
  5. int result = strcmp(strA, strB);
  6. printf("%d \n", result);
  7. }

33.字符串-字符串拷贝strcpy

  1. int main()//入口函数
  2. {
  3. char strA[] = "Hello";
  4. char strB[10];
  5. strcpy_s(strB, strA);//第一个参数是目标,第二个参数 源
  6. printf("%s \n", strB);
  7. }

34.结构-结构类型

  1. struct Person {
  2. int age;
  3. int sex;
  4. char* pName;
  5. }person;
  6. int main()//入口函数
  7. {
  8. //Person person;
  9. person.age = 20;
  10. person.pName = "www.yxfzedu.com";
  11. person.sex = 1;
  12. int mySex = person.sex;
  13. printf("mySex :%d \n", mySex);
  14. }

35.结构-结构体中的结构体

  1. struct Person {
  2. int age;
  3. int sex;
  4. char* pName;
  5. }person;
  6. struct Student
  7. {
  8. int id;
  9. Person per;
  10. };
  11. int main()//入口函数
  12. {
  13. Student stu;
  14. stu.per.age = 100;
  15. printf("stu.per.age :%d \n", stu.per.age);
  16. }

36.联合:联合体类型

特点:共用一块内存。

  1. union MyUnion
  2. {
  3. int a;
  4. long b;
  5. };
  6. int main()//入口函数
  7. {
  8. MyUnion uni;
  9. uni.a = 10;
  10. printf("uni.b :%d \n", uni.b);
  11. }

37.全局变量-全局变量

  1. int a = 10;//全局变量
  2. void test();
  3. int main()//入口函数
  4. {
  5. printf("main函数 a: %d \n", a);
  6. test();
  7. }
  8. void test() {
  9. printf("test函数 a: %d \n",a);
  10. }

38.全局变量-静态本地变量

static

  1. void test() {
  2. static int a = 10;
  3. a= a + 2;
  4. printf("a :%d \n",a);
  5. }
  6. int main()//入口函数
  7. {
  8. test();
  9. test();
  10. test();
  11. }

39.编译预处理和宏

40.格式化输入输出

41.文件输入输出