目录

说明:

(1)

(2)

错题

1.printf输出

(1)关于printf的输出

(2)注意点

2. 关键字

3. ASCII编码

4.转义字符

​编辑

5.变量

6.for循环

(1)线段图案

​编辑

(2) for循环体

(3) 素数

(4)”x”型图案

(5)正方形图案

7.while循环

(1)注意点

(2)求两个数的最大公约数

8.switch..case语句

(1)switch..case中的break

(2) 注意点

9.数组

10.函数

(1)

(2) 9*9乘法口诀表

重点题型

1.关于strlen和sizeof计算的题目

(1)strlen作用与数组

(2)转义字符和strlen

(3)关于sizeof题目

(4)strlen和sizeof的计算

4.1

4.2

2.前置++和后置++

3.数组&函数

编程题

1.将三个数从大到小排序

2.在数组中寻求最大值

​编辑

3.计算分组求和

方法一

方法二

4.数数字

5.数组的并序并升序


说明:

(1)

以下所列题目是我结合平常时所做错重点题型和编程题.

(2)

必刷题上更新至函数

错题

1.printf输出

(1)关于printf的输出

(2)注意点

printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n+1

2. 关键字

continue语句和break语句相似。

所不同的是,

它不是退出一个循环,而是开始循环的一次新迭代

3. ASCII编码

4.转义字符

5.变量

局部变量是放在内存的栈区的,全局变量是放在内存的静态区

6.for循环

(1)线段图案

(2) for循环体

(3) 素数

打印100-200的素数

素数:这个数只能除1和它本身的数

int main(){int i = 0, count = 0;for (i = 100; i <= 200; i++){int j = 0;for (j = 2; j <= i; j++){if (i % j == 0){break;}}if (i == j)//它本身{count++;printf("%d ", i);}}printf("\n");printf("count=%d\n", count);return 0;}

(4)”x”型图案

int main(){int n = 0;while ((scanf("%d", &n) != EOF)){int i = 0;//控制行for (i = 0; i < n; i++){int j = 0;//控制列for (j = 0; j < n; j++){if (i == j){printf("*");}else if (i + j == n - 1){printf("*");}else{printf(" ");}}printf("\n");}}return 0;}

逐步调试:

(5)正方形图案

int main(){int n = 0;while ((scanf("%d", &n) != EOF)){int i = 0;//控制行for (i = 0; i < n; i++){int j = 0;for (j = 0; j < n; j++){if (i == 0 || i == n - 1){printf("* ");}else if (j == 0 || j == n - 1){printf("* ");}else{printf("");}}printf("\n");}}return 0;}

逐步调试及总结

7.while循环

(1)注意点

关于while(条件表达式) 循环体,(假设循环体里面没有break,continue,return,goto等等语句)

条件表达式执行次数总是比循环体的执行次数多一次

while循环中,当条件表达式成立时,才会执行循环体中语句,每次执行期间,都会对循环因子进行修改(否则就成为死循环),修改完成后如果while条件表达式成立,继续循环,如果不成立,循环结束

(2)求两个数的最大公约数

int main(){int a = 0, b = 0, c = 0;scanf("%d %d", &a, &b);while (c = a % b)//表达式直到为0停止{a = b; //b-->ab = c; //c-->b}printf("这两个数的最大公约数为%d\n", b);return 0;}

8.switch..case语句

(1)switch..case中的break

(2) 注意点

switch语句中表达式的类型只能是:整形(int)和枚举类型

9.数组

数组的下标由小到大地址由低到高

10.函数

(1)

(2) 9*9乘法口诀表

*输入n就输出到n*n的乘法口诀

int print(int n){int i = 0;for (i = 1; i <= n; i++){int j = 0;for (j = 1; j <= i; j++) //j<=i方便控制台输出更有条理性{printf("%d*%d=%d ", i, j, i * j);}printf("\n");}return 0;}int main(){int n = 0;scanf("%d", &n);print(n);return 0;}

重点题型

1.关于strlen和sizeof计算的题目

(1)strlen作用与数组

(2)转义字符和strlen

(3)关于sizeof题目

sizeof的计算

(4)strlen和sizeof的计算

4.1

4.2

2.前置++和后置++

3.数组&函数

要求:

(1)实现print() 打印数组的每个元素

(2)实现reverse() 函数完成数组元素的逆置

(3)实现函数init() 初始化数组为全0

void init(int arr[], int sz, int set){int i = 0;for (i = 0; i < sz; i++){arr[i] = set;}}void print(int arr[], int sz){int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");}void reverse(int arr[], int sz){int left = 0;int right = sz - 1;while (left <= right){int temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}}int main(){int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);print(arr, sz); //打印数组reverse(arr, sz); print(arr, sz); //数组逆序init(arr, sz, 0); //函数set置为0print(arr, sz); //数组置0return 0;}

编程题

1.将三个数从大到小排序

定义临时变量temp,

从大到小,先用临时变量=最小

图解:

int main(){int a = 0, b = 0, c = 0;scanf("%d %d %d", &a, &b, &c);int temp = 0;//从大到小if (a < b){temp = a;a = b;b = temp;}if (a < c){temp = a;a = c;c = temp;}if (b < c){temp = b;b = c;c = temp;}printf("%d %d %d\n", a, b, c);return 0;}

2.在数组中寻求最大值

int main(){int arr[10] = { 0 };int i = 0;int max = arr[0]; //先令max取数组的第一个元素for (i = 0; i  max) //如果数组中某个元素>max{max = arr[i]; //令max取数组的某个元素}}printf("max=%d\n", max);//最后输出单独放出来,不能放在循环中,否则就会输出10个不同的最大值return 0;}

计算最小值则相反

3.计算分组求和

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 – 1/100 的值

方法一

int main(){int i = 0;double zheng = 0.0; double fu = 0.0;//分组求和肯定是小数,要用double类型for (i = 1; i <= 100; i++){if (i % 2 == 1){zheng += 1.0 / i; //如果是分母是奇数,就用+//double类型所含的表达式要加小数点和0,如:1.0}else{fu -= 1.0 / i;//如果是分母是偶数,就用-}}printf("result=%lf\n", zheng+fu);//0.688172return 0;}

方法二

intmain(){int i = 0;double sum = 0.0;int flag = 1; //定义一个flagfor(i=1; i<=100; i++){sum += flag*1.0/i;//首先分母是奇数,用+flag = -flag; //然后接着下一步分母是负数,就用-}printf("%lf\n", sum);return 0;}

4.数数字

数一下 1到 100 的所有整数中出现多少个数字9

int main(){int count = 0;int i = 0;for (i = 1; i <= 100; i++){if(i%10==9){count++;}if (i / 10 == 9){count++;}}printf("count=%d\n", count);//20return 0;}

*值得注意的是:

i%10==9:余数为9,i的个位数为9,如9,19,29,39…

i% 9 ==0:余数为0,是9的倍数,如9,18,27,36…

5.数组的并序并升序

两个数组分别升序组合成一个数组,并排为升序

值得注意的是,输入的两个数组都要分别为升序!!!

int main(){int m = 0, n = 0;//数组a,b元素个数int i = 0, j = 0;//for循环会使用到scanf("%d %d", &m, &n);//定义数组int a[100] = { 0 };int b[100] = { 0 };//输入数组a,b元素个数for (i = 0; i < m; i++){scanf("%d", &a[i]);}for (j = 0; j < n; j++){scanf("%d", &b[j]);}//重新初始化为0i = 0;j = 0;while (i < m && j < n){if (a[i] < b[j]){printf("%d ", a[i]);i++;}else{printf("%d ", b[j]);j++;}}if (i == m){for (; j < n; j++){printf("%d ", b[j]);}}if (j == n){for (; i < m; i++){printf("%d ", a[i]);}}}

感谢浏览和阅读,希望以上对你有帮助!

创作不易,阅读完后记得留个赞和关注吧!!!