设计一个程序,从键盘输入小于30个学生成绩当输入为999时,输入完毕开始计算.功能有:按“1”计算其平均数,并输出所小于平均数的数;按“2”从键盘上输入一个成绩,判定该成绩是否在数组中,若在则输出所在序号;按“3”统计并显示优、良、中、及格及不及格人数;按“4”显示本班级的最高分及最低分
你代码逻辑不对 应该用while 循环输入,在循环中判断if(x==999)结束循环
参考下
#include<stdio.h>
void fun1(int a[], int n)
{
int i;
float avg, sum=0;
for(i=0;i<n;i++)
sum += a[i];
avg = sum / n;
printf("平均数:%.2f\n",avg);
printf("小于平均数的数:");
for(i=0;i<n;i++)
if (a[i]<avg)
printf(" %d", a[i]);
}
void fun2(int a[], int n)
{
int i,x;
printf("输入一个成绩:");
scanf("%d", &x);
for(i=0;i<n;i++)
if (a[i]==x)
break;
if (i<n)
printf("%d所在序号:%d\n", x, i);
else
printf("数组中没有%d\n", x);
}
void fun3(int a[], int n)
{
int i;
int sa = 0,sb = 0,sc = 0,sd = 0,se = 0;
for(i=0;i<n;i++){
if (a[i]>=90) {
sa++;
} else if (a[i]>=80) {
sb++;
} else if (a[i]>=70) {
sc++;
} else if (a[i]>=60) {
sd++;
} else{
se++;
}
}
printf("优秀人数:%d, 良好人数:%d, 中等人数:%d, 及格人数:%d, 不及格人数:%d",sa,sb,sc,sd,se);
}
void fun4(int a[], int n)
{
int i,max=0,min=0;
for(i = 1; i < n; i++)
{
if (a[i]>a[max])
max = i;
if (a[i]<a[min])
min = i;
}
printf("最高分:%d, 最低分:%d",a[max],a[min]);
}
int main()
{
int x,m,i,count=0;
int a[30];
while (count<30)
{
scanf("%d", &x);
if (x==999)
break;
a[count++] = x;
}
printf("按“1”计算其平均数,并输出所小于平均数的数;\n");
printf("按“2”从键盘上输入一个成绩,判定该成绩是否在数组中,若在则输出所在序号;\n");
printf("按“3”统计并显示优、良、中、及格及不及格人数;\n");
printf("按“4”显示本班级的最高分及最低分:\n");
scanf("%d", &m);
if (m==1)
{
fun1(a,count);
}
else if (m==2)
{
fun2(a,count);
}
else if (m==3)
{
fun3(a,count);
}
else if (m==4)
{
fun4(a,count);
}
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!