1 知识点
(1)当看到i++,++i等 要考虑一下前置还是后置,不要一味地只知道加一多思考。
(2)switch语句中的defaule语句可以不写
(3)C程序的基本组成单位是函数。
(4)注释想写哪里写哪里,但是不要写的奇奇怪怪。
(5)C语言每行可以写多条语句,但是我们习惯一行写一条语句。
(6)C语言本身没有输入输出语句,c语言的库函数,并不是官方提供的,是编译器的厂商提供的。
(7)在对一个c程序的编译过程中,是无法发现注释中的错误的。
(8)*p++ 是p++,再解引用,因为是后置++,所以使用再++,*p,然后++
(9)10|11, | 是按位或
(10)整数之间的变换 整形提升,浮点型之间的变换 算数转换 ,整形和浮点型之间 算数转换
2 求a的值
代码展示:
1. #include <stdio.h> 2. #include <stdlib.h> 3. int a = 1; 4. void test() 5. { 6. int a = 2; 7. a += 1; 8. } 9. int main() 10. { 11. test(); 12. printf("%d\n", a); 13. return 0; 14. }
函数体的局部变量a,出了函数就被销毁了,所以打印a的值为1全局变量。
3 求n的值
代码展示:
1. #include <stdio.h> 2. int main() 3. { 4. int i = 0; 5. int j = 0; 6. int n = 0; 7. for (i = 0, j = 0; (j = 123) && (i < 4); i++) 8. { 9. n++; 10. } 11. printf("%d", n); 12. return 0; 13. }
注意:j的值被赋成123,而不是判断。所以n = 4.
4 求最大公倍数
代码1展示:
1. #include <stdio.h> 2. int main() 3. { 4. int a = 0; 5. int b = 0; 6. scanf("%d %d", &a, &b); 7. int c = (a > b) ? (a) : (b); 8. int i = c; 9. while (i % a != 0 || i % b != 0) 10. { 11. i++; 12. } 13. printf("%d", i); 14. return 0; 15. }
代码2展示:
1. #include <stdio.h> 2. int main() 3. { 4. int a = 0; 5. int b = 0; 6. scanf("%d %d", &a, &b); 7. int i = 1; 8. while ((i * a) % b != 0) 9. { 10. i++; 11. } 12. printf("%d", i * a); 13. return 0; 14. }
思路: 一个数(从1开始)乘以a,然后整除b,就是最小公倍数。
5 倒置字符串
将一句话的单词倒置,标点不倒置。例如: I like beijing. 经过函数后为 beijing. like I
(以空格分隔)
代码展示:
1. #include <stdio.h> 2. #include <assert.h> 3. #include <string.h> 4. void reverse(char* left, char* right) 5. { 6. assert(left && right); 7. while (left < right) 8. { 9. char tmp = *left; 10. *left = *right; 11. *right = tmp; 12. left++; 13. right--; 14. } 15. } 16. int main() 17. { 18. char arr[100] = { 0 }; 19. gets(arr);//输入 20. int len = strlen(arr);//倒置 21. char* start = arr; 22. char* end = arr; 23. while (*end != '\0')//单个单词逆序 24. { 25. while (*end != ' ' && *end != '\0') 26. { 27. end++; 28. } 29. reverse(start, end - 1); 30. while (*end == ' ') 31. { 32. start = end + 1; 33. end = end + 1; 34. } 35. } 36. reverse(arr, arr + len - 1);//输出 37. printf("%s", arr); 38. return 0; 39. }
思路:先把每个单词逆序,空格不变,最后一个单词把标点符号带上,把标点符号看做是单词的一部分,然后集体逆序。
逆序单词 逆序一句话 ,都是在逆序字符串。