C语言编程。定义一结构体数组

定义一结构体数组,从终端输入50个学生的基本情况,包括学号(XH),姓名(XM),籍贯(JG)和成绩(CJ)。要求按每个学生的成绩由高到低排序输出。... 定义一结构体数组,从终端输入50个学生的基本情况,包括学号(XH),姓名(XM),籍贯(JG)和成绩(CJ)。要求按每个学生的成绩由高到低排序输出。 展开
 我来答
youyounyh
推荐于2017-10-11 · TA获得超过374个赞
知道小有建树答主
回答量:162
采纳率:100%
帮助的人:204万
展开全部
DEV C++下运行成功

#include<stdio.h>
#include<stdlib.h>
typedef struct
{
char XH[100];
char XM[100];
char JG[100];
float CJ;
}student;

void paixu(student stu[],int n)
{
int t,j=0;
while(j<n)
{
for(int i=j+1;i<n;i++)
{
if(stu[i].CJ>stu[j].CJ)
{
t=stu[i].CJ;
stu[i].CJ=stu[j].CJ;
stu[j].CJ=t;
}
}
printf("\n%s\t%s\t%s\t%f",stu[j].XH,stu[j].XM,stu[j].JG,stu[j].CJ);
j++;
}
}

int main()
{
int n,i;
printf("请输入学生总人数N:");
scanf("%d",&n);
student stu[n];
for(i=0;i<n;i++)
{
getchar();
printf("\n请输入学生%d的学号:",i+1);
gets(stu[i].XH);
printf("请输入学生%d的姓名:",i+1);
gets(stu[i].XM);
printf("请输入学生%d的籍贯:",i+1);
gets(stu[i].JG);
printf("请输入学生%d的成绩:",i+1);
scanf("%f",&stu[i].CJ);
}
printf("\n按成绩由高到低排列有:\n学号\t姓名\t籍贯\t成绩\n");
paixu(stu,n);
printf("\n\n");
system("pause");
}
二美知1G
2008-12-24 · TA获得超过273个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:94.2万
展开全部
#include <stdio.h>
#include <string>

#define MAX 3

struct Student
{
int number;
char name[20];
char jg[20];
float score;
}student[MAX+1];//student[0]留作暂存器

int main()
{
int i;
int j;
int k;
int temp;
for (i = 1; i < MAX+1; ++i)
{
printf("input the information of a student:\n");
scanf("%d %s %s %f", &student[i].number,student[i].name,student[i].jg,&student[i].score);
}

for (i = 1; i < MAX; ++i)//排序
{
k = i;
for (j = i+1; j < MAX+1; j++)
{
if (student[j].score > student[k].score)
{
k = j;
}

}

if (k != i)
{
student[0].number = student[k].number;
strcpy(student[0].name,student[k].name);
strcpy(student[0].jg,student[k].jg);
student[0].score = student[k].score;

student[k].number = student[i].number;
strcpy(student[k].name,student[i].name);
strcpy(student[k].jg,student[i].jg);
student[k].score = student[i].score;

student[i].number = student[0].number;
strcpy(student[i].name,student[0].name);
strcpy(student[i].jg,student[0].jg);
student[i].score = student[0].score;
}

}

for (i = 1; i < MAX+1; ++i)
{
printf("%d,%s,%s,%f\n", student[i].number,student[i].name,student[i].jg,student[i].score);

}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式