我在网上查了说是缺少头文件或者没被括号包住的原因,可我这个貌似都没出现上述问题啊,求大佬帮帮我这个刚学计算机的学生
```#include<stdio.h> //头文件名
#include<conio.h> //没有此头文件名无法调用getch和getchar函数
#include<stdlib.h> // system函数所需的头文件名,没有则无法调用
#include<string.h> // strcmp函数所需的头文件名,没有则无法调用
#define N 9999 //宏定义,便于更改录入学生的人数
struct Student //利用结构体编程更方便
{
char num[20]; //给学生添加个学号方便查询
char name[20]; //姓名
float score; //分数
}stu[N];
int main()
{
int c,k;
int i,j,p=0;
for(i=0;i<N;i++)
{
printf("请输入第%2d个学生的学号、姓名、成绩:\n",i+1);
scanf("%s%s%f",&stu[i].num,stu[i].name,&stu[i].score); //用结构体录入数据
if(p<=i) //记录循环次数
p++;
printf("再按回车即可继续输入,按Esc停止输入\n");
if ((c=getch())==27) //利用了 ASCLL码,当检测到键盘按下“Esc”键时终止循环
break;
}
printf("\n\n学号\t姓名\t成绩\n");
for(i=0;i<p;i++)
printf("%s\t%s\t%-10.1f\n",stu[i].num,stu[i].name,stu[i].score); //输出成绩
printf("点击空格键即可查看按成绩高低的排序");
if ((c=getch())==32) //同道理
{
for(j=0;j<p;j++) //双循环语句的用途是:将结构体内的第N个成绩
{
for(k=j+1;k<p;k++)
{
if(stu[j].score<stu[k].score) //比较大小,原理是将学生分数依次进行比较,然后将小的排在数组的末尾,依次类推,最后得到从大到小的数组排序
{
stu[p]=stu[j]; //若要查看从小到大的排序,仅需将小于号改为大于号即可
stu[j]=stu[k];
stu[k]=stu[p];
}
}
}
printf("\n按成绩优异排序后的结果:");
printf("\n\n学号\t姓名\t成绩\n");
for(i=0;i<p;i++)
printf("%s\t%s\t%-10.1f\n",stu[i].num,stu[i].name,stu[i].score); //输出成绩
}
printf("\n若要查询学生成绩请按Esc键,亲~");
if((c=getch())==27) //利用了 ASCLL码,当检测到键盘按下“Esc”键时进入查询页面
{
char a[20]; //定义一个数组,用于存储你要查询的学号
i=0;
system("cls"); //利用该函数调用DOS命令清屏
printf("请输入您想查询成绩的那位学生的学号:");
scanf("%s",a); //将你要查询的学号放入数组a【20】中
while(i<p) //利用循环找到与a【20】相同的结构体数组
{
if(strcmp(stu[i].num,a)==0) //利用strcmp函数进行数组之间的比较
{
printf("\n学号:%s\t姓名:%s\t成绩:%-10.1f\n",stu[i].num,stu[i].name,stu[i].score);
break;
}
}
}
}