AcWing-773. 字符串插入


一、原题题目

773. 字符串插入
题目跳转链接点这里

二、解题思路

题目很简单,就是把一个短字符串加到一个长字符串的特定位置后面即可,其中只需注意一点:该题目有多组输入,先前收藏了一位学长的多组输入笔记,结果看了几遍就吃灰了,得回过头再看看。

简单说,先多组输入,再找到各组有最大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() ,最后就是这次数组开小了,结果输出有乱码,搞了半天,真无语。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值