用c语言编写一个程序输入5个国名(每个国名最长80个字符,换行符隔开), 找出并输出按字典顺序排在最前面的国名 要求: (1)用gets输入字符串。 (2)输出格式为:"The minimum is:%s\n" 提示:使用strcmp函数判断两个字符串的字典序相对大小
时间: 2024-02-12 16:04:37 浏览: 21
好的,下面是符合您要求的 C 语言程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 80 // 国名最大长度
int main()
{
char country[5][MAX_LEN+1]; // 存储国名的二维字符数组
char min_country[MAX_LEN+1]; // 存储最小的国名
int i;
// 循环输入5个国名
for (i = 0; i < 5; i++) {
gets(country[i]);
}
// 找出最小的国名
strcpy(min_country, country[0]);
for (i = 1; i < 5; i++) {
if (strcmp(country[i], min_country) < 0) {
strcpy(min_country, country[i]);
}
}
// 输出最小的国名
printf("The minimum is:%s\n", min_country);
return 0;
}
```
解释一下代码的实现过程:
1. 定义了常量 `MAX_LEN` 表示国名的最大长度。
2. 声明了一个二维字符数组 `country`,用来存储输入的 5 个国名。
3. 声明了一个字符数组 `min_country`,用来存储最小的国名。
4. 循环输入 5 个国名,使用 `gets` 函数读取用户输入的字符串,存储到 `country` 数组中。
5. 使用 `strcpy` 函数将 `country` 数组中的第一个国名复制给 `min_country`,作为初始的最小值。
6. 循环遍历 `country` 数组中的每个国名,使用 `strcmp` 函数比较字典序大小,如果当前国名比 `min_country` 更小,则将当前国名复制给 `min_country`。
7. 输出最小的国名,使用 `printf` 函数按照要求的格式输出。
希望可以解答您的问题。