c语言编程谁考了第k名,[信息学奥赛一本通-T1176]谁考了第k名-题解(C语言代码)...

解题思路:

创建结构体,存储学号与成绩,然后通过排序,从大到小排序,最后按给定输入,输出结果

注意事项:

1.题目中N的值最大为100,所以要数组的大小要定义为100

2.学号可用char类型来存储,成绩用float类型存储

3.输出的时候,成绩要用%g输出

4.排序采用倒牛奶的方法,但在对字符串即学号进行排序的时候,可采用strcpy

参考代码:

#include

#include

typedef struct student{

char id[10];

float sorrc;

}Stu;

Stu a[100];

int main()

{

int N,K,i=0;

char ID[10];

float SORRC;

scanf("%d%d",&N,&K);

while(N>=1)

{

scanf("%s%f",&a[i].id,&a[i].sorrc);

i++;

N--;

}

for(int k=1;k

{

for(int m=0;m

if(a[m].sorrc

{

SORRC=a[m].sorrc;

a[m].sorrc=a[m+1].sorrc;

a[m+1].sorrc=SORRC;

strcpy(ID,a[m].id);

strcpy(a[m].id,a[m+1].id);

strcpy(a[m+1].id,ID);

}

}

printf("%s %g",a[K-1].id,a[K-1].sorrc);

return 0;

}

代码可直接运行!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值