HS514 2022-04-19 21:43 采纳率: 68.8%
浏览 61
已结题

输入两个字符串a和b,并动态构造一个新的字符串c。要求是:将a和b对应字符中的较大者存入c对应的位置上,若a和b不一样长,则将较长字符串多出部分的字符全部依序存入c中。

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
    char a[100], b[100]; int len = 0;
    cout << "请输入两个字符串:" << endl;
    cin.getline(a, 99);
    cin.getline(b, 99);
    if (strlen(a) > strlen(b))
    {
        len = strlen(a);
        char * c = new char[len];
        int i;
        for (i=0; *(b + i) != '\0'; i++)
        {
            if (*(a + i) > *(b + i))
            {
                *(c + i) = *(a + i);
            }
            else
            {
                *(c + i) = *(b + i);
            }
        }
        int j;
        for ( j = i; *(a + j) != '\0'; j++)
        {
            *(c + j) = *(a + j);
        }
        cout << "新的字符串是:";
        puts(c);
    }
        

    else
    {
        len = strlen(b);
        char * d = new char[len];
        int k;
        for (k = 0; *(a + k) != '\0'; k++)
        {
            if (*(a + k) > *(b + k))
            {
                *(d + k) = *(a + k);
            }
            else
            {
                *(d + k) = *(b + k);
            }
        }
        int h;
        for (h = k; *(b + h) != '\0'; h++)
        {
            *(d + k) = *(b + k);
        }
        cout << "新的字符串是:";
        puts(d);
    }

        
    
    return 0;
}
运行结果及报错内容

img

img

我的解答思路和尝试过的方法
我想要达到的结果

img

  • 写回答

1条回答 默认 最新

  • bostonAlen 2022-04-19 22:58
    关注
    
    #include<iostream>
    #include<string>
    #include<cstdlib>
    using namespace std;
    int main()
    {
        char a[100], b[100]; int len = 0;
        cout << "请输入两个字符串:" << endl;
        cin.getline(a, 99);
        cin.getline(b, 99);
        if (strlen(a) > strlen(b))
        {
            len = strlen(a);
            char * c = new char[len];
            int i;
            for (i = 0; *(b + i) != '\0'; i++)
            {
                if (*(a + i) > *(b + i))
                {
                    *(c + i) = *(a + i);
                }
                else
                {
                    *(c + i) = *(b + i);
                }
            }
            int j;
            for (j = i; *(a + j) != '\0'; j++)
            {
                *(c + j) = *(a + j);
            }
            c[j] = '\0';
            cout << "新的字符串是:";
            puts(c);
        }
        else
        {
            len = strlen(b);
            char * c = new char[len];
            int i;
            for (i = 0; *(a + i) != '\0'; i++)
            {
                if (*(b + i) > *(a + i))
                {
                    *(c + i) = *(b + i);
                }
                else
                {
                    *(c + i) = *(a + i);
                }
            }
            int j;
            for (j = i; *(b + j) != '\0'; j++)
            {
                *(c + j) = *(b + j);
            }
            c[j] = '\0';
            cout << "新的字符串是:";
            puts(c);
        }
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月28日
  • 已采纳回答 4月20日
  • 创建了问题 4月19日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度