鱼C论坛

 找回密码
 立即注册
查看: 2005|回复: 5

带你学C带你飞第一季48课的通讯录

[复制链接]
发表于 2020-2-3 22:21:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct List
{
        char name[40];
        char phone[20];
        struct List *next;
};

void addPerson(struct List **head);
struct List *findPerson(struct List *list,char *name);
struct List *changePerson(struct List *list);
void delPerson(struct List *list, char *name);
void displayContacts(struct List *list);
void freeList(struct List *list);

void addPerson(struct List **head)
{
        struct List *list, *tail;
        list = (struct List *)malloc(sizeof(struct List));
       
        printf("请输入新联系人的姓名:");
        scanf("%s", list->name);
        printf("请输入新联系人的手机:");
        scanf("%s", list->phone);

        if(*head != NULL)
        {
                tail->next = list;
                list->next = NULL;
        }
        else
        {
                *head = list;
                list->next = NULL;
        }
        tail = list;
}

struct List *findPerson(struct List *list,char *name)
{
        while(strcmp(list->name, name) && list != NULL)
        {
                list = list->next;
        }
        if(list == NULL)
        {
                printf("很抱歉,未找到匹配联系人\n");
        }
        else
        {
                return list;
        }
}

struct List *changePerson(struct List *list)
{
       
        printf("请输入新的姓名:");
        scanf("%s", list->name);
        printf("请输入新的手机:");
        scanf("%s", list->phone);
       
        return list;
}

void delPerson(struct List *list,char *name)
{
        struct List *previous;
       
        while(strcmp(list->name, name) && list !=NULL)
        {
                previous = list;
                list = list->next;
        }
        if(list == NULL)
        {
                printf("很抱歉未找到删除目标\n");
                return;
        }
        else
        {
                previous = list->next;
                free(list);
                printf("成功删除!\n");
        }
       
        return;
}

void displayContacts(struct List *list)
{
        int num = 1;
        while(list != NULL)
        {
                printf("第%d位联系人:\n", num);
                printf("姓名:%s\n", list->name);
                printf("手机:%s\n", list->phone);
                list = list->next;
                num++;
        }
       
        printf("打印完毕!\n");
}
void freeList(struct List *list)
{
        struct List *temp;
        while(list != NULL)
        {
                temp = list;
                list = list->next;
                free(temp);
        }
}



int main(void)
{
        printf("欢迎来到通讯录程序\n");
       
        int o;
        struct List *head;
        do
        {
                printf("插入新的联系人(1)\n");
                printf("查找已有联系人(2)\n");
                printf("更改已有联系人(3)\n");
                printf("删除已有联系人(4)\n");
                printf("显示当前通讯录(5)\n");
                printf("退出通讯录程序(6)\n");
                printf("操作选择:");
                scanf("%d", &o);
                if(o == 1)
                {
                        addPerson(&head);
                        printf("添加成功!\n");
                }
                if(o == 2)
                {
                        char name1[40];
                        struct List *address1;
                       
                        printf("请输入要查找的联系人名字:");
                        scanf("%s", name1);
                        address1 = findPerson(head,name1);
                        if(address1 == NULL)
                        {
                                printf("很抱歉未找到联系人\n");
                        }
                        else
                        {
                        printf("姓名:%s\n", address1->name);
                        printf("手机:%s\n", address1->phone);
                        }
                }
                if(o == 3)
                {
                        char name2[40];
                        struct List *address2;
                        printf("请输入要更改联系人的姓名:");
                        scanf("%s", name2);
                        address2 = findPerson(head,name2);
                        if(address2 == NULL)
                        {
                                printf("很抱歉未找到联系人\n");
                        }
                        else
                        {
                                address2 = changePerson(address2);
                                printf("修改成功!\n");
                                printf("新姓名:%s\n", address2->name);
                                printf("新手机:%s\n", address2->phone);
                        }
                }
                if(o == 4)
                {
                        char name3[40];
                       
                        printf("请输入要删除的联系人姓名:");
                        scanf("%s", name3);

                        delPerson(head, name3);
                }
                if(o == 5)
                {
                        displayContacts(head);
                }
                if(o == 6)
                {
                        freeList(head);
                        exit(1);
                }
        }while(1);
       
        return 0;
}
有大神帮我看一下我这代码为什么不可以吗?求求了,不知道问题出在哪里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-4 13:58:00 | 显示全部楼层
是哪里有问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 14:06:27 | 显示全部楼层
就是2 3 4 5 6运行不了,你复制一下代码,编译运行一下就可以看出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 14:07:04 | 显示全部楼层


就是2 3 4 5 6运行不了,你复制一下代码,编译运行一下就可以看出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 10:23:59 From FishC Mobile | 显示全部楼层
楼主你逗我吧。1235都能用。根本就没问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-6 10:25:53 From FishC Mobile | 显示全部楼层
4和6也没有问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 05:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表