目录
说明:
(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]);}}}
感谢浏览和阅读,希望以上对你有帮助!
创作不易,阅读完后记得留个赞和关注吧!!!