编写程序,使用变长数组计算任意多个学生的最高、最低和平均成绩。要求:
1)通过直到型循环do. .. while i 进行学生成绩的循环输入
2)用户只输入学生成绩而不输入学生人数
3)平均成绩保留1位小数输出。
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
int main()
{
int* score = new int[4];
int sc,max,min,i;
float avg = 0;;
int size = 4; //数组初始大小
int nmb = 0; //人数
do
{
printf("请输入学生成绩:");
scanf("%d",&sc);
if (sc < 0) //输入负数退出
{
break;
}
if (nmb == 0)
{
max = sc;
min = sc;
}else
{
if(sc > max)
max = sc;
if(sc < min)
min = sc;
}
//数组中插入数据
if (nmb < size)
{
score[nmb] = sc;
nmb++;
}else
{
int *pnew = new int[size * 2]; //size扩充2倍
size *= 2;
for(i = 0;i < nmb; i++)
pnew[i] = score[i];
pnew[nmb] = sc;
nmb++;
delete[] score;
score = pnew;
pnew = 0;
}
//求平均值
for (i = 0; i < nmb; i++)
avg += score[i];
avg = avg / nmb;
printf("最大值:%d,最小值:%d,平均值:%.1f\n",max,min,avg);
} while (true);
delete[] score;
score = 0;
return 0;
}
#include<stdio.h>
int main ()
{char c;
int x,i,s,max,min;
char km[5][7]={"英语","高数","物理","思政","计算机"};
do
{for(i=0;i<5;i++)
{printf("%s:",km[i]);
scanf("%d",&x);
if(i==0)s=max=min=x;
else
{s+=x;
if(x>max)max=x;
else if(x<min)min=x;
}
}
printf("最高分:%d,最低分:%d,平均分:%f\n",max,min,(float)s/5);
printf("继续吗(Y/N)?");
scanf("%*c%c",&c);
}while(c=='Y'||c=='y');
printf("\n结束程序,再见!");
return 0;
}