用c语言编写程序,功能是将键盘上输入的n个字符串中找出最长的那个字符串并输出
时间: 2024-12-10 12:47:20 浏览: 47
C语言第9章_z字符串
在C语言中,要编写一个程序来找出用户输入的n个字符串中最长的一个,你可以采用动态内存分配、数组存储和遍历的方式来实现。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STRINGS 10 // 定义最多可以输入的字符串数
void find_longest_string(char** strings, int n) {
char longest[MAX_STRINGS][100]; // 存储字符串的数组
int max_len = 0; // 最大长度
// 输入字符串并更新最大长度
for (int i = 0; i < n && max_len < MAX_STRINGS; i++) {
printf("请输入第 %d 个字符串: ", i + 1);
fgets(longest[i], sizeof(longest[i]), stdin); // fgets用于读取直到换行符
longest[i][strlen(longest[i]) - 1] = '\0'; // 清理末尾的换行符
if (strlen(longest[i]) > max_len)
max_len = strlen(longest[i]);
}
// 打印最长的字符串
if (max_len != 0) {
printf("最长的字符串是: ");
for (int i = 0; i < max_len; i++) {
printf("%c", longest[0][i]);
}
printf("\n");
} else {
printf("未输入任何有效字符串。\n");
}
}
int main() {
int num_strings;
printf("请输入你要输入的字符串数量(1-%d): ", MAX_STRINGS);
scanf("%d", &num_strings);
char** string_array = (char**)malloc(num_strings * sizeof(char*)); // 动态分配内存
if (string_array == NULL) {
printf("内存分配失败!\n");
return 1;
}
for (int i = 0; i < num_strings; i++) {
string_array[i] = (char*)malloc(sizeof(char) * 100); // 内存按每个字符串100字节分配
}
find_longest_string(string_array, num_strings);
// 释放内存
for (int i = 0; i < num_strings; i++)
free(string_array[i]);
free(string_array);
return 0;
}
```
阅读全文