中心思想:传参时传一个指针数组,指针数组中每个元素指示一个字符串;
1.采用冒泡排序的方法对这些字符串重新排序(从大到小),最后输出第一个和第二个字符串即可;(注:由于这些字符串已经存储在内存的常量区,无法更改,所以要设置一个指针数组,每个指针数组指向一个字符串,用交换指针数组中指针的顺序来实现字符串的重新排序)
2.不对字符串数组进行修改,直接用两个辅助指针变量来记录最大和次大的位置;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void search_max_bubble(char *str[],int size) {//传入一个指针数组以及指针数组中元素的个数
//冒泡排序对字符串实现重新排列
char *t;
for (int i = 0; i < size-1; ++i) {
for (int j = size - 1; j > i; --j) {
if (strcmp(str[j], str[j-1 ])>0) {
t = str[j];
str[j] = str[j - 1];
str[j - 1] = t;
}
}
}
puts(str[0]);
puts(str[1]);
}
void search_big(char *str[],int size) {
char *big1 = strcmp(str[0], str[1]) > 0 ? str[0] : str[1];
char *big2 = strcmp(str[0], str[1]) > 0 ? str[1] : str[0];
for (int i = 2; i < size; ++i) {
if (strcmp(str[i], big1) > 0) {
big1 = str[i];
}
else if(strcmp(str[i], big2) > 0) {
big2 = str[i];
}
}
puts(big1);
puts(big2);
}
int main() {
char *pointer[5];
char array[5][11] = { "apple","orange","banana","strawberry","peach"};
for (int i = 0; i < 5; ++i) {
pointer[i] = array[i];
}
//search_max_bubble(pointer, 5);
search_big(pointer,5);
}