有 10 名学生,每个学生包括学号、姓名、成绩.要求按成绩从高到低的顺序输出学生的学号和姓名,并输出学生的平均成绩.
#include(stdio.h) main() {struct student {long number; char name[20]; float score[4]; }person[10]; int i; printf("请输入10名学生的学号、姓名、及三门成绩:"); for(i=0;i<10;i++) scanf("%d,%s,%d,%d,%d",&person[i]->number,person[i]->name,&person->score[0],&person->score[1],&person->score[2]); for(i=0,i<10;i++) person->score[3]=(person->score[0]+person->score[1]+person->score[2])/3; printf("10名同学的情况如下:\n"); for(i=0;i<10;i++) printf("学号:%d 姓名:%s 成绩:%d %d %d 平均成绩:%d\n",person[i]->number,person[i]->name[20],person->score[0],person->score[1],person->score[2],person->score[3]); }
/*有10个学生,每个学生的数据包括学号、姓名、成绩,从键盘输入10个学生数据*/
#include <stdio.h>
#define N 10
struct Student{
char num[10];
char name[10];
float score;
}student[N];
int main()
{
int i,j,k;
float sum = 0.0,max = 0.0;
printf("请输入学生信息:\n");
for(i = 0;i < N;i++)
{
printf("学生学号:");
scanf("%s",student[i].num);
printf("学生姓名:");
scanf("%s",student[i].name);
printf("学生成绩:");
scanf("%f",&student[i].score);
printf("\n");
}
for(i = 0;i < N;i++)
{
sum += student[i].score;
}
for (i=0; i<N-1; i++){ /* 外循环为排序趟数,len个数进行len-1趟 */
for (j=0; j<N-1-i; j++) { /* 内循环为每趟比较的次数,第i趟比较len-i次 */
if (student[j].score > student[j+1].score) { /* 相邻元素比较,若逆序则交换(升序为左大于右,降序反之) */
float temp = student[j].score;
student[j].score= student[j+1].score;
student[j+1].score = temp;
char name[] = student[j].name;
student[j].name= student[j+1].name;
student[j+1].name = name;
char num[] = student[j].num;
student[j].num= student[j+1].num;
student[j+1].num = num;
}
}
}
printf("学号\t姓名\t分数\n")
for(i = 0;i < N;i++)
{
printf("%s\t%s\t%.2f\n",student[i].name,student[i].num,student[i].score);
}
printf("平均成绩是:%f\n",sum / 3);
}
代码如上,万望采纳
#include <stdio.h>
struct student
{
char num[10];
char name[10];
double score;
};
int main()
{
struct student stu[]={{"001","zhang01",99},
{"002","zhang02",88},
{"003","zhang03",60},
{"004","zhang04",70},
{"005","zhang05",80},
{"006","zhang06",66},
{"007","zhang07",77},
{"008","zhang08",85},
{"009","zhang09",83},
{"010","zhang10",60},
};
double sum=0;
for(int i=0;i<10-1;i++)
{
for(int j=0;j<10-1-i;j++)
{
if(stu[j].score<=stu[j+1].score)
{
struct student tmp;
tmp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=tmp;
}
}
}
for(int i=0;i<10;i++)
sum+=stu[i].score;
printf("成绩排名如下:(平均分:%.2lf)\n",sum/10);
for(int i=0;i<10;i++)
printf("%s\t %s\t %lf\n",stu[i].num,stu[i].name,stu[i].score);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632