编写程序,使用变长数组计算任意多个学生的最高、最低和平均成绩。要求:
1)通过直到型循环do. .. while i 进行学生成绩的循环输入
2)用户只输入学生成绩而不输入学生人数
3)平均成绩保留1位小数输出。
编写程序,使用变长数组计算任意多个学生的最高、最低和平均成绩。要求:
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;
}