从键盘上输入多个字符串(每个串不超过6个字符且没有空格,用"####作为输入结束的标记。从所输入的若于字符串中,找出一个最小的串5.(程序题20.0分)并输出该串。要求最小串的查找通过调用编写的函数实现 void find(char *namell, int n, int *p)//在包含n个字符串的二维字符数组name中,查找值最小的字符串,将其下标存入指针p所指内存单元输入一行输入一个字符串,输入多行输出输出一个字符串,单独占一行。
时间: 2024-02-15 19:01:33 浏览: 65
以下是一个实现此功能的示例程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 1000
#define MAX_M 6
void find(char names[][MAX_M+1], int n, int *p);
int main(void) {
char names[MAX_N][MAX_M+1]; // 存储输入的字符串
int n = 0; // 输入的字符串数量
char temp[MAX_M+1]; // 临时存储输入的字符串
// 从键盘输入多个字符串
printf("请输入多个不超过6个字符且没有空格的字符串,以####结束:\n");
while (1) {
scanf("%s", temp);
if (strcmp(temp, "####") == 0) {
break;
}
strcpy(names[n++], temp);
}
// 查找最小的长度为5的字符串
int min_index = -1;
find(names, n, &min_index);
// 输出结果
if (min_index == -1) {
printf("未找到符合要求的字符串。\n");
} else {
printf("最小的长度为5的字符串是:%s\n", names[min_index]);
}
return 0;
}
void find(char names[][MAX_M+1], int n, int *p) {
*p = -1;
int min_len = MAX_M+1; // 记录最小的长度,初始化为一个大于6的数
for (int i = 0; i < n; i++) {
int len = strlen(names[i]);
if (len == 5 && strcmp(names[i], "#####") != 0) { // 如果找到了一个符合要求的字符串
*p = i;
return;
} else if (len < min_len && len >= 5) { // 如果找到了一个更小的字符串
min_len = len;
*p = i;
}
}
}
```
程序的基本思路是:先从键盘输入多个字符串,然后通过调用 `find` 函数查找最小的长度为5的字符串,并输出结果。
阅读全文