
写C语言程序 高手请进.....跪求!!!!!!!!!!
学号 数学 英语 物理 总分 平均分
1 97 87 90 274 91.3
2 92 63 88 243 81
3 87 81 90 258 86
提示;定义一个20乘6的二维数组 每个学生的学号、3门课程成绩、总分 平均分为一行。按行输入初始数据,如学号和3门课程成绩,求得总分与平均分。最后按行输出二维数组...(不必写二十个人的数组,写给的三个人的就行了 简单点的) 展开
我感觉定义一个结构体还是比较好,把所有的属性都归为一个学生里面。下面是我写的程序,图片是运行的结果。
#include <stdio.h>
struct ln
{
int sno; //学号
float mascore;//数学分
float enscore;//英语分
float phscore;//物理分
float sum; //总分
float avg; //平均分
}student[25];
int main()
{
int n, i=0;
printf("请输入学号,数学,英语,物理。学号为0时结束输入:\n");
while(scanf("%d", &n) && n)
{
student[i].sno=n;
scanf("%f %f %f", &student[i].mascore, &student[i].enscore, &student[i].phscore);
student[i].sum=student[i].mascore+student[i].enscore+student[i].phscore;
student[i].avg=student[i].sum/3.0;
i++;
}
n=i;
for(i=0; i<n; i++)
{
printf("%d %.2f %.2f %.2f %.2f %.2f\n", student[i].sno, student[i].mascore, student[i].enscore, student[i].phscore, student[i].sum, student[i].avg);
}
}
main()
{
float a[20][6];//存放信息的二维数组
int n,i;
printf("请输入学生总数(不大于20):");
scanf("%d",&n);
printf("开始录入……\n\n");
for(i=0;i<n;i++)
{
printf("\n当前学生,学号为%d\n",i+1);
scanf("%f,%f,%f",&a[i][1],&a[i][2],&a[i][3]);
a[i][4]=a[i][1]+a[i][2]+a[i][3];//求总分
a[i][5]=a[i][4]/3;//求平均分
printf("\n********************\n");
getchar();
}
printf("\n录入结束,打印成绩:\n\n");
printf("学号\t数学\t英语\t物理\t总分\t平均分\n");
for(i=0;i<n;i++)
{
printf("%4.0f\t%4.2f\t%4.2f\t%4.2f\t%4.2f\t%4.2f\n",a[i][0],a[i][1],a[i][2],a[i][3],a[i][4],a[i][5]);
}
printf("程序结束!!!!")
}应该能满足你的需求。其实我觉得定义数组时,没必要用那么多,只需要4列就可以了。总和和平均值可以在打印的时候算。