【无标题】

题目描述

依次给你n个学生的姓名、学号,然后Q次询问,对于每一次询问你会得到一个学号,请你输出该学号对应的姓名。

输入

第一行输入一个整数n(1<=n<=100),然后n行,每行输入一个长度不超过15的字符串s,表示姓名和一个10位整数,表示学号。(学号保证没有前导零且每个学号都不相同) 再输入一个整数Q(0<=Q<=10),紧接着Q次询问,每次询问输入一个10位整数,表示询问的学号。(保证询问的学号存在)

输出

对于每一次询问输出与学号对应的姓名。

样例

输入 Copy 5 Anoyer 1000000000 LZH 1314521520 ZZ 9876543210 zhangfei 1234567890 ayi 5432198760 2 1314521520 1000000000

输出 Copy LZH Anoyer

来源/分类

结构体


题解

以下是一个基本的 C 语言程序,用于实现所描述的功能:

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

#define MAX_N 100
#define ID_LENGTH 11

/* 定义学生结构体 */
struct student {
char name[16];
char id[ID_LENGTH];
};

int main() {
int n, q, i, j;
struct student students[MAX_N];

/* 读入学生信息 */
scanf("%d", &amp;n);
for (i = 0; i &lt; n; i++) {
    scanf("%s %s", students[i].name, students[i].id);
}

/* 处理查询请求 */
scanf("%d", &amp;q);
for (i = 0; i &lt; q; i++) {
    char query[ID_LENGTH];
    scanf("%s", query);

    /* 在学生列表中查找该学号对应的姓名 */
    for (j = 0; j &lt; n; j++) {
        if (strcmp(students[j].id, query) == 0) {
            printf("%s\n", students[j].name);
            break;
        }
    }
}

return 0;

}

程序首先定义了一个结构体 student,表示一个学生的信息。该结构体包含两个成员变量:name 表示学生姓名,类型为字符数组,长度为 16;id 表示学生学号,类型为字符数组,长度为 11。

然后程序读入了一个整数 n,表示学生数量。接下来的 n 行每行输入一个字符串 s,即学生姓名和学号,其中姓名和学号用一个空格分隔。程序将读入的学生信息存储在一个长度为 n 的结构体数组 students 中。

接着程序读入一个整数 q,表示查询请求的数量。程序使用一个循环处理每个查询请求:首先读入一个字符串 query,表示要查询的学号;然后在学生列表中查找该学号对应的姓名,并输出结果。如果在列表中没有找到对应的学号,则程序不会输出任何内容。

注意,在本程序中,我们使用了 C 语言标准库中的 strcmp 函数来比较两个字符串是否相等。该函数返回值为 0 表示两个字符串相等。

问题描述

本题C链表结构体定义如下 struct lis{ int v; struct lis* next; }; typedef struct lis* Lis; 要求实现函数 int sum(Lis head)//返回以head为头指针(本身不存值)的链表各个结点值的和输入 一个数n,代表链表的长度 接下来n个数ai,代表每个节点的内容

n与ai范围[1,100]
输出
一行和

样例

样例输入 Copy 3 1 2 3 样例输出 Copy 6


下面是一个实现题目要求的 C 语言函数 sum 的代码:

int sum(Lis head) {
    int sum = 0;
    Lis curr = head->next;
    while (curr != NULL) {
        sum += curr->v;
        curr = curr->next;
    }
    return sum;
}

该函数计算以参数 head 所指向的链表头结点为头节点的链表中各个结点值的和,并将结果作为返回值返回。其中,参数 head 是一个指向链表头节点的指针,链表的每个节点由结构体 lis 表示,其中 v 成员变量存储该节点的值,next 成员变量存储指向下一个节点的指针。

在代码中,我们首先将变量 sum 初始化为 0,然后从链表的第二个节点开始遍历整个链表。遍历过程中,对于每个节点,我们将其值加到 sum 中,然后继续遍历下一个节点。当遍历到链表尾部时,我们退出循环并返回 sum

需要注意的是,在链表中,头结点本身不存储任何实际数据,仅用于标记链表的起始位置。因此,我们在遍历链表时应从头结点的 next 指针所指向的节点开始遍历。

问题描述

本题C链表结构体定义如下 struct lis{ int v; struct lis* next; }; typedef struct lis* Lis; 要求实现函数 int sum(Lis head)//返回以head为头指针(本身不存值)的链表各个结点值的和输入 一个数n,代表链表的长度 接下来n个数ai,代表每个节点的内容

n与ai范围[1,100]
输出
一行和

样例

样例输入 Copy 3 1 2 3 样例输出 Copy 6


下面是一个实现题目要求的 C 语言函数 sum 的代码:

int sum(Lis head) {
    int sum = 0;
    Lis curr = head->next;
    while (curr != NULL) {
        sum += curr->v;
        curr = curr->next;
    }
    return sum;
}

该函数计算以参数 head 所指向的链表头结点为头节点的链表中各个结点值的和,并将结果作为返回值返回。其中,参数 head 是一个指向链表头节点的指针,链表的每个节点由结构体 lis 表示,其中 v 成员变量存储该节点的值,next 成员变量存储指向下一个节点的指针。

在代码中,我们首先将变量 sum 初始化为 0,然后从链表的第二个节点开始遍历整个链表。遍历过程中,对于每个节点,我们将其值加到 sum 中,然后继续遍历下一个节点。当遍历到链表尾部时,我们退出循环并返回 sum

需要注意的是,在链表中,头结点本身不存储任何实际数据,仅用于标记链表的起始位置。因此,我们在遍历链表时应从头结点的 next 指针所指向的节点开始遍历。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kaixin_啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值