这个程序一直很多错误,我不知道哪里出了问题,说是声明不能在主函数前,而且这个结构数组一直说s没有定义类型
#include<stdio.h>
struct std{
int num;
char name[20];
double chinese;
};
void Searchid(int n,struct std s[]);
void pscore(int n,struct std s[]);
int main(){
struct std s[50];
int i = 0;
int choice;
int n,j;
int num_students = 0; // 记录学生数量
printf("**************************************\n");
printf("*********** 欢迎进入 ***********\n");
printf("*******某某小学学生信息管理系统*******\n");
printf("|------------------------------------|\n");
printf("| 1.录入学生信息 |\n");
printf("| 2.显示学生信息 |\n");
printf("| 3.查询学生信息 |\n");
printf("| 4.显示成绩信息 |\n");
printf("| 5.退出信息系统 |\n");
printf("**************************************\n");
do {
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1://录入学生信息
printf("请输入学生的总人数(不能超过2000人):");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:", i + 1);
scanf("%d%s%lf", &s[i].num, s[i].name, &s[i].chinese);
}
num_students = n; // 更新学生数量
printf("学生信息已成功添加!\n");
break;
case 2://显示学生信息
if (num_students == 0) {
printf("没有学生信息可以显示。\n");
break;
}
printf("请输入您想查询多少人:\n");
scanf("%d",&j);
printf("学生信息列表:\n");
for (i = 0; i < j; i++) {
printf("学号:%d,姓名:%s,成绩:%.2f\n", s[i].num, s[i].name, s[i].chinese);
}
break;
case 3:
// 查询学生信息
printf("请输入您想查找的学生的学号:\n");
scanf("%d",&n);
Searchid(n,s);
break;
case 4:
// 显示成绩信息
printf("以下是成绩信息:\n");
pscore(n,s);
break;
case 5:
printf("感谢使用学生信息管理系统!\n");
break;
default:
printf("无效的选择,请重新输入。\n");
break;
}
} while (choice != 5);
return 0;
}
void Searchid(int n,struct std s[])
{
int term = 0;
int i;
scanf("%lld", &term);
for (i = 0; i < n; i++)
{
if (term == s[i].num)
{
printf("num:%d\n", s[i].num);
printf("name:%s\n", s[i].name);
printf("chinese:%lf\n", s[i].chinese);
term = -1;
}
}
if (term != -1)
{
printf("Not found!\n");
}
}
void pscore(int n,struct std s[])
{ int i;
for(i=0;i<n;i++){
printf("chinese score:%lf\n",s[i].chinese);
}
printf("显示结束");
}
不谈运行,你的程序在我这里测试可以编译啊
【相关推荐】