题目
- 求一个字符串数组的最大值和次大值 void big(char arr[],int size ,char* big11,char** big22)
思路
- 在main函数定义字符指针数组char* arr[5]={“wangdao”,”fenghua”,”xianyu”,”loulou”,”longge”} ,还有char* big1,char* big2,把&big1和&big2传递给big函数,最终big函数执行结束后,big1指向最大字符串,big2指向次大字符串
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//找到最大字符串和次大字符串
void big(char **arr,int size ,char** big11,char** big22)
{
int i;
//把arr[0]和arr[1]中比较大的赋值给*big11
*big11=strcmp(arr[0],arr[1])>0?arr[0]:arr[1];
*big22=strcmp(arr[0],arr[1])<=0?arr[0]:arr[1];
for(i=2;i<size;i++)
{
if(strcmp(arr[i],*big11)>0)//某个字符串大于最大的字符串
{
*big22=*big11;//原来的最大就变为次大
*big11=arr[i];//arr[i]变为最大
}else if(strcmp(arr[i],*big22)>0)
{
*big22=arr[i];//arr[i]比次大的要大,就成为次大
}
}
}
void find_max()
{
char *parr[5]={"wangdao","fenghua","xianyu","loulou","longge"};
char *big1;
char *big2;
big(parr,5,&big1,&big2);
printf("big1=%s,big2=%s\n",big1,big2);
}
int main()
{
find_max();
system("pause");
}执行结果

京公网安备 11010502036488号