题目:编写程序,从键盘输入3个字符串,分别存入字符数组r,s和t中(数组大小为20),比较字符串大小,将最大字符串存于字符数组m中(数组大小为20)并输出。
时间: 2024-10-23 12:09:22 浏览: 20
要完成这个题目,你可以按照以下步骤编写C语言程序:
1. 定义字符数组 `r`, `s`, `t`, 和 `m`,它们的大小为20个字符,用于存储输入的字符串以及最终的结果。
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 20
char r[MAX_LENGTH], s[MAX_LENGTH], t[MAX_LENGTH], m[MAX_LENGTH];
```
2. 使用 `scanf` 函数从键盘读取三个字符串。
```c
printf("请输入第一个字符串:");
fgets(r, MAX_LENGTH, stdin);
printf("请输入第二个字符串:");
fgets(s, MAX_LENGTH, stdin);
printf("请输入第三个字符串:");
fgets(t, MAX_LENGTH, stdin);
```
注意:使用 `fgets` 可能会导致换行符('\n')进入字符串,所以在比较前可能需要去除换行符。
3. 比较字符串长度并找到最长的字符串。这里我们可以用 `strlen` 函数获取字符串长度,并进行循环遍历。
```c
size_t max_length = 0;
int current_index = 0;
if (strlen(r) > strlen(s)) {
if (strlen(r) > strlen(t)) {
max_length = strlen(r);
strcpy(m, r);
} else {
max_length = strlen(t);
strcpy(m, t);
}
} else {
if (strlen(s) > strlen(t)) {
max_length = strlen(s);
strcpy(m, s);
} else {
max_length = strlen(t);
strcpy(m, t);
}
}
```
4. 最后,打印出最大的字符串。
```c
printf("最长的字符串是:%s\n", m);
```
5. 结合以上代码,完整的程序看起来像这样:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 20
char r[MAX_LENGTH], s[MAX_LENGTH], t[MAX_LENGTH], m[MAX_LENGTH];
int main() {
printf("请输入第一个字符串:");
fgets(r, MAX_LENGTH, stdin);
r[strcspn(r, "\n")] = '\0'; // 去除换行符
printf("请输入第二个字符串:");
fgets(s, MAX_LENGTH, stdin);
s[strcspn(s, "\n")] = '\0';
printf("请输入第三个字符串:");
fgets(t, MAX_LENGTH, stdin);
t[strcspn(t, "\n")] = '\0';
size_t max_length = 0;
int current_index = 0;
if (strlen(r) > strlen(s)) {
if (strlen(r) > strlen(t)) {
max_length = strlen(r);
strcpy(m, r);
} else {
max_length = strlen(t);
strcpy(m, t);
}
} else {
if (strlen(s) > strlen(t)) {
max_length = strlen(s);
strcpy(m, s);
} else {
max_length = strlen(t);
strcpy(m, t);
}
}
printf("最长的字符串是:%s\n", m);
return 0;
}
```
阅读全文