c语言 输入n个学生,以及每个学生的数学,英语成绩,然后统计每门课程的总成绩,平均分,最高分和最低?

5点之前 给出准确答案的 再追加100分 急求 二维数组

#include <stdio.h>
#include <stdlib.h>
void main()
{
int i = 0;
int n = 0;
float *a[2] = {NULL};
float sum[2] = {0};
float avg[2] = {0};
float max[2] = {0};
float min[2] = {0};

printf("请输入有多少个学生:");
scanf("%d", &n);
a[0] = (float *)malloc(sizeof(float)*n);
a[1] = (float *)malloc(sizeof(float)*n);
for (i = 0; i < n; ++i)
{
printf("请输入第%d个学生的数学成绩:", i+1);
scanf("%f", &a[0][i]);
sum[0] += a[0][i];
if (a[0][i]>max[0])
{
max[0] = a[0][i];
}
printf("请输入第%d个学生的英语成绩:", i+1);
scanf("%f", &a[1][i]);
sum[1] += a[1][i];
if (a[1][i]>max[1])
{
max[1] = a[1][i];
}
}
min[0] = a[0][0];
min[1] = a[1][0];
for (i = 1; i < n; ++i)
{
if (a[0][i]<min[0])
{
min[0] = a[0][i];
}
if (a[1][i]<min[1])
{
min[1] = a[1][i];
}
}
avg[0] = sum[0]/n;
avg[1] = sum[1]/n;
printf("总成绩 平均分 最高分 最低分\n");
for (i = 0; i < 2; ++i)
{
printf("%-8.2f%-8.2f%-8.2f%-8.2f\n", sum[i], avg[i], max[i], min[i]);
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-04
#include <stdlib.h>
#include <stdio.h>

main()
{
float stu[200][2];
float sum[2],high[2],low[2];

int n,i,j;

printf("Please input the number of students: ");
scanf("%d",&n);

for(i=0;i<2;i++)
{
sum[i]=0;
high[i]=0;
low[i]=1000;
}

for(i=0;i<n;i++)
{
printf("The %dth student\n",i+1);
for(j=0;j<2;j++)
{
if(j==0)
printf("The math score: \t");
else
printf("The English score: \t");

scanf("%f",&stu[i][j]);
sum[j]+=stu[i][j];

if(stu[i][j]>high[j])
high[j]=stu[i][j];
if(stu[i][j]<low[j])
low[j]=stu[i][j];
}
printf("\n");
}

for(i=0;i<2;i++)
{
if(i==0)
{
printf("The total score of math is: %f\n",sum[i]);
printf("The highest score of math is: %f\n",high[i]);
printf("The lowest score of math is: %f\n",low[i]);
printf("The average score of math is: %f\n",sum[i]/n);
}
else
{
printf("The total score of English is: %f\n",sum[i]);
printf("The highest score of English is: %f\n",high[i]);
printf("The lowest score of English is: %f\n",low[i]);
printf("The average score of English is: %f\n",sum[i]/n);
}
printf("\n");
}
system("pause");//TC用getch();
}
第2个回答  2009-09-04
#include<stdio.h>
void main()
{
int n,math=0,eng=0,i=1;
int eng_total=0,math_total=0;
int eng_min=0,math_min=100;
int eng_max=0,math_max=0;
int eng_ave=0,math_ave=0;
printf("请输入学生人数:");
scanf("%d",&n);
while(i<=n)
{
printf("请输入第%d个学生的数学英语成绩(用逗号隔开):\n",i++);
scanf("%d,%d",&math,&eng);
math_total +=math;
eng_total +=eng;
if(math_min>math)
math_min = math;
if(math_max<math)
math_max = math;
if(eng_min > eng)
eng_min = eng;
if(eng_max < eng)
eng_max = eng ;
}
math_ave = math_total/n;
eng_ave = eng_total/n;
printf("\t平均分\t最高分\t最低分\n");
printf("Math\t%d\t%d\t%d\n",math_ave,math_max,math_min);
printf("English\t%d\t%d\t%d\n",eng_ave,eng_max,eng_min);
}
第3个回答  2009-09-04
#include<stdio.h>
#include<malloc.h>
#include<conio.h>

void main()
{
int (*s)[2];
int totalMath=0,totalEnglish=0;
int maxM=0,minM=0,maxE=0,minE=0;
float aveMath=0.0,aveEnglish=0.0;
int i,n;

printf("please input n: ");
scanf("%d",&n);

s = (int (*)[2])malloc(n*2*sizeof(int));

for(i=0;i<n;i++)
{
printf("请输入第%d个学生的数学成绩:",i+1);
scanf("%d",&s[i][0]);
fflush(stdin);

if(i==0) maxM=minM=s[i][0];
totalMath+=s[i][0];
if(s[i][0]>maxM) maxM=s[i][0];
if(s[i][0]<minM) minM=s[i][0];

printf("请输入第%d个学生的英语成绩:",i+1);
scanf("%d",&s[i][1]);
fflush(stdin);

if(i==0) maxE=minE=s[i][0];
totalEnglish+=s[i][1];
if(s[i][1]>maxE) maxE=s[i][1];
if(s[i][1]<minE) minE=s[i][1];
}

aveEnglish=(float)totalEnglish/n; /*计算平均成绩*/
aveMath=(float)totalMath/n;

printf(" 总成绩\t平均分\t最高分\t最低分\n");
printf("数学 %6d\t%.2f\t%6d\t%6d\n",totalMath,aveMath,maxM,minM);
printf("英语 %6d\t%.2f\t%6d\t%6d\n",totalEnglish,aveEnglish,maxE,minE);

free(s);
getch();
}
第4个回答  2009-09-04
#include<stdio.h>
int max=0;
void fun(int x[][3])
{
int i,j,max_math=0,min_math=x[0][1],max_en=0,min_en=x[0][2],sum_math=0,sum_en=0;
for(i=0;i<max;i++)
{
if(max_math<=x[i][1])
{
max_math=x[i][1];
}
if(min_math>=x[i][1])
{
min_math=x[i][1];
}
if(max_en<=x[i][2])
{
max_en=x[i][2];
}
if(min_en>=x[i][2])
{
min_en=x[i][2];
}
sum_math+=x[i][1];
sum_en+=x[i][2];
}
printf("No.\tMath\tEnglish\n");
for(i=0;i<max;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",x[i][j]);
}
printf("\n");
}
printf("Total:\t%d\t%d\n",sum_math,sum_en);
printf("Ave:\t%.2f\t%.2f\n",(float)sum_math/max,(float)sum_en/max);
}
void main()
{
int x[50][3],temp;
while(true)
{
printf("the Student No. is:");
scanf("%d",&temp);
if(temp<0)
break;
x[max][0]=temp;
printf("the Math score is:");
scanf("%d",&x[max][1]);
printf("the English score is:");
scanf("%d",&x[max][2]);
max++;
}
fun(x);
}
第5个回答  2009-09-04
#include <stdio.h>

int main()
{
int n;
float **stu,mathtotal=0,engtotal=0,mathaver=0,engaver=0,mathmax,mathmin,engmax,engmin;
printf("输入学生人数:");
scanf("%d",&n);
stu=new float*[n];
for(int i=0;i<n;i++)
stu[i]=new float[2];
for(i=0;i<n;i++)
{
printf("输入第%d学生数学成绩:",i+1);
scanf("%f",&stu[i][0]);
printf("输入第%d学生英语成绩:",i+1);
scanf("%f",&stu[i][1]);
}
mathmax=stu[0][0];
mathmin=stu[0][0];
engmax=stu[0][1];
engmin=stu[0][1];
for(i=0;i<n;i++)
{
mathtotal+=stu[i][0];
engtotal+=stu[i][1];
if(stu[i][0]>mathmax)mathmax=stu[i][0];
if(stu[i][0]<mathmin)mathmin=stu[i][0];
if(stu[i][1]>engmax)engmax=stu[i][1];
if(stu[i][1]<engmin)engmin=stu[i][1];
}
mathaver=mathtotal/n;
engaver=engtotal/n;
for(i=0;i<n;i++)
printf("学生%d总成绩:%f\n",i+1,stu[i][0]+stu[i][1]);
printf("数学平均成绩:%f\n",mathaver);
printf("英语平均成绩:%f\n",engaver);
printf("数学最高:%f\n",mathmax);
printf("英语最高:%f\n",engmax);
printf("数学最低:%f\n",mathmin);
printf("英语最低:%f\n",engmin);
return 0;
}
相似回答