您的位置首页百科问答

c语言程序设计试题

c语言程序设计试题

的有关信息介绍如下:

c语言程序设计试题

#include

#include

#include

struct Telephone

{

char number;

char name;

char call;

char addrass;

char mail;

char telephone;

struct Telephone *next;

}student;

typedef struct Telephone TEL;

TEL *head=NULL;

void showmenu(); /*菜单*/

void Appenditem(); /*添加条目*/

void print(); /*输出条目*/

void Finditem1(); /*查找条目( 按姓名 )*/

void Correct(); /*修改条目*/

void Removeitem(); /*删除信息*/

void Saveandfree(); /*保存到文件*/

void Open(); /*打开文件*/

main()

{

char ch;

Open(); /*打开文件*/

while(1)

{

showmenu(); /*显示菜单*/

scanf(" %c",&ch);

switch(ch)

{

case '1':Appenditem(); /*添加条目*/

break;

case '2':print(); /*输出条目*/

break;

case '3':Finditem1(); /*查找条目1.按姓名*/

break;

case '4': Removeitem(); /*删除信息*/

print(); /*输出删除后的结果*/

break;

case '5': Correct(); /*修改信息*/

break;

case '0':Saveandfree(); /*保存并释放内存*/

exit(0); /*退出*/

break;

default:

printf("选择错误!");

break;

}

}

}

/*菜单*/

void showmenu()

{

printf("\n********************************************************************************\n");

printf("\t\t1.录入信息\t\t\t4.删除信息\n");

printf("\t\t2.输出信息\t\t\t5.修改信息\n");

printf("\t\t3.按姓名查询\t\t\t0.保存并退出!\n");

printf("\n********************************************************************************\n");

printf("请选择:");

}

/*添加条目*/

void Appenditem()

{

TEL *p1=NULL,*p2=NULL;

p1=(TEL *)malloc(sizeof(TEL));

printf("输入编号:");

scanf("%s",p1->number);

printf("输入姓名:");

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

printf("输入固定电话:");

scanf("%s",p1->call);

printf("输入家庭地址:");

scanf("%s",p1->addrass);

printf("输入邮箱:");

scanf("%s",p1->mail);

printf("输入手机:");

scanf("%s",p1->telephone);

p1->next=NULL;

if(head==NULL)

{

head=(TEL *)malloc(sizeof(TEL));

head->next=p1;

}

else

{

for(p2=head;p2->next!=NULL;p2=p2->next);

p2->next=p1;

}

printf("此信息已添加!");

}

/*输出学生信息*/

void print()

{

TEL *p=NULL;

if(head==NULL)

{

printf("此通讯录中无记录,请输入记录后在使用本功能!\n");

return;

}

printf("\n********************************************************************************\n");

printf("编号\t姓名\t固定电话\t家庭地址\t邮箱\t手机\n");

for(p=head->next;p!=NULL;p=p->next)

printf("%s\t%s\t%s\t%s\t%s\t%s\n",p->number,p->name,p->call,p->addrass,p->mail,p->telephone);

}

/*查找信息1.按姓名*/

void Finditem1()

{

TEL *p;

char findname;

printf("请输入要查找的姓名:\n");

scanf("%s",findname);

printf("\n********************************************************************************\n");

printf("编号\t 姓名\t 固定电话\t 家庭地址\t 邮箱\t 手机\n");

for(p=head->next;p!=NULL;p=p->next)

{

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

printf("%s\t%s\t%s\t%s\t%s\t%s\n",p->number,p->name,p->call,p->addrass,p->mail,p->telephone);

}

}

/*修改信息*/

void Correct()

{

TEL *p1(TEL *head);

{

struct Telephone *p1;

char name;

printf("输入要修改的人名:\n");

scanf("%s",name);

p1=head;

int flag=0;

while(p1!=NULL)

{

if(strcmp(p1->name,name)==0)

{

printf("输入新编号: ");

scanf("%s",p1->number);

printf("输入新姓名: ");

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

printf("输入新固定电话: ");

scanf("%s",p1->call);

printf("输入新家庭地址: ");

scanf("%s",p1->addrass);

printf("输入新邮箱: ");

scanf("%s",p1->mail);

printf("输入新手机: ");

scanf("%s",p1->telephone);

flag=1;

}

p1=p1->next;

}

}

printf("修改完成");

}

/*删除信息*/

void Removeitem()

{

char findname;

TEL *p=head,*pr=head;

printf("请输入要删除的姓名:\n");

scanf(" %s",findname);

if (head== NULL)

{

printf("无此结点!\n");

return;

}

while ((strcmp(p->name,findname)!=0 )&& p->next != NULL)

{

pr =p;

p =p->next;

}

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

{if(p==head)

head=p->next;

else

pr->next=p->next;

free(p);

}else

printf("没有要删除的对象\n");

printf("已删除");

}

/*保存链表信息到文件并释放内存空间*/

void Saveandfree()

{

TEL *p=NULL;

FILE *fp;

char *Book="books.txt";

if(head==NULL)

{

printf("\n记录为空!\n");

return;

}

else

p=head->next;

if((fp=fopen(Book,"wb+"))==NULL)

{

printf("\n打不开文件!\n");

return;

}

while(p!=NULL)

{

fwrite(p,sizeof(TEL),1,fp);

p=p->next;

}

printf("保存完毕!\n");

fclose(fp);

/*释放链表空间*/

for(;head->next!=NULL;)

{

p=head->next;

head->next=head->next->next;

free(p);

}

free(head);

}

/*文件信息输出到链表*/

void Open()

{

FILE *fp;

TEL *p1=NULL,*p2=NULL,*temp=NULL;

if((fp=fopen("books.txt","rb+"))==NULL)

{

printf("\n\t\t\t\t通讯录 \n");

return;

}

head=(TEL *)malloc(sizeof(TEL));

head->next=NULL;

temp=p2=head;

while(! feof(fp))

{

p1=(TEL *)malloc(sizeof(TEL));

temp=p2;

p2->next=p1;

p2=p1;

fread(p1,sizeof(TEL),1,fp);

}

temp->next=NULL;

fclose(fp);

}