数据结构 one

假设有结构如下:

struct student

{ char sno[11];//学号

char sname[8];//姓名

char sgrade[6];//班级

int sage;//年龄

}

完成如下功能:

1、把十名同学的信息存入顺序表中,并按行显示;

2、插入一名新同学的信息,并把插入后的所有学生的信息显示出来;

3、如有某个同学退学,删除该同学的信息,并显示所有同学的信息;

4、输入某个学生的学号,在顺序表中查找,如找到,显示该同学的信息,如 没找到,显示“没找到!”;

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
char sno[11];//学号
char sname[8];//姓名
char sgrade[6];//班级
int sage;//年龄
};
void create();//创建
void list(); //遍历输出
void insert();//插入
void Delete(char x[]);//删除
void find(char x[]);//查找
struct student s[20];
int m=10;//记录长度
int main()
{
char str1[10];
char str2[10];
create();
list();
insert();
list();
printf("请输入要删除的学生学号\n");
scanf("%s",str1);
Delete(str1);
list();
printf("请输入要查找的学生学号\n");
scanf("%s",str2);
find(str2);
}
void create()
{

for(int i=0;i<m;i++)
{
if(i==0)
{
printf("请输入十名学生的学号 姓名 班级 年龄:\n");
scanf("%s%s%s%d",s[i].sno,s[i].sname,s[i].sgrade,&s[i].sage);
}
else
scanf("%s%s%s%d",s[i].sno,s[i].sname,s[i].sgrade,&s[i].sage);
}
}
void list()
{
printf("学生信息显示如下:\n");
for(int i=0;i<m;i++)
{

printf("%s %s %s %d",s[i].sno,s[i].sname,s[i].sgrade,s[i].sage);
printf("\n");
}

}
void insert()
{
printf("请输入要插入学生的信息\n");
scanf("%s%s%s%d",s[m].sno,s[m].sname,s[m].sgrade,&s[m].sage);
m++;
}
void Delete(char x[])
{ int flag=0;
for(int i=0;i<m;i++)
{
if(strcmp(x,s[i].sno)==0)
{
flag=1;
while(i<m-1)
{
s[i]=s[i+1];
i++;
}
m--;
break;

}

}
if(flag==0)
printf("没找到!");
}
void find(char x[])
{
int flag=0;
int n;
for(int i=0;i<m;i++)
{
if(strcmp(x,s[i].sno)==0)
{
flag=1;
n=i;
break;
}
}
if(flag==1)
{
printf("要查找的学生信息如下:\n");
printf("%s %s %s %d",s[n].sno,s[n].sname,s[n].sgrade,s[n].sage);
}

else
printf("没找到!");
}


 

posted @ 2017-09-24 11:21  Hztiger  阅读(269)  评论(0编辑  收藏  举报