代碼是這些,還是參考的 唔。其他地方也應該有問題只是我第一步就搞不下來了 球球各位大佬救救菜鳥叭QAQ
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#define LEN sizeof(struct linkman)
int len;
typedef struct Linklist
{
char num[9];
char username[90];
char sex[30];
char phone[130];
char addr[30];
struct Linklist *next;
}Linklist;
void menu()
{
printf("\t\t|--------------------通訊錄管理系統—---------------------|\n");
printf("\t\t| [1] 通訊錄鏈表的建立 |\n");
printf("\t\t| [2] 通訊者結點的插入 |\n");
printf("\t\t| [3] 通訊者結點的查詢 |\n");
printf("\t\t| [4] 通訊者結點的洗掉 |\n");
printf("\t\t| [5] 通訊錄鏈表的輸出 |\n");
printf("\t\t| [0] 退出管理系統 |\n");
printf("\t\t|---------------------------------------------------------|\n");
printf("\t\t\t請輸入功能選項(0-5):");
}
Linklist *creat()
{
Linklist *head;
Linklist *var1,*var2;
char numb[9];
len=0;
var1=(Linklist*)malloc(len);
var2=var1;
printf("請輸入當前需要錄入的資訊!\n");
printf("當輸入q時代表結束\n");
printf("請輸入序列:\n");
gets(numb);
if(strcmp(numb,"q")!=0)
{
strcpy(var1->num,numb);
printf("請輸入聯系人姓名");
gets(var1->username);
printf("請輸入聯系人地址");
gets(var1->addr);
printf("請輸入聯系人性別");
gets(var1->sex);
printf("請輸入聯系人電話");
gets(var1->phone);
head=NULL;
while(1)
{
len=len+1;
if(len==1)
{
head=var1;
}
else
{
var2->next=var1;
}
var2=var1;
printf("請輸入序列\n");
scanf("%s",&numb);
if(strcmp(numb,"q")==0)
{
break;
}
else
{
var1=(Linklist *)malloc(len);
strcpy(var1->num,numb);
printf("請輸入聯系人姓名\n");
scanf("%s",var1->username);
printf("請輸入聯系人地址\n");
scanf("%s",var1->addr);
printf("請輸入聯系人性別\n");
scanf("%s",var1->sex);
printf("請輸入聯系人電話\n");
scanf("%s",var1->phone);
}
}
var2->next=NULL;
}
}
void Insert(Linklist *l)
{
Linklist *p,*q,*s;
p=q=l;
for(p;p!=NULL;)
{
q=p;
p=p->next;
}
s=(Linklist*)malloc(sizeof(Linklist));
s=p;
printf("請輸入要插入人的編號\n");
gets(s->num);
printf("請輸入要插入人的姓名\n");
gets(s->username);
printf("請輸入要插入人的性別\n");
gets(s->sex);
printf("請輸入要插入人的電話\n");
gets(s->phone);
printf("請輸入要插入人的地址\n");
gets(s->addr);
}
void Getelem(Linklist *l)
{
Linklist *var1,*var2;
printf("請輸入要查詢聯系人的序號\n");
char numb[9];
gets(numb);
for(var1=var2=l;var1!=NULL;)
{
if(strcmp(var1->num,numb)==0)
{
printf("序號:%s姓名:%s性別:%s電話:%s地址:%s",var1->num,var1->username,var1->sex,var1->phone,var1->addr);
}
else
{
var2=var1;
var1=var1->next;
}
}
}
void Delete(Linklist *l)
{
Linklist *p,*q;
char numb[9];
if(l->next==NULL)
{
printf("您操作的通訊錄為空\n");
}
printf("請輸入你要洗掉聯系人的序號\n");
gets(numb);
for(p=q=l;p!=NULL;)
{
if(strcmp(p->num,numb)==0)
{
q->next=p->next;
free(p);
p=q->next;
printf("該聯系人已經洗掉!\n");
q=p=l;
}
else
{
q=p;
p=p->next;
}
}
printf("你要找的聯系人不存在\n");
}
void show(Linklist *l)
{
Linklist *p;
p=l;
if (p != NULL)
{
printf("本通訊錄系統現在記錄共有%d人:\n", len);
if (p != NULL)
{
do
{
printf("序列:%s\n姓名:%s\n地址:%s\n聯系電話:%s\n性別:%s\n",p->num,p->username,p->addr,p->phone,p->sex);
p=p->next;
} while (p != NULL);
}
}
else
{
printf("通訊錄為空!\n");
}
}
int main()
{
Linklist *l=NULL;
int n;
while(1)
{
menu();
scanf("%d",&n);
fflush(stdin);
switch(n)
{
case 1:
{
l =creat();
show(l);
}
break;
case 2:
Insert(l);
break;
case 3:
Getelem(l);
break;
case 4:
Delete(l);
break;
case 5:
show(l);
break;
case 0:
printf("退出系統!\n");
break;
default:
printf("您輸入的選項有誤!\n");
break;
}
}
}
uj5u.com熱心網友回復:
你所謂的輸入地址后就不執行了是什么意思?輸入的什么?
之后不執行了什么意思?
我運行你的程式,是正常的啊
uj5u.com熱心網友回復:
哎
我我用devc++他只顯示到聯系人地址那就運行視窗關閉了
uj5u.com熱心網友回復:
唔我用devc++ 他只能運行到聯系人地址那 然后輸入后運行視窗就關閉了
是編譯器的問題嘛
uj5u.com熱心網友回復:
有可能吧 但是代碼看起來沒有問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133910.html
標籤:C語言
上一篇:c++求素數,大一新生求大神指導
下一篇:這里的這三個警告是怎么回事
