#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 函数是就找不到这个函数的声明或原型,所以会把这个函数当作一个未定义的函数看待。 只要你把声明放在要调用此函数一句的上方即可。 |