设计一个程序,从键盘输入小于30个学生成绩,当输入为 999 时,输入完毕开始计算。功能有:按“1“计算其平均数,并输出所有小于平均数的数;按“2“从键盘上输入一个成绩,判定该成绩是否在数组中,若在则输出所在序号;按“3“统计并显示优、良、中、及格及不及格人数;按“4“显示本班级的最高分及最低分
#include<stdio.h>
int main()
{printf(" 请根据你需用的功能选择序号\n");
printf("1.计算平均数,并输出所有小于平均数的数\n") ;
printf("2.输入成绩,并判断成绩是否在数组中,若在则输出所在序号\n") ;
printf("3.统计并显示优、良、中、及格、及不及格的人数\n");
printf("4.显示本班级的最高分及最低分\n");
printf("请输入小于30个学生成绩,当输入为999时,输入完毕\n");
void action1(int);
void action2(int) ;
void action3(int);
void action4(int);
int p[30];
int i;
int a,b,c,d;
char m;
for(i=0;i<30;i++)
{scanf("%d",&p[i]);
if(p[i]==999)
printf("输入完毕\n");}
printf("请输入你想查询的序号\n");
m=getchar();
switch(m)
{
case '1':action1(a);break;
case '2':action2(b);break;
case '3':action3(c);break;
case '4':action4(d);break;
default:printf("请重新输入数字");
return 0;}
}
void actional()
{int p[30];
int i;
float aver;
int sum=0;
for(i=0;i<30;i++)
if(p[i]!=999)
sum=sum+p[i];
else break;
aver=sum/i;
printf("%5.2f\n",aver);
for(i=0;i<30;i++)
if(p[i]<aver)
printf("%d\n",&p[i]);
}
void actiona2()
{int p[30];
int m,n,i;
for(i=0;i<30;i++)
if(p[i]==999) break;
scanf("
#include <stdio.h>
void menu()
{
printf(" 请根据你需用的功能选择序号\n");
printf("1.计算平均数,并输出所有小于平均数的数\n");
printf("2.输入成绩,并判断成绩是否在数组中,若在则输出所在序号\n");
printf("3.统计并显示优、良、中、及格、及不及格的人数\n");
printf("4.显示本班级的最高分及最低分\n");
printf("5.退出\n");
}
void action1(int *a, int len)
{
float ave = 0;
int i;
for (i = 0; i < len; i++)
ave += a[i];
ave /= len;
printf("平均数为%.2f,小于平均数的数为:\n", ave);
for (i = 0; i < len; i++)
{
if (a[i] < ave)
printf("%d ", a[i]);
}
printf("\n");
}
void action2(int *a, int len)
{
int t, i, ishav = 0;
scanf("%d", &t);
for (i = 0; i < len; i++)
{
if (a[i] == t)
{
printf("%d ", i);
ishav = 1;
}
}
if (ishav == 0)
printf("不存在该成绩\n");
printf("\n");
}
void action3(int *a, int len)
{
int i;
int y, l, z, j, bj;
y = l = z = j = bj = 0;
for (i = 0; i < len; i++)
{
if (a[i] >= 90)
y++;
else if (a[i] < 90 && a[i] >= 80)
l++;
else if (a[i] < 80 && a[i] >= 70)
z++;
else if (a[i] < 70 && a[i] >= 60)
j++;
else if (a[i] < 60)
bj++;
}
printf("优:%d 良:%d 中:%d 及格:%d 不及格:%d\n", y, l, z, j, bj);
printf("\n");
}
void action4(int *a, int len)
{
int i, max, min;
max = min = *a;
for (i = 1; i < len; i++)
{
if (a[i] > max)
max = a[i];
if (a[i] < min)
min = a[i];
}
printf("最高分:%d 最低分:%d\n", max, min);
printf("\n");
}
int main()
{
printf("请输入小于30个学生成绩,当输入为999时,输入完毕\n");
int p[30], count = 0, t;
for (count = 0; count < 30; count++)
{
scanf("%d", &t);
if (t == 999)
{
printf("输入完毕\n");
break;
}
p[count] = t;
}
do
{
menu();
scanf("%d", &t);
switch (t)
{
case 1:
action1(p, count);
break;
case 2:
action2(p, count);
break;
case 3:
action3(p, count);
break;
case 4:
action4(p, count);
break;
case 5:
break;
default:
printf("请重新输入数字\n");
}
} while (t != 5);
return 0;
}
参考代码:
#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;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!