求解析 解析局提

来源:3-8 练习题

冰寒潺灵

2016-01-04 11:49

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<windows.h>+

int n=0;

int r=0;

void minu()

{

printf("*------------欢迎进入本学生管理系统----------------*\n");

printf("*1.录入信息\n");

printf("*2.增加信息\n");

printf("*3.删除信息\n");

printf("*4.修改信息\n");

printf("*5.查询学生信息\n");

printf("*6.退出本系统\n");

}

struct student

{

printf("请输入要录入学生的人数:");

char name[20];

long int num;

long int tel ;

struct student *next;

};

struct student *luru(void)

{

int k;

struct student *head,*p1,*p2;

scanf("%d",&n);

printf("请输入 %d 个人的信息\n信息的格式:姓名 学号 电话\n",n);

k=0; 

while(k<n)

{

if(k==0)

{

p1=p2=(struct student *)malloc(sizeof(struct student));

scanf("%s %ld %ld",p1->name,&p1->num,&p1->tel);

head=p1;

}

else

{

p1=(struct student *)malloc(sizeof(struct student));

scanf("%s %ld %ld",p1->name,&p1->num,&p1->tel);

p2->next=p1;

p2=p1;

}

k=k+1;

}

p2->next=NULL;

return (head);

}         

void showall(struct student *head)

{

struct student *p;

printf("输出所有的%d条学生信息:\n",n);

printf("--姓名--学号--电话--\n");

p=head;

if(head!=NULL)

{

while(p!=NULL)

{

r++;

printf("%s %ld %ld\n",p->name,p->num,p->tel);

p=p->next;

}

}

}

void selec(struct student *head)

{

char sel_name[20];

struct student *p;

printf("请输入查找的学生名字:");

scanf("%s",sel_name);

p=head;

if(head!=NULL)

{

while(p!=NULL)

{

if((strcmp(p->name,sel_name))==0)

{

printf("--姓名--学号--电话--\n");

printf("%s %ld %ld",p->name,p->num,p->tel);

break;

}

else

{

printf("查无此人\n");

break;

}


p=p->next;

}

}

}

int  xiugai(struct student *head)

{

int a,b;

struct student *p;

char xiu_name[20];

printf("请输入修改的学生名字:\n",n);

scanf("%s",xiu_name);

p=head;

if(head!=NULL)

{

while(p!=NULL)

{

a=strcmp(p->name,xiu_name);

if(a==0)

{

printf("请输入需要修改的项目\n");

printf("1.名字  2.学号 3.电话\n");

printf("请输入字母来选择对应的项目:");

scanf("%d",&b);

switch(b)

{

case 1:

printf("请输入要修改后的名字:");

scanf("%s",p->name);

printf("修改成功\n");

break;

case 2:

printf("请输入修改后的学号:");

scanf("%ld",&p->num);

printf("修改成功 %s 的学号已经修改为 %ld \n",p->name,p->num);

break;

case 3:

printf("请输入修改后的电话:");

scanf("%d",&p->tel);

printf("修改成功 %s 的电话已经修改为 %d \n",p->name,p->tel);

break;

default:

printf("error无此操作\n");

}

}

p=p->next;

}

}

return 0;

}

struct student *insert(struct student *head)

{

int k=n-1;

struct student *p,*q;

printf("请输入要增加的数据(一次只能插入一条数据)\n信息的格式:姓名  学号 电话\n");

p=(struct student *)malloc(sizeof(struct student));

scanf("%s %ld %ld",p->name,&p->num,&p->tel);

q=head;

while(k)

{

q=q->next;

k--;

}

if(q->next==NULL)

{

q->next=p;

n++;

p->next=NULL;

}

return (head);

}



struct student *delet(struct student *head)

{

int a;

char del_name[20];

struct student *p1;

struct student *pf;

struct student *p2;

p1=p2=head;


printf("请输入要删除的学生的名字:");

scanf("%s",del_name);

a=strcmp(head->name,del_name);

if(a==0)

{

printf("要删除的是第一个\n");

pf=head;

head=head->next;

free(pf);

n--;

printf("删除成功\n");

}

else

{

a=strcmp(p1->name,del_name);

while(a!=0)

{

p2=p1;

p1=p1->next;

a=strcmp(p1->name,del_name);

if((p1->next==NULL)&&(a!=0))

{

printf("此表中无要删除的学生\n");


}

else

{

a=strcmp(p1->name,del_name);

if((p1->next==NULL)&&(a==0))

{

printf("要删除的是最后一个\n");

p2->next=NULL;

n--;

printf("删除成功\n");

}

else

{

a=strcmp(p1->name,del_name);

if(a==0)

{

printf("要删除的是其中一个\n");

p1=p1->next;

p2->next=p1;

n--;

printf("删除成功\n");


}

}

}

}

}

return (head);


}


int main()

{

struct student *head;

int i=0;

system("color 3f");

while(1)

{

minu();

printf("请输入一个数字来选择对应的操作:");

   scanf("%d",&i);

switch(i) 

{

case 1:

head=luru();

system("pause");

system("cls");

break;

case 2:

head=insert(head);

system("pause");

system("cls");

break;

case 3:

head=delet(head);

system("pause");

system("cls");

break;

case 4:

xiugai(head);

system("pause");

system("cls");

break;

case 5:

selec(head);

system("pause");

system("cls");

break;

case 6:

return 0;

break;

default:

printf("error无此操作\n");

system("cls");

break;

}

}

return 0;

}


写回答 关注

4回答

  • 张土土
    2016-01-12 11:40:05

    结构体学完再看吧。

  • Okrtew
    2016-01-05 14:38:46

    这么6

  • 慕移动9341187
    2016-01-05 09:23:42

    错误太多了,你还是根据习题解析再看看

  • 越狱的囚徒
    2016-01-04 23:02:48

    6666

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926896 学习 · 21532 问题

查看课程

相似问题