#include<string.h>
extern int count=0;
void input();
void search();
void alter();
void remove();
void grade();
int menu_select();
struct student;
extern struct student
{
char name[20];
char num[20];
int math,chinese;
int sum;
}
int main()
{
struct student stu[100];
for(;;)
{
switch(menu_select())
{
case 1:
input();
break;
case 2:
search();
break;
case 3:
alter();
break;
case 4:
remove();
break;
case 5:
grade();
break;
case 6:
printf("Goodbye\n");
exit(0);
}
}
return 0;
}
int menu_select()
{
char s;
int cn;
printf("1. 输入学生成绩信息\n");
printf("2. 查询学生成绩信息\n");
printf("3. 删除学生成绩信息\n");
printf("4. 修改学生成绩信息\n");
printf("5. 统计学生成绩信息\n");
printf("6. 退出系统\n");
printf("Please input 1-6:");
do
{
s=getchar();
cn=(int)s-48;
}while(cn<1||cn>6);
return cn;
}
void input()
{
int len;
do
{
printf("请输入学生的学号(12位)\n");
scanf("%s",&stu[count].num);
len=strlen(stu[count].num);
}while(len<13);
printf("请输入学生的姓名\n");
scanf("%s",&stu[count].name);
printf("请依次输入学生的数学、语文成绩\n");
scanf("%d,%d",&stu[count].math,&stu[count].chinese);
stu[count].sum=stu[count].math+stu[count].chinese;
count++;
}
void search()
{
char s[20];
int j;
if(count==0)
{
printf("当前并未存储学生信息,无法查询");
return;
}
else
{
printf("请输入你想查询学生的学号\n");
scanf("%s",&s);
fflush(stdin);
for(j=0;j<count;j++)
{
if(strcmp(stu[j].num,s)==0)
{
printf("姓名:%s\n",stu[j].name);
printf("学号:%s\n",stu[j].num);
printf("数学成绩:%d\n",stu[j].math);
printf("语文成绩:%d\n",stu[j].chinese);
}
}
}
}
void alter();
{
char s[20];
int j,course;
if(count==0)
{
printf("当前并未存储学生信息,无法修改!");
return;
}
else
{
printf("请输入你想要修改的学生学号:\n");
scanf("%s",&s);
fflush(stdin);
for(j=0;j<count;j++)
{
if(strcmp(stu[j].num,s)==0)
{
printf("请问你要修改哪个课程的成绩:1.数学 2.语文\n");
scanf("%d",&course);
printf("请输入修改后的成绩:\n");
soitch(course)
{
case 1:scanf("%d",&stu[j].math);break;
case 2:scanf("%d",&stu[j].chinese;break;
default:printf("无效的选择,请重新输入!\n");break;
}
}
}
}
}
void remove()
{
int choice;
if(count==0)
{
printf("当前并未存储学生信息,无法删除!\n");
return;
}
else
{
int j,index=0,k=count;
char s[20];
printf("请输入你想要删除的学生学号:\n");
scanf("%s",&s);
fflush(stdin);
for(j=0;j<count;j++)
{
if(strcmp(stu[j].num,s)==0)
{
for(j=index;j<count;j++)
{
stu[j]=stu[j+1];
count--;
if(count<k)
printf("你已删除成功!\n");
}
index++;
}
}
}
}
void grade()
{
int choice,i,j,k,amount=0,max=0,min=0,index,x=0;
float pass=0.0;
printf("请选择要进行统计的课程:1.数学 2.语文\n");
printf("若想查询总分排名,请输入3\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
{
min=stu[0].math;
for(i=0;i<count;i++)
{
amount+=stu[i].math;
if(stu[i].math>max)
max=stu[i].math;
if(stu[i].math<min)
min=stu[i].math;
if(stu[i].math>=60)
x++;
}
float average=(float)amount/count;
pass=(float)x/count;
printf("数学平均分为:%d\n",average);
printf("数学最高分为:%d\n",max);
printf("数学最低分为:%d\n",min);
printf("数学的及格率为:%d\n",pass);
}
break;
case 2:
{
min=stu[0].chinese;
for(i=0;i<count;i++)
{
amount+=stu[i].chinese;
if(stu[i].math>max)
max=stu[i].chinese;
if(stu[i].chinese<min)
min=stu[i].chinese;
if(stu[i].chinese>=60)
x++;
}
float average=(float)amount/count;
pass=(float)x/count;
printf("语文平均分为:%d\n",average);
printf("语文最高分为:%d\n",max);
printf("语文最低分为:%d\n",min);
printf("语文的及格率为:%d\n,pass);
}
break;
case 3:
{
for(i=0;i<count;i++)
{
i=index;
for(k=i+1;k<count;k++)
{
if(stu[k].sum>stu[index].sum)
{
stu[k].sum=j;
stu[k].sum=stu[index].sum;
stu[index].sum=j;
}
}
}
for(i=0;i<count;i++)
{
printf("第%d名的总分为:%d\n",i+1,stu[i].sum);
}
}break;
default:
printf("输入错误!请重新输入!");
}
错误:
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(28) : error C2628: 'student' followed by 'int' is illegal (did you forget a ';'?)
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(52) : error C2065: 'exit' : undeclared identifier
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(57) : error C2440: 'return' : cannot convert from 'const int' to 'struct student'
No constructor could take the source type, or constructor overload resolution was ambiguous
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(58) : warning C4508: 'main' : function should return a value; 'void' return type assumed
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(92) : error C2065: 'stu' : undeclared identifier
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(92) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(92) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(94) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(94) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(99) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(99) : error C2228: left of '.name' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(101) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(101) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(101) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(101) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(102) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(136) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(136) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(139) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(139) : error C2228: left of '.name' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(141) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(141) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(143) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(143) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(145) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(145) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(153) : error C2447: missing function header (old-style formal list?)
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(247) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(247) : error C2228: left of '.num' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(255) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(255) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(255) : error C2106: '=' : left operand must be l-value
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(292) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(292) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(296) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(296) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(298) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(298) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(299) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(299) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(301) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(301) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(302) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(302) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(304) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(304) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(320) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(320) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(324) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(324) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(326) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(326) : error C2228: left of '.math' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(327) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(327) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(329) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(329) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(330) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(330) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(332) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(332) : error C2228: left of '.chinese' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(342) : error C2001: newline in constant
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(343) : error C2143: syntax error : missing ')' before '}'
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(343) : error C2143: syntax error : missing ';' before '}'
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(353) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(353) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(353) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(353) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(355) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(355) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(356) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(356) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(356) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(356) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(357) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(357) : error C2228: left of '.sum' must have class/struct/union type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(363) : error C2109: subscript requires array or pointer type
D:\Microsoft Visual Studio\MyProjects\studentmenu\menu.cpp(363) : error C2228: left of '.sum' must have class/struct/union type
执行 cl.exe 时出错.
看看下面代码的错误应该如何改正
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 丨秋水丨 2022-05-12 13:15关注
1、结构体后面没有分号,要加上分号
2、stu变量要定义成全局变量,不然其他方法没法访问
3、要包含stdio.h头文件,否则找不到stdin变量
4、alter方法后面不要加分号,不然就变成了声明,把分号去掉就行
5、输入字符串不用取地址,把&去掉
6、switch拼错了,chinese后面少了括号
7、printf里面少了个双引号
8、最后还少了}
9、remove可能会和标准库里的remove函数冲突,建议改成remove_stu
10、完整代码
#include<string.h> #include<stdio.h> extern int count = 0; void input(); void search(); void alter(); void remove_stu(); //void remove(); void grade(); int menu_select(); struct student; extern struct student { char name[20]; char num[20]; int math, chinese; int sum; }; struct student stu[100]; int main() { for (;;) { switch (menu_select()) { case 1: input(); break; case 2: search(); break; case 3: alter(); break; case 4: remove_stu(); break; case 5: grade(); break; case 6: printf("Goodbye\n"); exit(0); } } return 0; } int menu_select() { char s; int cn; printf("1. 输入学生成绩信息\n"); printf("2. 查询学生成绩信息\n"); printf("3. 删除学生成绩信息\n"); printf("4. 修改学生成绩信息\n"); printf("5. 统计学生成绩信息\n"); printf("6. 退出系统\n"); printf("Please input 1-6:"); do { s = getchar(); cn = (int)s - 48; } while (cn < 1 || cn>6); return cn; } void input() { int len; do { printf("请输入学生的学号(12位)\n"); scanf("%s", &stu[count].num); len = strlen(stu[count].num); } while (len < 13); printf("请输入学生的姓名\n"); scanf("%s", &stu[count].name); printf("请依次输入学生的数学、语文成绩\n"); scanf("%d,%d", &stu[count].math, &stu[count].chinese); stu[count].sum = stu[count].math + stu[count].chinese; count++; } void search() { char s[20]; int j; if (count == 0) { printf("当前并未存储学生信息,无法查询"); return; } else { printf("请输入你想查询学生的学号\n"); scanf("%s", s); //scanf("%s", &s); fflush(stdin); for (j = 0; j < count; j++) { if (strcmp(stu[j].num, s) == 0) { printf("姓名:%s\n", stu[j].name); printf("学号:%s\n", stu[j].num); printf("数学成绩:%d\n", stu[j].math); printf("语文成绩:%d\n", stu[j].chinese); } } } } void alter() { char s[20]; int j, course; if (count == 0) { printf("当前并未存储学生信息,无法修改!"); return; } else { printf("请输入你想要修改的学生学号:\n"); scanf("%s", &s); fflush(stdin); for (j = 0; j < count; j++) { if (strcmp(stu[j].num, s) == 0) { printf("请问你要修改哪个课程的成绩:1.数学 2.语文\n"); scanf("%d", &course); printf("请输入修改后的成绩:\n"); switch(course)//soitch(course) { case 1:scanf("%d", &stu[j].math); break; case 2:scanf("%d", &stu[j].chinese); break; //case 2:scanf("%d", &stu[j].chinese; break; default:printf("无效的选择,请重新输入!\n"); break; } } } } } void remove_stu() { int choice; if (count == 0) { printf("当前并未存储学生信息,无法删除!\n"); return; } else { int j, index = 0, k = count; char s[20]; printf("请输入你想要删除的学生学号:\n"); scanf("%s", &s); fflush(stdin); for (j = 0; j < count; j++) { if (strcmp(stu[j].num, s) == 0) { for (j = index; j < count; j++) { stu[j] = stu[j + 1]; count--; if (count < k) printf("你已删除成功!\n"); } index++; } } } } void grade() { int choice, i, j, k, amount = 0, max = 0, min = 0, index, x = 0; float pass = 0.0; printf("请选择要进行统计的课程:1.数学 2.语文\n"); printf("若想查询总分排名,请输入3\n"); scanf("%d", &choice); switch (choice) { case 1: { min = stu[0].math; for (i = 0; i < count; i++) { amount += stu[i].math; if (stu[i].math > max) max = stu[i].math; if (stu[i].math < min) min = stu[i].math; if (stu[i].math >= 60) x++; } float average = (float)amount / count; pass = (float)x / count; printf("数学平均分为:%d\n", average); printf("数学最高分为:%d\n", max); printf("数学最低分为:%d\n", min); printf("数学的及格率为:%d\n", pass); } break; case 2: { min = stu[0].chinese; for (i = 0; i < count; i++) { amount += stu[i].chinese; if (stu[i].math > max) max = stu[i].chinese; if (stu[i].chinese < min) min = stu[i].chinese; if (stu[i].chinese >= 60) x++; } float average = (float)amount / count; pass = (float)x / count; printf("语文平均分为:%d\n", average); printf("语文最高分为:%d\n", max); printf("语文最低分为:%d\n", min); printf("语文的及格率为:%d\n", pass);//printf("语文的及格率为:%d\n,pass); } break; case 3: { for (i = 0; i < count; i++) { i = index; for (k = i + 1; k < count; k++) { if (stu[k].sum > stu[index].sum) { stu[k].sum = j; stu[k].sum = stu[index].sum; stu[index].sum = j; } } } for (i = 0; i < count; i++) { printf("第%d名的总分为:%d\n", i + 1, stu[i].sum); } }break; default: printf("输入错误!请重新输入!"); } }
11、运行截图
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?