程序如下:
#include
#include
struct student
{
char name[20];
float score[4];
float average;
}grade[5];
void main()
{
//输入5位同学的姓名和4门功课的成绩
int i=0,j=0;
float num=0.0;
float high;
char studentname[20];
for(i=0;i<5;i++)
{
printf("输入第%d位同学的姓名和四门功课的成绩\n",i+1);
//输入姓名
printf("姓名:");
scanf("%s",grade[i].name);
getchar();//接收回车字符或者空格
//输入4门功课的成绩
for(j=0;j<4;j++)
{
printf("第%d门功课的成绩:",j+1);
scanf("%f",&grade[i].score[j]);
getchar();
}
}
//计算每个同学的平均成绩
for(i=0;i<5;i++)//5个人
{
num=0;//计算每个同学的平均成绩后,num重新初始化为0,再来计算其他同学的成绩
for(j=0;j<4;j++)//4门功课
//求总分
num+=grade[i].score[j];
//计算平均成绩
grade[i].average=num/4;
}
//求平均成绩最好的同学的信息
high=grade[0].average;
for(i=1;i<5;i++)
if(grade[i].average>high)
{
high=grade[i].average;
strcpy(studentname,grade[i].name);
}
//输出每位同学的平均成绩信息
printf("\n");
printf("每位同学的姓名和平均成绩如下:\n");
for(i=0;i<5;i++)
{
printf("姓名:%s,平均成绩:%f\n",grade[i].name,grade[i].average);
}
//输出最好的成绩
printf("\n");
printf("平均成绩最好的同学姓名:%s,平均成绩:%f\n",studentname,high);
getchar();//待输入回车后退出
}
运行情况如下:
string[5][]={(学生1,4成绩),(学生2,4成绩)};
之后要用 itoa对成绩进行处理就行了
#include
#define N 5
struct student
{
char name[20];
float socre[4];
}stu[N];
void main()
{
float i=0,j,max=0,num=0,flag=0;
for(;i<5;i++)
{
printf("请输入第%d个同学的姓名:",i+1);
fflush(stdin);
gets(stu[i].name);
printf("输入第%d个学生的四科成绩:",+i+1);
for(j=0;j<4;j++)
scanf("%f",&stu[i].socre[j]);
}
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
num += stu[i].socre[j];
}
printf("%s同学的平均成绩是%f:",stu[i].name,num/4);
if(num/4 > max)
flag = i;
}
printf("平均分最高的是:%s\n",stu[flag].name);
printf("四科成绩分别是:");
for(i=0;i<4;i++)
printf("%.2f\t",stu[flag].socre[i]);
printf("\n");
}
我这编译器可能出了一点问题,但大体的思路应该是这样的,嗯,有时间的话,你自己调试一下吧
#include
main()
{
float sum[10],ave[10],a[10][5] ;
int i,j;
for(i=0;i<10;i++)
for(j=0;j<5;j++)
scanf("%f",&a[i][j]);
for(i=0;i<10;i++)
{ sum[i]=0;
for(j=0;j<5;j++)
sum[i]=sum[i]+a[i][j];
ave[i]=sum[i]/5;
}
for(i=0;i<10;i++)
printf("%f %f\n",sum[i],ave[i]);
}