给位大佬帮我看看C语言学生成绩管系统,哪里出错了,急

输出结果都为零
查询结果没有
而且有时候调试到一半说程序错误
#include
#include
#include
void menu();
void action1();
void action2();
void action3();
struct student
{
int num;
char name[10];
int gaoshu;
int yingyu;
int cyuyan;
}ren[3];
void main()
{
menu();
}
void menu()
{
int a;
do
{
printf("欢迎来到学生成绩管理系统\n");
printf("输入学生成绩请按1\n");
printf("输出学生成绩请按2\n");
printf("查询学生成绩请按3\n");
printf("退出学生成绩管理系统请按4\n");
scanf("%d",&a);
switch(a)
{
case 1:action1();break;
case 2:action2();break;
case 3:action3();break;
case 4:exit(0);
}
}while(1);
}
void action1()
{
int b;
for(b=0;b {
printf("请输入学生姓名\n");
scanf("%s",&ren[3].name);
printf("请输入学号\n");
scanf("%d",&ren[3].num);
printf("请输入高数成绩\n");
scanf("%d",&ren[3].gaoshu);
printf("请输入英语成绩\n");
scanf("%d",ren[3].yingyu);
printf("请输入c语言成绩\n");
scanf("%d",&ren[3].cyuyan);
}
}
void action2()
{
printf("您输入的学生成绩为:\n");
struct student*p;
printf("\t姓名:\t学号:\t高数:\t英语:\tc语言\t\n");
for(p=ren;p printf("%s\t\t%d\t\t%d\t\t%d\t\t%d\n",p->name,p->num ,p->gaoshu ,p->yingyu ,p->cyuyan );
}
void action3()
{
int k,n;
printf("请输入您要查询的学生学号\n");
scanf("%d",&n );
for(k=0;k<3;k++)
{
if(n==ren[3].num )
{
printf("姓名:%s\n 学号:%d\n 高数:%d\n 英语:%d\n c语言:%d\n",ren[3].name ,ren[3].num ,ren[3].gaoshu ,ren[3].yingyu ,ren[3].cyuyan );

    }
}

}

3个回答

你这个宏定义都没有,for循环也不完整没办法给你看

你把printf("请输入学生姓名\n");
scanf("%s",&ren[3].name);这段注释掉试试看有没有用,,,

ren的数组访问越界了,定义了ren[3],表示只有3个元素,最后一个元素是ren[2]。所以你在代码里面访问时候,用ren[3]越界了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问