c语言利用函数的递归调用实现循环请输入要选择的功能按1时从键盘顺序输入全班10名学生的期末成绩,按2显示输出全班成绩,按3显示全班成绩,按4显示全班平均分,按0退出系统,输入非0-4输出选择错误!请重新输入。直至退出系统结束循环
时间: 2024-03-23 13:37:26 浏览: 16
好的,以下是 C 语言利用函数的递归调用实现该功能的代码:
```c
#include <stdio.h>
int scores[10];
int sum = 0;
void show_menu();
void input_scores();
void print_scores();
void print_sum();
void print_average();
int main() {
show_menu();
return 0;
}
void show_menu() {
int choice = -1;
printf("请输入要选择的功能:\n");
printf("按1时从键盘顺序输入全班10名学生的期末成绩\n");
printf("按2显示输出全班成绩\n");
printf("按3显示全班成绩\n");
printf("按4显示全班平均分\n");
printf("按0退出系统\n");
scanf("%d", &choice);
switch (choice) {
case 1:
input_scores();
break;
case 2:
print_scores();
show_menu();
break;
case 3:
print_scores();
print_sum();
show_menu();
break;
case 4:
print_average();
show_menu();
break;
case 0:
printf("退出系统!\n");
break;
default:
printf("选择错误!请重新输入。\n");
show_menu();
break;
}
}
void input_scores() {
printf("请输入10名学生的期末成绩:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &scores[i]);
}
show_menu();
}
void print_scores() {
printf("全班成绩为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", scores[i]);
}
printf("\n");
}
void print_sum() {
sum = 0;
printf("全班成绩为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", scores[i]);
sum += scores[i];
}
printf("\n");
}
void print_average() {
print_sum();
printf("全班平均分为:%.2f\n", sum / 10.0);
}
```
上述代码中,我们定义了 5 个函数来实现系统的各个功能。其中,`show_menu()` 函数用于输出功能选择菜单,并根据用户的选择调用相应的函数。在函数内部,我们使用了递归调用来实现循环。当用户选择为 0 时,我们就退出递归,结束循环。
在 `input_scores()` 函数中,我们使用循环来让用户从键盘输入 10 名学生的期末成绩,并将其存储在全局数组 `scores` 中。在 `print_scores()` 函数中,我们直接输出全班成绩。在 `print_sum()` 函数中,我们在输出全班成绩的同时,计算全班成绩的总和,并存储在全局变量 `sum` 中。在 `print_average()` 函数中,我们调用了 `print_sum()` 函数来输出全班成绩,并根据总和计算全班平均分。
在 `show_menu()` 函数中,我们使用 `switch` 语句来根据用户的选择调用相应的函数。当用户输入了非 0-4 的选择时,我们输出提示信息并重新调用 `show_menu()` 函数,等待用户输入正确的选择。