Destiny_ing 2024-05-22 17:47 采纳率: 71%
浏览 1
已结题

怎样使这个程序更加的完善?

img

img


因为这个程序目前只能增添一个联系人和输出一个联系人。怎么就可以实现增添很多并且全部输出?

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-05-22 17:47
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您想要解决的问题

    您想要解决的问题是如何使您的C语言程序能够增添多个联系人,并能够输出所有已添加的联系人的信息。

    图片内容

    • 第一张图片展示了一个名为xinjian()的函数,该函数用于新建联系人,并通过scanf函数从用户那里获取联系人的姓名、单位、固定电话、移动手机、分类、电子邮件和QQ号码。
    • 第二张图片展示了一个结构体stu,其中包含了用于存储联系人信息的字段,如姓名、地址、电话、分类、电子邮件和QQ号码。

    问题出现原因

    目前的问题是程序只能处理单个联系人的信息,没有实现存储和处理多个联系人信息的功能。这可能是因为程序中缺少了用于存储多个联系人数据的数据结构(如数组或链表)以及相应的逻辑来管理这些数据。

    问题解决方案

    为了使程序能够处理多个联系人,您可以采取以下步骤:

    1. 使用动态数据结构:使用指针和动态内存分配(如malloc)来创建一个可以存储多个stu结构体的数组。

    2. 实现添加联系人的循环:允许用户指定想要添加的联系人数量,然后在循环中为每个联系人调用xinjian()函数。

    3. 实现显示所有联系人的函数:创建一个新的函数,如xianshiAll(),用于遍历所有联系人并调用xianshi()函数显示每个联系人的信息。

    4. 错误检查:在读取用户输入时,添加错误检查,确保输入有效。

    5. 内存管理:确保在程序结束时释放所有动态分配的内存。

    提供代码

    以下是修改后的代码示例,展示了如何实现上述解决方案:

    #include <stdio.h>
    #include <stdlib.h>
    
    struct stu {
        char name[90];
        char address[90];
        char telephone[20];
        char dianhua[20];
        char leibie[90];
        char email[90];
        char qq[90];
    };
    
    void xinjian(struct stu *contact) {
        printf("名字:");
        scanf("%90s", contact->name);
        // ... 其他字段类似
    }
    
    void xianshi(struct stu contact) {
        printf("名字:%s\n", contact.name);
        // ... 其他字段类似
    }
    
    void xianshiAll(struct stu *contacts, int size) {
        for (int i = 0; i < size; i++) {
            xianshi(contacts[i]);
            printf("\n"); // 联系人之间空一行
        }
    }
    
    int main() {
        int count;
        printf("请输入想要添加的联系人数量:");
        scanf("%d", &count);
    
        struct stu *contacts = (struct stu *)malloc(count * sizeof(struct stu));
        if (contacts == NULL) {
            fprintf(stderr, "内存分配失败\n");
            return 1;
        }
    
        for (int i = 0; i < count; i++) {
            xinjian(&contacts[i]);
        }
    
        xianshiAll(contacts, count);
    
        free(contacts);
        return 0;
    }
    

    代码运行方式

    • 您需要一个C语言的编译器,如GCC。
    • 将上述代码保存为.c文件,例如contact_manager.c
    • 在命令行中使用编译器编译代码,例如:gcc contact_manager.c -o contact_manager
    • 运行编译后的程序,例如在Linux或macOS上使用./contact_manager,在Windows上使用contact_manager.exe

    代码预期运行结果

    请输入想要添加的联系人数量:3
    名字:张三
    单位:(用户输入)
    ...
    名字:李四
    单位:(用户输入)
    ...
    名字:王五
    单位:(用户输入)
    ...
    名字:张三
    单位:(用户输入的单位)
    固定电话:(用户输入的固定电话)
    移动手机:(用户输入的移动手机)
    分类:(用户输入的分类)
    EMAIL: (用户输入的电子邮件)
    QQ: (用户输入的QQ号码)
    
    名字:李四
    单位:(用户输入的单位)
    ...
    

    推荐相关链接

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 创建了问题 5月22日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗