编写程序,使用变长数组计算任意多个学生的最高、最低和平均成绩。

编写程序,使用变长数组计算任意多个学生的最高、最低和平均成绩。要求:

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;
}