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

急求 能在5点之前给出准确答案的 再追加100分

第1个回答  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();
}
第2个回答  2009-09-04
#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]);
}
}本回答被提问者采纳
第3个回答  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);
}
第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);
}
相似回答