永发信息网

结构体的问题

答案:1  悬赏:30  手机版
解决时间 2021-06-04 16:37
  • 提问者网友:且恨且铭记
  • 2021-06-04 05:45

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include <conio.h>
struct student
{
int no;
char name[10];
int score;
}stud[50];

int count=0;

int add()
{
student a;
char x,j;
for(int i=0;i<50;i++)
{
system("cls");
int t=0;
printf("请输入学号:");
scanf("%d",&a.no);
for(int k=0;k<count;k++)
{
if(stud[k].no==a.no)
{
t=1;
}
}
if(t==1)
printf("输入的学号已存在,请重新输入\n");
else
{
printf("请输入该学生的姓名:");
scanf("%s",&a.name);
printf("请输入该学生的成绩:");
scanf("%d",&a.score);
printf("确定要增加该记录吗?(y/n)");
scanf("%c",&x);
scanf("%c",&x);
if(x=='y')
{
stud[count]=a;
count++;
}
printf("要继续增加记录吗?(y/n)");
scanf("%c",&j);
scanf("%c",&j);
if(j=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
return 0;
}
return 1;
}

int show()
{
system("cls");
for(int i=0;i<count;i++)
{
printf("姓名:%16s\n",stud[i].name);
printf("成绩:%8d\n",stud[i].score);
printf("---------------------------------------------------------------------\n");
}
printf("\n按任意键返回主菜单:");
getch();
return 0;
}
int query1()
{
student a;
char k;
while(true)
{
system("cls");
int t=-1;
printf("请输入要查询的学号:");
scanf("%d",&a);
for(int i=0;i<count;i++)
{
if(stud[i].no==a.no)
t=i;
}
if(t==-1)
printf("NO INFORMATION");
else
{
printf("姓名:%16s\n",stud[i].name);
printf("成绩:%8d\n",stud[i].score);
printf("---------------------------------------------------------------------\n");
}
printf("是否继续查询?(y/n)");
scanf("%c",&k);
scanf("%c",&k);
if(k=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
return 0;
}
int update()
{
int x;
student a;
char k,j;
while(true)
{
system("cls");
int t=-1;
printf("请输入要修改的学生学号:");
scanf("%d",&x);
for(int i=0;i<count;i++)
{
if(stud[i].no==x)
t=i;
}
if(t==-1)
printf("您所要修改的学生信息不存在");
else
{
printf("姓名:%16s\n",stud[i].name);
printf("成绩:%8d\n",stud[i].score);
printf("---------------------------------------------------------------------\n");
}
printf("确定要修改该记录吗?(y/n)");
scanf("%c",&k);
scanf("%c",&k);
if(k=='y')
{
printf("请输入新的姓名:");
scanf("%s",a.no);
printf("请输入新的成绩:");
scanf("%d",a.score);
printf("修改成功");
}

printf("是否继续修改?(y/n)");
scanf("%c",&j);
scanf("%c",&j);
if(j=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
return 0;
}
int del()
{
int x;
student a;
char n[20];
int m=0,s=0;
char k,j;
while(true)
{
system("cls");
int t=-1;
printf("请输入要删除的学生学号:");
scanf("%d",&x);
for(int i=0;i<count;i++)
{
if(stud[i].no==x)
t=i;
}
if(t==-1)
printf("您所要删除的学生信息不存在");
else
{
printf("姓名:%16s\n",stud[i].name);
printf("成绩:%8d\n",stud[i].score);
printf("---------------------------------------------------------------------\n");
}
printf("确定要删除该记录吗?(y/n)");
scanf("%c",&k);
scanf("%c",&k);
if(k=='y')
{
stud[i].no=m;
strcpy(stud[i].name,n);
stud[i].score=s;
printf("删除成功");
}

printf("是否继续修改?(y/n)");
scanf("%c",&j);
scanf("%c",&j);
if(j=='n')
break;
}
printf("\n按任意键返回主菜单:");
getch();
return 0;
}
int goout()
{
system("cls");
printf("\n\n\n 谢谢使用,再见\n");
getch();
return 0 ;
}

int grt1()
{
int choice=0;
do{
system("cls");
printf("\t----------------学生信息管理系统----------------\n\n");
printf("\t\t在菜单中选择以下的操作类型\n");
printf("\t\t1.新添记录\n");
printf("\t\t2.输出学生信息\n");
printf("\t\t3.根据学号查询单个学生信息\n");
printf("\t\t4.根据学号修改单个学生信息\n");
printf("\t\t5.根据学号删除单个学生信息\n");
printf("\t\t0.退出\n");
printf("\t\t请输入你的选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
add();
break;
case 2:
show();
break;
case 3:
query1();
break;
case 4:
update();
case 5:
del();
break;
case 0:
goout();
break;
}
}while(choice!=6);
return 0;
}


int main()
{
char x[10];
printf("\t----------------学生信息管理系统----------------\n\n");
grt1();
return 0;
}
查询以及删除信息是出现的原信息总是与输入的信息不符,老是显示不出姓名且分数总是0,请问是这么回事?

最佳答案
  • 五星知识达人网友:北方的南先生
  • 2021-06-04 05:58
代码太长看的累,建议你自己设断点或者单步调试,观察有关的变量的数值变化,这样就很容易找到问题所在。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯