从键盘上输入多个字符串 (每个串不超过6个字符且没有空格),用”####”作为串输入结束的标记。从所输入的若干字符串中,找出一个最小的串,并输出该串。要求最小串的查找通过调用编写的函数实现 void find(char *name , int n, int *p) //在包含n个字符串的二维字符数组name中,查找值最小的字符串,将其下标存入指针p所指内存单元 输入行输入一个字符串,输入多行 输出输出一个字符串,单独占一行。
时间: 2024-02-15 21:01:24 浏览: 68
好的,下面是一个示例代码,可以实现您的要求:
```c
#include <stdio.h>
#include <string.h>
void find(char *name[], int n, int *p);
int main() {
// 定义字符串数组,存储多个字符串
char *names[100];
int n = 0;
// 从键盘上输入多个字符串,以 "####" 结束
printf("请输入多个字符串,以 #### 结束:\n");
while (1) {
char *name = malloc(7 * sizeof(char));
scanf("%s", name);
if (strcmp(name, "####") == 0) {
free(name);
break;
}
names[n++] = name;
}
// 查找值最小的字符串
int index;
find(names, n, &index);
// 输出最小的字符串
printf("最小的字符串是:%s\n", names[index]);
// 释放内存
for (int i = 0; i < n; i++) {
free(names[i]);
}
return 0;
}
void find(char *name[], int n, int *p) {
*p = 0;
for (int i = 1; i < n; i++) {
if (strcmp(name[i], name[*p]) < 0) {
*p = i;
}
}
}
```
输入多个字符串后,程序会调用 `find` 函数查找值最小的字符串,并输出该字符串。`find` 函数中使用了字符串的比较函数 `strcmp` 进行比较,找到最小的字符串后将其下标存入指针 `p` 所指的内存单元中。
需要注意的是,在输入字符串时,需要使用动态内存分配函数 `malloc` 分配内存空间,以便在程序结束时能够释放内存,避免内存泄漏。在程序中,使用循环遍历字符串数组并调用 `free` 函数释放内存。
输出结果示例如下:
```
请输入多个字符串,以 #### 结束:
abc
def
ghi
jkl
####
最小的字符串是:abc
```
可以看到,程序输出了输入的多个字符串中最小的字符串,即 `abc`。
阅读全文