用c语言完成以下内容5. (程序题, 20.0分)从键盘上输入多个字符串(每个串不超过6个字符且没有空格),用”####”作为串输入结束的标记。从所输入的若干字符串中,找出一个最小的串,并输出该串。要求最小串的查找通过调用编写的函数实现 void find(char *name[], int n, int *p) { //在包含n个字符串的二维字符数组name中,查找值最小的字符串,将其下标存入指针p所指内存单元 } 输入 一行输入一个字符串,输入多行 输出 输出一个字符串,单独占一行。
时间: 2024-02-15 19:01:21 浏览: 63
以下是用C语言实现的程序:
```
#include <stdio.h>
#include <string.h>
void find(char *name[], int n, int *p);
int main() {
char *names[100];
char input[7];
int i = 0;
printf("请输入多个字符串,每个字符串不超过6个字符,以####结束输入:\n");
while (1) {
scanf("%s", input);
if (strcmp(input, "####") == 0) {
break;
}
names[i] = (char*)malloc(sizeof(char) * (strlen(input) + 1));
strcpy(names[i], input);
i++;
}
int min_index;
find(names, i, &min_index);
printf("最小的字符串为:%s\n", names[min_index]);
for (int j = 0; j < i; j++) {
free(names[j]);
}
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;
}
}
}
```
程序的运行流程如下:
1. 定义一个字符指针数组names,用于存储输入的字符串。
2. 输入多个字符串,每个字符串不超过6个字符,以####结束输入,并将其存储到names数组中。
3. 调用find函数,查找最小的字符串并将其下标存入min_index变量中。
4. 输出最小的字符串。
5. 释放names数组中每个字符串所占用的空间。
其中,find函数用于查找最小的字符串,采用了简单的遍历法。首先将p指向第一个字符串,然后从第二个字符串开始遍历,如果当前字符串比p所指向的字符串小,则将p指向当前字符串。最终,p所指向的字符串即为最小的字符串。
阅读全文