一、原题题目
二、解题思路
题目很简单,就是把一个短字符串加到一个长字符串的特定位置后面即可,其中只需注意一点:该题目有多组输入,先前收藏了一位学长的多组输入笔记,结果看了几遍就吃灰了,得回过头再看看。
简单说,先多组输入,再找到各组有最大ASCII码的字符位置,最后根据该位置分三组数据输出。
注意: 像这个样例的输入不能用 gets() 函数,因为这本来一行是用空格隔开的两个字符串,但 gets() 是以回车结束读入的,一下子会读入一行,电脑就会认为这是一个字符串了。
三、代码实现
#include <stdio.h>
#include <string.h>
int main()
{
char a[12], b[5]; //数组空间一定要多开几个呀!!!
while(scanf("%s %s", &a, &b) != EOF){ //多组输入
int t = -1; //如果这里t取1,max取a[0],也可以
char max = -1;
for (int i = 0; a[i]; i ++){ //寻找ASCII码最大的字符
if (a[i] > max){
max = a[i];
t = i;
}
}
// 接下来分成三段输出来凑成整个所求字符串
for (int i = 0; i <= t; i ++)
printf("%c", a[i]);
for (int i = 0; i < strlen(b); i ++)
printf("%c", b[i]);
for (int i = t+1; i < strlen(a); i ++)
printf("%c", a[i]);
printf("\n"); //最后别忘换行
}
return 0;
}
运行正确:
四、题目总结
其实就一个多组输入问题,在 DevC++ 中,可以使用组合键 CTRL+Z 来结束程序运行,其次是输入不能用 gets() ,最后就是这次数组开小了,结果输出有乱码,搞了半天,真无语。。