今天我为了把前段时间学的知识(选择语句,分支语句,循环语句,函数,数组等)复习了一遍,写了一个很简易的查分系统。用一个数组存放10个学生的成绩,然后写了几个函数分别来实现打印成绩、查看最高分、查看最低分和平均分的函数(主要是想练习使用函数)。通过switch case语句来调用函数。这个程序看似很简单,但是在写代码的过程中也会遇到问题。正如大佬们所说:“好的程序是调试出来的。”在刚刚写完程序后,我就运行了,虽然没有语法错误,但是从运行结果上很明显地看出有逻辑错误。我打开监视器,输入变量值一步一步地跟踪,最终找到了问题所在。之后我又重新运行程序,并把打印的结果尽可能地修改地更美观了点。此前我也做过在一个数组里查询最大最小值,但今天我调整了算法, 尽可能地使代码更简洁。以下是我的代码,若还有可以优化的地方,希望读者们能指出来。
#include <stdio.h>
void menu()
{
printf(" ******************************\n") ;
printf(" **********1.显示成绩**********\n") ;
printf(" **********2. 最高分 *********\n") ;
printf(" **********3. 最低分 *********\n") ;
printf(" **********4. 平均分 *********\n") ;
printf(" **********5. 退出系统 ********\n") ;
printf(" ******************************\n") ;
}
void Show_score(int arr_s[])
{
int i = 0 ;
printf("10个学生成绩分别是: ") ;
for(i=0 ; i<10 ; i++)
{
printf("%d " , arr_s[i]) ;
}
printf("\n") ;
printf("\n请键入你需要操作的选项: ") ;
}
void Max_score(int arr_s[])
{
int i = 0 ;
int max = arr_s[0] ;
for(i=0 ; i<10 ; i++)
{
max = max > arr_s[i] ? max : arr_s[i] ;
}
printf("最高分为%d\n" , max) ;
printf("\n请键入你需要操作的选项: ") ;
}
void Min_score(int arr_s[])
{
int i = 0 ;
int min = arr_s[0] ;
for(i=0 ; i<10 ; i++)
{
min = min < arr_s[i] ? min : arr_s[i] ;
}
printf("最低分为%d\n" , min) ;
printf("\n请键入你需要操作的选项: ") ;
}
Ave_score(int arr_s[])
{
int i = 0 ;
float sum = 0 ;
for(i=0 ; i<10 ; i++)
{
sum += arr_s[i] ;
}
printf("平均分为%f\n" , sum/10.0) ;
printf("\n请键入你需要操作的选项: ") ;
}
int main()
{
int arr_score[10]= {98 , 95 , 96 , 85 , 73 , 69 , 82 , 74 , 78 , 95} ;//存放学生的成绩
int input = 0 ;
menu();
printf("\n欢迎使用查分系统!请根据提示选择您所需要的操作\n") ;
printf("\n请键入你需要操作的选项: ") ;
while(1)
{
scanf("%d" , &input) ;
switch (input)
{
case 1 :
Show_score(arr_score) ;
break ;
case 2 :
Max_score(arr_score) ;
break ;
case 3 :
Min_score(arr_score) ;
break ;
case 4 :
Ave_score(arr_score) ;
break ;
case 5 :
printf("\n即将退出本系统,感谢使用!\n") ;
return 0 ;
default :
printf("输入非法,请重新输入:") ;
}
}
return 0 ;
}
运行结果:
等我学完C语言后,我会将这段代码再扩充来实现更多的功能!Romeo 加油~