#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct XX{
int xh;
char xm[10];
int cj[3];
};
struct XX x1[30];
void in()
{
int x,y;
printf("请输入需要录入总学生人数:");
scanf("%d",&y);
for(x=0;x<y;x++){
printf("录入信息' '隔开\n学号\t姓名\t语文成绩\t数学成绩\t英语成绩\n");
scanf("%d %s %d %d %d",x1[x].xh,x1[x].xm,x1[x].cj[1],x1[x].cj[2],x1[x].cj[3]);
}
}int menu(){
int a;
printf("\n------------------------------------\n");
printf("\t1.录入学生信息。\n\t2.读取学生数据。\n");
printf("\t3.按学号查询学生。\n\t4.求学生平均成绩。\n");
printf("\t5.输出平均分大于80分的学生。\n\t0.退出。\n");
printf("\n------------------------------------\n");
scanf("%d",&a);
return a;
}int main(){
int a,c = 1;
while(c){
a = menu();
switch(a){
case 1:in();
system("cls");
break;
case 2:
//struct xx x;
//for(c=0;b<=c;c++)
printf("\t姓名:%s\t学号:%d\t语文:%d\t数学:%d\t英语:%d\n",x1[c].xm,x1[c].xh,x1[c].cj[1],x1[c].cj[2],x1[c].cj[3]);
break;
case 3:system("cls");
break;
case 4:system("cls");
break;
case 5:system("cls");
break;
case 0:c=0; break;
}
}
}
in()函数里面的scanf有两个问题:
第一个:scanf里面的变量没有加 & 符号,
第二个,成绩的数组下标应该从0开始
修正后的代码:scanf("%d %s %d %d %d",&x1[x].xh,&x1[x].xm,&x1[x].cj[0],&x1[x].cj[1],&x1[x].cj[2]);
printf("录入信息' '隔开\n学号\t姓名\t语文成绩\t数学成绩\t英语成绩\n");
scanf("%d %s %d %d %d",x1[x].xh,x1[x].xm,x1[x].cj[1],x1[x].cj[2],x1[x].cj[3]);
scanf这一句,变量前面需要加&,另外,数组大小是从0开始,应该是:
scanf("%d %s %d %d %d",&x1[x].xh,x1[x].xm,&x1[x].cj[0],&x1[x].cj[1],&x1[x].cj[2]);
注意x1[x].xm前面不需要加&。
如有帮助,请采纳一下,谢谢。
scanf("%d %s %d %d %d",x1[x].xh,x1[x].xm,x1[x].cj[1],x1[x].cj[2],x1[x].cj[3]);
改成:scanf("%d %s %d %d %d",&x1[x].xh,x1[x].xm,&x1[x].cj[0],&x1[x].cj[1],&x1[x].cj[2]);
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632