| 
 | 
 
 
发表于 2018-12-9 11:33:31
|
显示全部楼层
 
 
 
- #include<stdio.h>
 
 - typedef struct {
 
 -         int num;
 
 -         char name[20];
 
 -         int score;
 
 - }stu;
 
  
- void rank(stu a[5]);  //在此处加上一个函数的声明
 
  
- int main()
 
 - {
 
 -         stu s[5]={{1,"xiaoming",80},{2,"xiaohong",90},{3,"xiaoliang",60},{4,"xiaozhang",85},{5,"xiaoli",100}};
 
 -         int i;
 
 -         for(i=0;i<5;i++)
 
 -         {
 
 -                 printf("第%d名:",i+1);
 
 -                 printf("%d %s %d\n",s[i].num,s[i].name,s[i].score);
 
 -         }
 
 -         rank(s[5]);
 
 -         for(i=0;i<5;i++)
 
 -         printf("%d %s %d",s[i].num,s[i].name,s[i].score);
 
 -         
 
 - }
 
 - void rank(stu a[5])
 
 - {
 
 -         stu x;
 
 -         int i,j;
 
 -         for(i=0;i<4;i++)
 
 -         {
 
 -                 for(j=4;j>i;j--)
 
 -                 {
 
 -                         if(a[i].score<a[j].score)
 
 -                         {
 
 -                                 x=a[j];
 
 -                                 a[j]=a[i];
 
 -                                 a[i]=x;
 
 -                         }
 
 -                 }
 
 -         }
 
 - }
 
 
  复制代码 
 
 
问题原因: 因为你的函数定义且声明在下面,当main函数里头要调用 rank 函数是就找不到这个函数的声明或原型,所以会把这个函数当作一个未定义的函数看待。 只要你把声明放在要调用此函数一句的上方即可。 |   
 
 
 
 |