u010897682 2013-11-14 02:13 采纳率: 0%
浏览 3737

用c语言建立一个顺序表,并且对表进行操作

写了个小程序,目的要求:用c语言建立一个顺序表,表中元素为学生,每个学生信息包含姓名、学号和成绩三部分,对该表实现:① 输出、② 插入、③ 删除、④ 查找功能,并计算出平均成绩和总成绩

感觉我的代码没什么问题,编译也正常通过,但是每次运行都会出现这样的问题,不知道是什么原因,希望又高手能帮忙解答下,谢了
CSDN移动问答

#include
#include

void chu(int a);

void zhao(int a);
void cha(int a);
void shan(int a);
void score ( );

struct student
{

char name[10];
int num;
int score;
}person[100];
int g=0;
int main()
{

int c,d,e,h,i;

char b;
printf("学生系统管理菜单\nA.输出\nB.查找\nC.插入\nD.删除\nE.计算成绩\nF.退出\n");
for(i=0;i<=100;i++)
{

printf("请输入\n");
scanf("%s",b);
switch(b)

{

case 'A':
case 'a':
printf("输入要输出信息的学生学号:");

scanf("%s",c); chu(c); break;

case 'B':
case 'b':
printf("输入要查找的学生学号:");
scanf("%d",d); zhao(d); break;
case 'C':
case 'c':
printf("请输入要插入的编号:");

scanf("%d",e); printf("\n请输入要插入的学生信息 顺序:name num score");

cha(e);break;

case 'D':
case 'd':
printf("请输入要删除学生学号:");
scanf("%d",h); shan(h);break;

case 'E':
case 'e':
scanf("请输入要计算分数的学生学号:");
printf("学生的总的成绩和平均成绩分别是:");

score();break;

default : printf("输入有误,请重新输入要执行的功能\n");
}

getchar();

if(b=='F')
return 0;
}
}

void chu(int a)
{
if(g!=0)
printf("\n该学生的信息如下:\n姓名:%s 学号:%d 成绩:%d",person[a].name,person[a].num,person[a].score);
else
printf("\n系统中未存储任何信息");
}

void zhao (int a)
{
int i;
for(i=0;i<=100;i++)

{

if(person[i].num==a)

printf("\n该学生的信息如下:\n姓名:%s 学号:%d 成绩:%d",person[i].name,person[i].num,person[i].score);

}
}

void cha (int a)
{
int i;
for(i=1;;i++)

{
if(person[a].num >0)
{
printf("该编号已经存在,请重新输入\n");

scanf("%s",a);
}
break;

}

printf("请输入名字 编号 成绩(每输入一项之后按回车)\n");
scanf("%s",person[a].name);
scanf("%d",person[a].num);
scanf("%d",person[a].score);

g=g+1;
}

void shan (int a)
{

int i;
int j;

for(i=0;i<100;i++)
{ if(person[i].num==a)

{

strcpy(person[i].name,0);
person[i].num=0;

person[i].score=0;

for(j=i;j<100;j++)

{
strcpy(person[j].name ,person[j+1].name);
person[j].score = person[j+1].score;

person[j].num = person[j+1].num;

}
}

}
g=g-1;

}

void score ()
{

int i,b=0;
float c;

for(i=0;i<g;i++)

b=b+person[i].score;

c=(float)b/g;

printf("%d %d",b,c);

getchar();
getchar();

}

  • 写回答

1条回答 默认 最新

  • 小白yige 2014-09-15 05:03
    关注

    scanf("%s",b);错了,应该是&b,是吗?别的没看,这个最明显了

    评论

报告相同问题?

悬赏问题

  • ¥15 有偿求码,CNN+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路