思路:

  1. 定义一个字符数组二维数组name用于存储输入的字符串,同时定义一个计数器n记录输入的字符串个数;
  2. 通过循环输入字符串,直到输入'####'为止;
  3. 调用find函数查找最小的字符串,并将其下标存入指针p所指内存单元;
  4. 输出最小的字符串。

代码实现如下:

#include <stdio.h>
#include <string.h>

void find(char *name[], int n, int *p);

int main()
{
    char name[6][31]; // 二维字符数组,最多存储6个字符串,每个字符串不超过30个字符
    int n = 0; // 计数器,记录输入的字符串个数
    char tmp[31]; // 临时存储输入的字符串
    int p; // 存储最小字符串的下标

    // 输入字符串
    while (1)
    {
        scanf('%s', tmp);
        if (strcmp(tmp, '####') == 0) // 输入'####'则结束输入
            break;
        strcpy(name[n], tmp); // 将输入的字符串复制到name数组中
        n++; // 计数器加1
    }

    find(name, n, &p); // 查找最小的字符串

    printf('%s\n', name[p]); // 输出最小的字符串

    return 0;
}

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) // 如果第i个字符串比当前最小的字符串还小
            *p = i; // 更新最小字符串的下标
    }
}
C语言查找字符串数组中最小字符串 - 代码示例

原文地址: http://www.cveoy.top/t/topic/ojI9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录