1. 程式人生 > >OJ題目 查詢最大元素 C語言實現

OJ題目 查詢最大元素 C語言實現

對於輸入的每個字串,查詢其中的最大字母,在該字母后面插入字串“(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
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),這種方法比較簡單,沒有什麼難度,也沒有什麼價值,就不去實現了