用C++语言写 字符串排序与查找。
时间: 2024-05-11 19:14:19 浏览: 12
以下是一个简单的字符串排序和查找程序,使用C语言编写:
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100 // 定义最大字符串长度
void sortStrings(char (*strings)[MAX_LEN], int numStrings);
void printStrings(char (*strings)[MAX_LEN], int numStrings);
int searchStrings(char (*strings)[MAX_LEN], int numStrings, char* searchStr);
int main()
{
char strings[5][MAX_LEN] = {"hello", "world", "apple", "banana", "orange"};
int numStrings = 5;
printf("Original strings:\n");
printStrings(strings, numStrings);
sortStrings(strings, numStrings);
printf("\nSorted strings:\n");
printStrings(strings, numStrings);
char searchStr[MAX_LEN];
printf("\nEnter a string to search for: ");
scanf("%s", searchStr);
int index = searchStrings(strings, numStrings, searchStr);
if (index != -1) {
printf("%s found at index %d.\n", searchStr, index);
} else {
printf("%s not found.\n", searchStr);
}
return 0;
}
// 排序字符串数组
void sortStrings(char (*strings)[MAX_LEN], int numStrings)
{
char temp[MAX_LEN];
int i, j;
for (i = 0; i < numStrings-1; i++) {
for (j = i+1; j < numStrings; j++) {
if (strcmp(strings[i], strings[j]) > 0) {
strcpy(temp, strings[i]);
strcpy(strings[i], strings[j]);
strcpy(strings[j], temp);
}
}
}
}
// 打印字符串数组
void printStrings(char (*strings)[MAX_LEN], int numStrings)
{
int i;
for (i = 0; i < numStrings; i++) {
printf("%s\n", strings[i]);
}
}
// 查找字符串在字符串数组中的索引
int searchStrings(char (*strings)[MAX_LEN], int numStrings, char* searchStr)
{
int i;
for (i = 0; i < numStrings; i++) {
if (strcmp(strings[i], searchStr) == 0) {
return i;
}
}
return -1;
}
```
该程序定义了一个字符串数组和一个最大字符串长度常量。它包含三个函数:sortStrings(用于排序字符串数组),printStrings(用于打印字符串数组)和searchStrings(用于在字符串数组中查找给定字符串并返回其索引)。
在main函数中,我们首先打印原始字符串,然后对字符串进行排序并打印排序后的字符串。然后要求用户输入一个字符串来搜索,程序将返回该字符串在数组中的索引(如果找到)。
我们使用strcmp函数来比较字符串,并使用strcpy函数来复制字符串。在sortStrings函数中,我们使用两个嵌套的循环来比较和交换字符串,以便进行排序。在searchStrings函数中,我们使用一个循环来遍历整个数组,并使用strcmp函数来比较每个字符串是否与搜索字符串匹配。如果找到匹配项,则返回该字符串的索引。如果未找到匹配项,则返回-1。