当前位置: 代码迷 >> C语言 >> 高手指点下!
  详细解决方案

高手指点下!

热度:463   发布时间:2005-10-19 22:14:00.0
高手指点下!

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 &lt;stdio.h&gt;
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&lt;10;i++)      
  for(j=9;j&gt;i;j--)
  {
   if(stu[j].time&lt;stu[j-1].time)       //按时间排序
   {
    stu_1=stu[j];
    stu[j]=stu[j-1];
    stu[j-1]=stu_1;
   }
  }
  for(i=0;i&lt;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有什么不可以。这里就是把一个结构赋值给一个结构当然可以
----------------解决方案--------------------------------------------------------
结构体中是可以这样赋值的,这样是相当方便的
----------------解决方案--------------------------------------------------------
  相关解决方案