OJ题目 查找最大元素 C语言实现

来源:互联网 发布:可视化图表制作软件 编辑:程序博客网 时间:2024/06/05 18:54

对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。

Input

输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。

Output

对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入”(max)”。

Sample Input

abcdefgfedcba
xxxxx

Sample Output

abcdefg(max)fedcba
x(max)x(max)x(max)x(max)x(max)

思路:只要找到最大元素,在后面插入(max),然后输出插入后的结果就可以了。

#include<stdio.h>#include<conio.h>#define SIZE 601#define Debug void main(){    char str[SIZE];    char ch;    char *p="(max)",*pstr,*qstr;    int i,tag;    while(scanf("%s",str)!=EOF)    {        tag=0;        i=0;        ch=str[0];        while(str[i]!='\0')               //查找其中的最大元素,并且赋值给ch        {            if(ch<str[i])                ch=str[i];            i++;        }                                     pstr=str;                        //qstr和pstr都指向str的第一个元素        qstr=pstr;        while(*pstr!='\0')                //如果pstr还没有遍历str中所有的元素        {            i=0;            while(p[i]!='\0')            //如果(max)还没全部插进去            {                while(*pstr!=ch)           //如果pstr没有指向最大的元素                {                    if(*pstr=='\0')                          {                        tag=1;                        break;                    }                    else                        pstr++;                }                if(tag==1)                    break;                while(*qstr!='\0') qstr++;  //qstr指到末尾                while((pstr+i)<qstr)                {                    *(qstr+1)=*qstr;                    qstr--;             //pstr+i前面的元素都后移一个位置                }                 *(pstr+1+i)=p[i++];    //多出来的一个位置插入p指向的字符            }            if(tag==1)                break;            pstr+=6;                  //移动到下一个元素        }        printf("%s\n",str);         //输出结果    }}

附:还有一种方法,就是找出这个最大元素,然后输出时遇到这个最大元素的时候,后面加上(max),这种方法比较简单,没有什么难度,也没有什么价值,就不去实现了

原创粉丝点击