帮忙看下我编的程序有错没
下楼发代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10
struct student
{
int flag;//标记:未赋值时为0复制后为1判断数组是否为空的标记!很重要的思想
int number;
char name[20];
int Englishscore;
int Chinesescore;
};//此处不要忘记;
struct student stu[N];
int main()
{
int i=0;
while(i<N)
{
stu[i].flag=0;
i++;
}
char count;
int delet();
void input();
int increase();
int insert();
int query();
int sort();
//初始化工作
//FILE *fp;
//fp=fopen("student","w+");
while(1)
{
printf("************欢迎使用学生成绩管理系统*************\n");
printf("* 1.录入学生成绩 *\n");
printf("* 2.修改学生成绩 *\n");
printf("* 3.增加学生成绩 *\n");
printf("* 4.查询学生成绩 *\n");
printf("* 5.删除学生成绩 *\n");
printf("* 6.排序 *\n");
printf("* 7.退出系统 *\n");
printf("*************************************************\n");
scanf("%d",&count);
switch(count)
{
case 1: input();break; //录入成绩
case 2: insert();break; //修改成绩
case 3: increase();break; //增加成绩
case 4: query();break; //查询成绩
case 5: delet();break; //删除成绩
case 6: sort();break; //排序
case 7: printf(" 感谢您使用本系统,欢迎下次使用!\n"); exit(0); break;
}
}
return 0;
}
void input()
{
int i=0;
while(i<N)
{
printf("输入学生%d的信息:number, Englishscore, Chinesescore, name:\n",(i+1));
scanf("%d,%d,%d,%s",&stu[i].number,&stu[i].Englishscore,&stu[i].Chinesescore,stu[i].name);//char[]类型的 输入和输出放到最后,不然不识别是否结束,若结构体数组里有两个char[],那要用两次SCANF()函数。多一次回车。
//scanf("%s",stu[i].name);一定注意char[]输入问题
stu[i].flag=1;
printf("录入成功\n");
i++;
}
}
int delet() //删除
{
int count;
printf("请输入您要删除的学生学号:\n"); //没想到解决输出"要删除的信息不存在"的问题。
scanf("%d",&count);
for(int i=0;i<N;i++)
{
if(stu[i].number==count && stu[i].flag == 1)
{
stu[i].flag=0;
printf("删除成功!\n");
return 0;//作用结束当前整个函数,比如for循环共五次,后三次没必要继续,那就用Return0结束,并且下面的语句也不再继续进行执行。break结束循环,但是会继续执行下面的PRINT语句,注意区别。
}
}
printf("要删除的学生不存在!\n");
return 0;
}
int insert() //修改
{
printf("按学号修改\n");
int choice;
scanf("%d",&choice);
int num;
printf("请输入您要修改学生的学号\n");
scanf("%d",&num);
for(int j=0;j<N;j++)
{
if((stu[j].number==num)&&(stu[j].flag==1))//这么写好像很省奥很概括
{
printf("请重新输入学生信息:number, Englishscore, Chinesescore, name:\n");
scanf("%d,%d,%d,%s",&stu[j].number,&stu[j].Englishscore,&stu[j].Chinesescore,stu[j].name);
printf("修改成功!\n");
return 0;
}
}
printf("修改内容不存在\n");
return 0;
}
int query() //输出
{
printf("number name Englishscore Chinesescorec flag\n");
for(int i=0;i<N;i++)
{
if(stu[i].flag==1)
printf("%5d %5s %10d %10d %12d\n",stu[i].number,stu[i].name,stu[i].Englishscore,stu[i].Chinesescore,stu[i].flag);
}
return 0;
}
sort()
{
int data[N];
int i,j,t;
data[N]=stu[N].number ;
for(i=0;i<N;i++)
for(j=0;j<N-i;j++)
if(data[j]>data[j+1])
{
t=data[j];
data[j]=data[j+i];
data[j+i]=t;
}
printf("排序结果为:\n");
return 0;
}
int increase()
{
for(int i=0;i<N;i++)
{
if(stu[i].flag==0)
{
printf("请输入学生信息\n");
printf("number name Englishscore Chinesescorec flag\n");
scanf("%d,%d,%d,%s",&stu[i].number,&stu[i].Englishscore,&stu[i].Chinesescore,stu[i].name);
stu[i].flag=1;
printf("输入学生信息成功!\n");
return 0;
}
}
printf("对不起,信息库已满,不能输入!\n");
return 0;
}