Zeho


私信TA

用户名:Zeho

访问量:336

签 名:

等  级
排  名 8271
经  验 1245
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 垃圾技术大学
专  业

  自我简介:

TA的其他文章

解题思路:    结合结构体与数组 

             用swap函数替换 达成排序,这里是将小的值排到前面
             有些许参考https://blog.dotcpp.com/a/66926 答主的错误点

注意事项:    要不是参考了该答主的错误点,网页做不出,错了好多次 答案错误50

参考代码:
#include #include typedef struct
{
char name[101];//第一个易错点,因为还要多储存一个'\0';
int year;
int cj;//成绩 cj
}stu;//结构体名为stu 学生student缩写
void swap(stu* a,stu* b)//swap交换函数
{
stu t;
t=*a;*a=*b,*b=t;
}
int main()
{
int n,k;
stu a[1000];
while(~scanf("%d",&n)) //多次输入n,测试数据有多组
{
for(int i=0;i<n;i++)//存入数据
{
scanf("%s%d%d",&a[i].name,&a[i].year,&a[i].cj);
}
for(int i=0;i<n;i++)//这个循环是来找最小的,找出每次循环的最小,排到每次循环的前面,使数组由小到大排列
{
int min=i;
for(k=i;k<n;k++)
{
if(a[k].cj<a[min].cj) min=k;
if(a[k].cj==a[min].cj){if(strcmp(a[k].name,a[min].name)<0) min=k;}
if(a[k].cj==a[min].cj&&strcmp(a[k].name,a[min].name)==0){if(a[k].year<a[min].year) min=k;}
}
swap(&a[min],&a[i]);
}
for(int i=0;i<n;i++)//输出
{
printf("%s %d %d\n",a[i].name,a[i].year,a[i].cj);
}
}
}
 

0.0分

0 人评分

  评论区

  • «
  • »