题目

  1. 求一个字符串数组的最大值和次大值 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");
}

执行结果
图片说明