某歌星大奖赛四进三,选手有赵青、钱花、孙瓷、陈毅四人。编写程序淘汰得分最低选手,输出剩余前三选手的姓名和得分。要求用结构体表示选手信息(姓名,得分,晋级状态)
下面这个程序如何修改成 信息都是自己从 键盘输入的???
#include<string.h>
#include<stdio.h>
struct Singer
{
char name[20];
float score;
};
int main()
{
struct Singer s[5]={{"zhao",100},{"li",90},{"sun",80},{"chen",70}};
struct Singer temp;
const int n=5;
int i,j,k;
printf("晋级的三位为:\n");
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(s[j].score>s[k].score)
k=j;
temp=s[k];s[k]=s[i];s[i]=temp;
}
for(i=0;i<3;i++)
printf("%s %f\n",s[i].name,s[i].score);
return 0;
}
strcpy 这个是什么作用??整句话呢???
追答strcpy(a,b)是把字符串b的内容复制到字符串a中,a,b都是指针,strcpy(p[i].name,n[i]);是把指针数组n[i]中存的名字,赋值给定义的结构体p中的name这个变量,就相当于赋值一样。
追问就是把后面的赋予前面的是吗?
Temp在程序中的作用?
追答#include<stdio.h>strcpy就是把后面的赋值给前面的.
temp就是先存储第一个人的分数,加入后面有人比这个人分数低,就用temp存储低分数这个人,然后用k存储低分数这个人的索引。
看不懂!
本回答被网友采纳对 要求C语言啊
追答#include<stdio.h>min=player[0];
player[0].promt='n';
这两句话啥 意思
初始化min为第一位选手,后面是根据结构体的promt属性来输出的,n是没有晋级,y是晋级
追问初始化min为第一位选手 为什么要这样初始化???
追答初始化使得min有一个值,然后再把其他选手的成绩与min的比较,如果小于min的话,就把该位选手作为min
追问1、在输入语句的那边 为什么第一个没有取地址符号而第二个有取地址符号?
2、min在循环体中是不是不断地被赋值?从[0]到[3]都会被赋予一遍?
第一个输入是字符串,char name[15],name就是输入字符串的首地址,所以不需要再取地址,二第二个输入是整型数字,需要取地址将输入保存到内存地址中
min在循环中只有当存在选手player[i]的score分数比min小时才会被重新赋值,保持min是数组中的最小分数情况
这个Temp的作用是什么?
到Else之前麻烦大神解释下 谢谢!
亲。
追答从第二位选手开始每一位与min比较,当有选手的分数小于min时,把min与该位选手进行交换,并且把min的状态改为晋级,该位选手的状态改为未晋级
追问Temp的作用
请用数据结构简单的C语言 谢谢!