1. 真题解析
1.1 基础知识
题目:编写一个C语言程序,实现从键盘输入一个整数,输出其各位数字之和。
解析:此题主要考察对C语言基础知识的掌握,包括输入输出函数的使用、整数的存储和运算。
代码示例:
#include <stdio.h>
int main() {
int num, sum = 0;
printf("请输入一个整数:");
scanf("%d", &num);
while (num != 0) {
sum += num % 10;
num /= 10;
}
printf("各位数字之和为:%d\n", sum);
return 0;
}
1.2 函数
题目:定义一个函数,计算两个整数的最大公约数。
解析:此题考察对函数的定义和递归调用的掌握。
代码示例:
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
printf("最大公约数为:%d\n", gcd(a, b));
return 0;
}
1.3 结构体
题目:定义一个结构体,表示一个学生,包括学号、姓名和成绩。编写一个函数,计算所有学生的平均成绩。
解析:此题考察对结构体的定义和使用,以及数组的操作。
代码示例:
#include <stdio.h>
typedef struct {
int id;
char name[50];
float score;
} Student;
void calculateAverage(Student students[], int n) {
float sum = 0;
for (int i = 0; i < n; i++) {
sum += students[i].score;
}
printf("平均成绩为:%f\n", sum / n);
}
int main() {
Student students[3] = {
{1, "张三", 90.0},
{2, "李四", 85.5},
{3, "王五", 78.0}
};
calculateAverage(students, 3);
return 0;
}
2. 答案详解
2.1 基础知识
答案:输入一个整数,输出其各位数字之和。
详解:程序首先通过scanf函数读取用户输入的整数,然后通过while循环不断取余和整除,将各位数字累加到变量sum中,最后输出结果。
2.2 函数
答案:计算两个整数的最大公约数。
详解:此题采用递归的方式计算最大公约数。当第二个参数b为0时,返回第一个参数a作为最大公约数;否则,递归调用gcd函数,将b作为新的第一个参数,a % b作为新的第二个参数。
2.3 结构体
答案:计算所有学生的平均成绩。
详解:首先定义一个结构体Student,包含学号、姓名和成绩。然后创建一个Student类型的数组,并初始化学生信息。calculateAverage函数遍历数组,计算所有学生的成绩之和,并除以学生数量,得到平均成绩。
