高手指点下!
有10人参加百米赛跑,成绩如下:
207号: 14.5秒 077号: 15.1秒
166号: 14.2秒 231号: 14.7秒
153号: 15.1秒 276号: 13.9秒
096号: 15.7秒 122号: 13.7秒
239号: 14.9秒 302号: 14.5秒
编写一个程序求前三名运动员的号码及相应的成绩.
#include <stdio.h> struct Info { int ID; float time; }stu1={207,14.5},stu2={166,14.2},stu3={153,15,1},stu4={096,15,7},stu5={239,14,9},stu6={077,15,1},stu7={231,14.7},stu8={276,13.9},stu9={122,13,7},stu10={302,14.5}; void main() {
}
这里怎么比较啊!
----------------解决方案--------------------------------------------------------
排序,然后输入前十个就行了~~~
----------------解决方案--------------------------------------------------------
用数组来存放后,进行排序比较好!象楼主那样存放后不好做比较。
struct Info
{
int ID;
float time;
}stu[10]; //stu[0]~stu[9]放各个选手的信息
进行排序,然后输出前三个就行了
----------------解决方案--------------------------------------------------------
#include <stdio.h>
struct Info
{
char id[4]; //不能用int定义,因为整型里不会出现096这样的数字,10进制不能以0开头,而八进制不能出现9
double time;
}stu_1,stu[10]={{"207",14.5},{"166",14.2},{"153",15.1},{"096",15.7},{"239",14.9},{"077",15.1},{"231",14.7},{"276",13.9},{"122",13.7},{"302",14.5}}; //stu[10]用来存放10个同学的数据,stu_1用来做中间变量
void main()
{
int i,j;
for(i=0;i<10;i++)
for(j=9;j>i;j--)
{
if(stu[j].time<stu[j-1].time) //按时间排序
{
stu_1=stu[j];
stu[j]=stu[j-1];
stu[j-1]=stu_1;
}
}
for(i=0;i<3;i++)
printf("%s,%f\n",stu[i].id,stu[i].time); //输出结果
}
----------------解决方案--------------------------------------------------------
楼上的能运行吗?
stu_1=stu[j]; 着句对吗 ?
----------------解决方案--------------------------------------------------------
你试下就知道了,我在VC++6.0下编译通过
----------------解决方案--------------------------------------------------------
其实很好想,你定义个int a;
再定义个int b[10];
你让a=b[i];
就是把一个int赋值给一个int有什么不可以。这里就是把一个结构赋值给一个结构当然可以
----------------解决方案--------------------------------------------------------
结构体中是可以这样赋值的,这样是相当方便的
----------------解决方案--------------------------------------------------------