#include<stdio.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
printf("1.显示所有成绩\t");
printf("2.求平均分\t");
printf("3.显示最高分\t");
printf("4.显示最低分\t\n");
int a[25]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
int b;
int c;
int d;
int e;
int f;
scanf("%d",&b);
switch (b) {
case 1:
printf("显示所有成绩\n");
for(int i=0;i<25;i++){
printf("%d\n",a[i]);
}
break;
case 2:
for(c=0;c<25;c++){
d+=a[c] ;
e=d/25;}
printf("%d",e);
break;
case 3:
int max=a[25];
int size=sizeof(a)/sizeof(a[0]);
int i=0;
for(i=0;i<size;i++){
if(max<a[i]){
max=a[i];
}
}
printf("max of a:%d\n",max);
system("pause");
break;
case 4:
break;
default:
printf("查无此项,请重新进行选择");
return 0;
break;
}
}
十分感谢
循环遍历比较最大值
int max = a[25]是越界访问啊,a数组总共就25个元素,最大下标是24
另外变量d应该初始化为0
#include<stdio.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
printf("1.显示所有成绩\t");
printf("2.求平均分\t");
printf("3.显示最高分\t");
printf("4.显示最低分\t\n");
int a[25]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};
int b;
int c;
int d=0;
int e;
scanf("%d",&b);
switch (b) {
case 1:
{
printf("显示所有成绩\n");
for(int i=0;i<25;i++)
printf("%d\n",a[i]);
break;
}
case 2:
{
for(c=0;c<25;c++)
{
d+=a[c];
e=d/25;
}
printf("%d",e);
break;
}
case 3:
{
int max=a[0];
int size=sizeof(a)/sizeof(a[0]);
int i=0;
for(i=0;i<size;i++)
{
if(max<a[i])
max= a[i];
}
printf("max of a:%d\n",max);
system("pause");
}
break;
case 4:
break;
default:
printf("查无此项,请重新进行选择");
return 0;
break;
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!