查找最大元素

解法一

#include <iostream>

#include <cstdio>

#include <algorithm>

#include <string.h>

using namespace std;

char a[1000];

char b[1000];

void fun(char a[],char* dest)  //实现将"(max)"加入dest所指的空间

{

    char c[1000];

    strcpy(c,dest+1);

    *(dest+1)='\0';

    strcat(a,"(max)");

    strcpy(dest+6,c);   //注意这里是6

}

int main()

{

    while(scanf("%s",&a)!=EOF)

    {

        int l=strlen(a);

        for(int i=0;i<l;i++)

            b[i]=a[i];

        sort(a,a+l);

        char x=a[l-1];      //先借助a数组的排序找到最大的那个字符

        for(int i=0;i<l;i++)

        {

            if(b[i]==x)

            {   

                fun(b,&(b[i]));

                i=i+5;l=l+5;    //不能在max里面在找,并且长度也应该随着数组的变化动态变化

            }

        }

        cout<<b<<endl;

        for(int i=0;i<1000;i++)  //为了防止上一次造成的影响,这里必须在处理下一个字符串之前清空原有的所有记录

        {

            a[i]='\0';b[i]='\0';

        }

    }

    return 0;

}

 

解法2(手动抄袭,果然还是一寸短一寸强)

#include <stdio.h>

#include<string.h>

int main()

{

    int i;

    char str[100],maxch;

    gets(str);

    maxch=str[0];

    for(i=0;str[i]!='\0';i++){

        if(str[i]>maxch){

            maxch=str[i];

        }

    }

    for(i=0;str[i]!='\0';i++){

        printf("%c",str[i]);

        if(str[i]==maxch){

            printf("(max)");

        }

    }

    printf("\n");

    return 0;

}

#include <stdio.h>

#include<string.h>

int main()

{

    int i;

    char str[100],maxch;

    while(gets(str)!=EOF)

    {

        maxch=str[0];

        for(i=0;str[i]!='\0';i++)     //先用擂台法求出整个字符串中的最大字符maxch

        {

            if(str[i]>maxch)

                maxch=str[i];

        }

        for(i=0;str[i]!='\0';i++)  //一个一个扫描,碰到最大字符,停止对字符串的输出,先输出“(max)",再接着输出原来的字符串

        {

            printf("%c",str[i]);

            if(str[i]==maxch)

            {

                printf("(max)");

            }

        }

        printf("\n");

    }

    return 0;

}

 

posted @ 2020-10-10 12:42  py佐料  阅读(151)  评论(0编辑  收藏  举报