上条当麻x一方通行hr18:c语言程序问题急,在线等

来源:百度文库 编辑:神马品牌网 时间:2024/05/09 07:45:04
可以运行,但不能用键盘输入任何数据! 帮帮忙了
#include"stdio.h"
#include"string.h"
#include"stdlib.h"

struct student
{ int NO;
char name[20];
char sex;
int age;
float score[2];
}stu[10];

void zhikong(void);
int caidanxuanzhe(void);
void shuru(void);
int jiance(void);
void shanchu(void);
void liechu(void);

int main()
{
printf("\n ======================欢迎进入学生管理系统======================\n");
char choose;

for(;;); /*使以下语句无限循环*/
{
choose=caidanxuanzhe() ;
switch(choose)
{
case 1:shuru(); break;
case 2:shanchu(); break;
case 3:liechu(); break;
case 4:exit(0);
}
}
return 0;
}

int caidanxuanzhe() /*程序开始时的菜单选者功能函数*/
{
char a[30];
int h;
printf("\n");
do
{
puts("请选择相应键:");
gets(a);
h=atoi(a); /*atoi函数作用是将字符串转换成整形数值*/
}while(h<0 || h>4);
return h;
}

void shuru()
{
int mark;
mark=jiance(); /*同时起到循环的作用*/
if(mark==1)
{ printf("无空间");
return; }
printf("输入学号:\n");
gets("stu[mark].NO");

printf("输入名字:\n");
gets("stu[mark].name");

printf("性别:\n");
gets("stu[mark].sex");

printf("分数:\n数学 C语言");
gets("stu[mark].score");
}

int jiance() /*检测数组中数据是否已满*/
{
int i;
for(i=0;stu[i].name[0] && i<20;i++)
if(i==20)
return 1;
return i;
}

void shanchu()
{
int mark;
char a[20];
printf("输入要删除的名字");
mark=atoi(a);
if(mark>=0 && mark<20)
stu[mark].name[0]='\0';
}

void liechu()
{
int i;
for(i=0;i<20;i++)
{
if(stu[i].name[0])
{
printf("学号%d\n",stu[i].NO);
printf("名字\n%s",stu[i].name);
printf("性别\n",stu[i].sex);
printf("年龄\n",stu[i].age);
printf("分数\n",stu[i].score);
}
}
}
这样啊,我再看看

int main()
{
printf("\n ======================欢迎进入学生管理系统======================\n");
char choose;

for(;;); /*使以下语句无限循环*/
/*********************************************************/
for(;;)后面多了个分号,把分号去掉写成for(;;)
for(;;);你这样的话程序就停在这里不动了,是使一个空语句无限循环,当然,程序还有一些其他问题。

for(;;);是一个
还有:
把形如gets("stu[mark].NO");全部换为scanf("%d",&stu[mark].NO)形式的

get()不能读取换行符号,你把get换成getline试试