c语言 链表编程题,一道关于结构体和单向链表的C语言编程题求助各位大佬!!!...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

最近,Kale发现他的手机地址簿不能添加新朋友的电话号码。他转而寻求你的帮助,因为他知道你正在学习高级编程语言。为了帮助他,你需要根据以下要求设计一个新的手机通讯录。

由于其庞大的社交圈,应该使用动态记忆结构。他经常结交新朋友,但也删除那些很久没有听过的人的电话号码。但是,如果他们的电话号码被删除,重新联系Kale,他想把他们的电话号码添加到电话地址簿中。

注意事项: Kale的原始电话簿包括姓名和电话号码组,名称表示为长度不超过20的字符串;同样,电话号码表示为字符串,其长度不超过20。姓名和电话号码没有额外的空间字符。

为了满足Kale的要求,你应该把操作包括如下:

在B后面插入一个Num:A,B是名字,Num是A的电话号码。如果A已经在电话地址簿中,那么更新A的号码 删除A:从地址簿中删除好友A(如果列表中没有A,则什么也不做)。

为了验证你的程序,有必要设计如下操作:

打印:按顺序输出整个地址簿(输出所有好友的姓名和电话号码,一次分隔一个空间)

要求:这个实验必须用链表来实现。

输入数据的格式:从第一行到结束:每行是一个操作,你应该依次执行它们。

终结符:“End”表示输入的终止。

输出数据的格式: 每个操作需要用一行输出输出。

Input:

Insert LiLei 14068888 behind Nobody

Insert Joker 04517999 behind LiLei

Insert Healer 987213 behind Joker

Print

Delete LiLei

Print

End

Output:

LiLei 14068888

Joker 04517999

Healer 987213

Joker 04517999

Healer 987213

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 不使用结构体、指针链表结构体数组,可以使用简单的数组来存储学生信息和成绩,下面是一个示例代码: ``` #include <stdio.h> #define MAX_STUDENTS 100 int main() { int num_students, i; char names[MAX_STUDENTS][50]; int scores[MAX_STUDENTS]; printf("Enter the number of students: "); scanf("%d", &num_students); for (i = 0; i < num_students; i++) { printf("Enter the name of student %d: ", i+1); scanf("%s", names[i]); printf("Enter the score of student %d: ", i+1); scanf("%d", &scores[i]); } printf("\nStudent Scores:\n"); for (i = 0; i < num_students; i++) { printf("%s: %d\n", names[i], scores[i]); } return 0; } ``` 该示例代码中,使用二维字符数组 `names` 存储学生姓名,一维整数数组 `scores` 存储学生成绩。在输入学生信息时,依次输入学生姓名和成绩,分别存储到相应的数组中。最后输出学生信息时,遍历数组,依次输出姓名和成绩即可。 ### 回答2: 在不使用结构体、指针链表结构体数组的情况下,可以使用简单的数组和函数来实现C语言成绩管理系统。 一种可能的实现方式是,可以定义两个一维数组,一个用于存储学生的姓名,一个用于存储学生成绩。数组的大小可以根据实际情况进行调整。 然后,可以编写一些函数来实现不同的功能,比如添加学生信息、删除学生信息、查询学生成绩等。 例如,假设最多可以存储100个学生的信息,可以定义以下数组: ``` char names[100][50]; // 用于存储学生姓名 float scores[100]; // 用于存储学生成绩 int count = 0; // 记录当前已存储的学生数量 ``` 下面是一些可能用到的功能函数的伪代码: 1. 添加学生信息: ```C void addStudent(char name[], float score) { if (count < 100) { // 将姓名和成绩分别存储到对应的数组中 strcpy(names[count], name); scores[count] = score; count++; printf("添加成功!\n"); } else { printf("无法添加,学生数量已达到上限!\n"); } } ``` 2. 删除学生信息: ```C void deleteStudent(char name[]) { int index = -1; for (int i = 0; i < count; i++) { if (strcmp(names[i], name) == 0) { index = i; break; } } if (index >= 0) { for (int i = index; i < count - 1; i++) { strcpy(names[i], names[i + 1]); scores[i] = scores[i + 1]; } count--; printf("删除成功!\n"); } else { printf("未找到该学生信息!\n"); } } ``` 3. 查询学生成绩: ```C void queryScore(char name[]) { int index = -1; for (int i = 0; i < count; i++) { if (strcmp(names[i], name) == 0) { index = i; break; } } if (index >= 0) { printf("%s的成绩是%.2f\n", names[index], scores[index]); } else { printf("未找到该学生信息!\n"); } } ``` 这只是一个简单的示例,实际上还可以根据需求添加其他功能函数。需要注意的是,由于没有使用结构体和指针链表,需要手动维护数组的顺序和数量。 ### 回答3: 如果不使用结构体、指针链表结构体数组,我们可以考虑使用基本的变量和数组来实现C语言成绩管理系统。 首先,我们可以使用一个二维数组来保存学生的成绩信息。假设有n个学生和m门课程,那么我们可以定义一个n行m列的二维数组来存储成绩。例如,用scores[n][m]来表示。 然后,我们可以使用一个一维数组来保存每个学生的姓名。例如,用names[n]来表示。 接下来,我们可以通过循环来输入学生的成绩和姓名,将它们分别保存到相应的数组中。我们可以使用for循环来遍历每个学生和每门课程,然后使用scanf函数来输入成绩。同样地,我们可以使用for循环来输入学生的姓名。 在输入完成绩和姓名后,我们可以进行一些简单的操作,比如计算每个学生的总分和平均分,以及每门课程的平均分。 最后,我们可以使用循环来输出学生的成绩和相关统计信息,比如总分和平均分。同样地,我们可以使用循环来输出每门课程的平均分。 需要注意的是,不使用结构体、指针链表结构体数组可能会增加代码的复杂度和可读性。这种方法适用于简单的学生成绩管理系统,但对于更复杂的情况,使用结构体、指针链表结构体数组会更加方便和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值