C 语言程序:查找字符串数组中的最小字符串
这是一个 C 语言程序,它从标准输入中读取一些字符串,找到其中字典序最小的字符串并输出。程序使用了动态内存分配来存储输入的字符串,以及一个函数来查找最小的字符串。
程序的主要流程如下:
-
定义一个字符串数组 'strings' 和一个整数 'i',用来存储输入的字符串和统计字符串个数。
-
在一个无限循环中,每次读取一个字符串,如果该字符串为 '####',则跳出循环,否则动态分配存储空间,将该字符串复制到数组中,并将计数器 'i' 加 1。
-
定义一个整数 'index',用来存储最小串在数组中的下标,初始值为 -1。
-
调用函数 'find' 查找最小串的下标,并将结果存储到 'index' 中。
-
输出最小串 'strings[index]'。
-
释放动态分配的存储空间。
函数 'find' 的作用是找到数组 'name' 中字典序最小的字符串的下标,并将结果存储到指针变量 'p' 中。函数的实现很简单,就是遍历数组中的每个字符串,如果该字符串比当前最小字符串的字典序小,则更新最小字符串的下标。
void find(char *name[], int n, int *p);
int main() { char str[7]; char *strings[100]; int i = 0; while (1) { scanf('%s', str); if (strcmp(str, '####') == 0) break; strings[i] = malloc(sizeof(char) * 7); // 动态分配存储空间 strcpy(strings[i], str); // 复制字符串 i++; } int index = -1; find(strings, i, &index); // 调用函数查找最小串 printf('%s
', strings[index]); // 输出最小串 for (int j = 0; j < i; j++) { free(strings[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; // 找到值最小的字符串的下标 }
原文地址: https://www.cveoy.top/t/topic/ojLq 著作权归作者所有。请勿转载和采集!