从键盘上输入多个字符串(每个串不超过6个字符且没有空格),用”####”作为串输入结束的标记。从所输入的若干字符串中,找出一个最小的 串,并输出该串。要求最小串的查找通过调用编写的 函数实现 void find(char *name[], int n, int *p) //在包含n个字符串的二维字符数组name中,查找值 最小的字符串,将其下标存入指针p所指内存单元 一 输入 34070857 一行输入一个字符串,输入多行 输出 输出一个字符串,单独占一行。
时间: 2024-02-13 18:07:53 浏览: 81
以下是实现该函数的示例代码:
```c
#include <stdio.h>
#include <string.h>
void find(char *name[], int n, int *p) {
int i;
*p = 0;
for (i = 1; i < n; i++) {
if (strcmp(name[i], name[*p]) < 0) {
*p = i;
}
}
}
int main() {
char names[100][7];
int count = 0;
int i, min_index;
while (1) {
scanf("%6s", names[count]);
if (strcmp(names[count], "####") == 0) {
break;
}
count++;
}
find(names, count, &min_index);
printf("%s\n", names[min_index]);
return 0;
}
```
以上程序会先读入多个字符串,直到输入"####"为止。然后调用find函数查找最小的字符串,并输出结果。注意在输入字符串时使用了scanf函数的格式化输入,限定了每个字符串不超过6个字符。
相关问题
从键盘上输入多个字符串(每个串不超过6个字符且没有空格) ,用"#"作为串输入结束的标记。从所输入的若干字符串中,找出一个最小的串,并输出该串。要求最小串的查找通过调用编写的函数实现 查找(char *name[], int *n, int *p)
好的,我理解了你的问题。以下是解答:
首先,我们可以通过循环读取输入的多个字符串,并将它们存储在一个字符数组中,直到读取到 "#" 为止。这里使用 fgets 函数来读取字符串,并去掉字符串中的换行符。
接着,我们调用编写的函数来查找最小的串。该函数的参数是一个字符串指针数组 name,数组中的字符串是输入的多个串,参数 n 是字符串指针数组的元素个数,参数 p 是一个指向整数变量的指针,该变量用来存储最小串在数组中的下标。该函数的返回值是最小串的长度。
最后,我们输出最小串即可。
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
int find_min(char *name[], int *n, int *p) {
int min_len = strlen(name[0]);
*p = 0;
for (int i = 1; i < *n; i++) {
int len = strlen(name[i]);
if (len < min_len) {
min_len = len;
*p = i;
}
}
return min_len;
}
int main() {
char name[100][7];
int n = 0;
while (1) {
fgets(name[n], 7, stdin);
if (name[n][0] == '#') {
break;
}
name[n][strlen(name[n])-1] = '\0';
n++;
}
int p;
int min_len = find_min(name, &n, &p);
printf("最小串为:%s\n", name[p]);
return 0;
}
```
当输入如下字符串时:
```
abc
defg
hij
klm
#
```
程序输出:
```
最小串为:abc
```
用指针编程,从键盘上输入多个字符串(每个串不超过5个字符且没有空格),用”*****”作为输入结束的标记。从所输入的若干字符串中,找出一个最大的串(按字典序),并输出该串。要求串的输入以及最大串的查找
可以使用指针编程,从键盘上输入多个字符串,每个串不超过5个字符且没有空格,以”*****”作为输入结束的标记。然后从所输入的若干字符串中,找出一个最大的串(按字典序),并输出该串。需要注意的是,串的输入以及最大串的查找都需要使用指针来实现。
阅读全文