OJ題目 查詢最大元素 C語言實現
阿新 • • 發佈:2019-01-30
對於輸入的每個字串,查詢其中的最大字母,在該字母后面插入字串“(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),這種方法比較簡單,沒有什麼難度,也沒有什麼價值,就不去實現了