2 u010897682 u010897682 于 2013.11.14 10:13 提问

用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个回答

a158337
a158337   2014.09.15 13:03

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!