C语言解决题目描述 小明的课外班上有 N � 个同学,每个同学的名字长度都不一样。请找出班上名字长度最长的同学。 输入 输入第一行为班级同学数量 N � 。(0≤N≤20) ( 0 ≤ � ≤ 20 ) 接下来 N � 行每行是一个同学的名字(中间没有空格,长度小于 100 100 )。 输出 输出一行,为名字最长的同学的名字。
时间: 2024-03-10 14:47:05 浏览: 237
以下是使用 C 语言编写的解题代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
int n, max_len = 0;
char name[100], max_name[100];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", name);
if (strlen(name) > max_len) {
max_len = strlen(name);
strcpy(max_name, name);
}
}
printf("%s", max_name);
return 0;
}
```
解题思路:
首先,我们需要用一个变量来存储班级同学的数量,这里设置为 `n`。接下来,我们需要定义两个字符数组变量,一个用来存储每个同学的名字,另一个用来存储名字最长的同学的名字。因为题目中明确说明了每个同学的名字长度都小于 100,所以我们可以设置字符数组长度为 100。
在程序的主函数中,我们首先读取班级同学的数量 `n`。然后,我们使用一个循环来读取每个同学的名字。在循环中,我们使用 `scanf()` 函数读取每个同学的名字,并使用 `strlen()` 函数获取该同学名字的长度。如果该同学名字的长度大于当前最长名字长度 `max_len`,则更新 `max_len` 和 `max_name` 变量的值。最后,输出名字最长的同学的名字即可。
需要注意的是,使用 `scanf()` 函数读取字符串时,如果字符串中包含空格,则只会读取空格前的部分。因此,本题中每个同学的名字中间没有空格,可以直接使用 `scanf("%s", name)` 读取。如果字符串中包含空格,可以使用 `fgets()` 函数来读取字符串。
阅读全文