目录
说明:
(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-->a
b = 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置为0
print(arr, sz); //数组置0
return 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 < 10; i++)
{
scanf("%d", &arr[i]); //在控制台输入10个数
if (arr[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.688172
return 0;
}
方法二
int main()
{
int i = 0;
double sum = 0.0;
int flag = 1; //定义一个flag
for(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);//20
return 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]);
}
//重新初始化为0
i = 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]);
}
}
}
感谢浏览和阅读,希望以上对你有帮助!文章来源:https://www.toymoban.com/news/detail-780139.html
创作不易,阅读完后记得留个赞和关注吧!!! 文章来源地址https://www.toymoban.com/news/detail-780139.html
到了这里,关于C语言必刷题上(保姆式详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!