请问下面的程序运行时第九行的错误怎么解决

来源:百度知道 编辑:UC知道 时间:2024/06/28 12:41:56
#include <stdio.h>
#include <stdlib.h>
#define MAX 50
int N=0;
struct student {
char name[50];
int num;
};
void reorder(student str[])
{
student temp;
for(int i=0;i<N;i++)
{
for(int j=i;j<N;j++)
{
if(str[i].num>str[j].num)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
}
printf("reorder string is:\n");
for(i=0;i<N;i++)
{
printf("%s,%d\n",str[i].name,str[i].num);
}
}
void findout(student str[],int n)
{
int low,hight,avg;
int flag=0;
low=0;
hight=N-1;
while(str[low].num<str[hight].num)
{
avg=(hight-low)/2;
if(n==str[avg].num)
{
printf("Find the student's name is:%s\n",str[avg].name);
flag=1;
break;
}
else if(n>str[avg].num)low=avg;
else hight=avg;

补充:编译器问题,我的没报错,你可以将student str[]改为student *str试试,另外你的程序错误很多,输入号码有找不到学生的情况出现,再多多修改.
第九行没错
这两处错了:
1:for(i=0;i<N;i++)
{
printf("%s,%d\n",str[i].name,str[i].num);
}
改为:
for(int i=0;i<N;i++)
{
printf("%s,%d\n",str[i].name,str[i].num);
在上一个for循环声明的变量,只能在那一个for里面用
}
2:
void main()
{
student str[max]={0};
改为:
void main()
{
student str[MAX]={0};
标识符区分大小写的