1. C语言基础练习题解析(21-30题)
作为一名有多年C语言教学经验的开发者,我经常遇到学生在基础算法和流程控制上遇到困难。下面我将通过10个典型练习题,详细讲解C语言中的核心编程技巧。这些题目涵盖了输入输出、循环控制、数组操作等基础知识点,适合初学者巩固基础,也适合有一定经验的开发者复习。
2. 题目详解与实现
2.1 整数累计与偶数统计(题21)
这个题目要求我们从键盘读取整数,进行累加并统计其中偶数的个数,直到用户输入非数字字符结束。
c复制#include<stdio.h>
int main()
{
int num, sum, count, ret;
sum = 0;
count = 0;
printf("input:");
while ((ret = scanf("%d", &num)) == 1)
{
sum += num;
if (num % 2 == 0)
{
count++;
}
printf("input:");
}
printf("sum = %d count = %d \n", sum, count);
return 0;
}
关键点解析:
scanf的返回值是成功读取的项目数,这里用来检测输入是否为整数- 使用
%运算符判断偶数(num % 2 == 0) - 循环会持续直到输入非数字字符(如'q')
注意:在实际应用中,建议添加输入提示和错误处理,比如清除输入缓冲区中的无效字符。
2.2 最大公约数与最小公倍数(题22)
这个算法展示了经典的欧几里得算法(辗转相除法)的实现。
c复制#include<stdio.h>
int main()
{
int a, b, c, t;
printf("input:");
scanf("%d %d", &a, &b);
if (a < b)
{
t = a;
a = b;
b = t;
}
t = a * b;
while ((c = a % b) != 0)
{
a = b;
b = c;
}
printf("max divisor:%d \n", b);
printf("min multiple:%d \n", t / b);
return 0;
}
算法原理:
- 最大公约数:两个数相除,取余数,然后用除数和余数继续相除,直到余数为0
- 最小公倍数:两数乘积除以最大公约数
优化建议:
- 可以封装成函数方便复用
- 添加输入验证,确保输入的是正整数
