qazwsxedc1267834 2021-11-21 18:10 采纳率: 100%
浏览 77
已结题

程序的功能是:键盘输入两个字符串,被调函数将小串连接到大串之后。程序缺3处代码,请你把所缺代码提交。注意:不允许使用strlen、strcmp、strcat、strcpy等函数

问题遇到的现象和发生背景

我的主函数中考虑的情况不全面,只比较了首字符

问题相关代码,请勿粘贴截图

/************************************/

//缺头文件和函数定义

/************************************/

int main()

{

char s1[31],s2[11],*p1,*p2,*t;

p1=gets(s1);

p2=gets(s2);

//此处编写代码,使p1指向大串的首字符,使p2指向小串的首字符

printf("%s,%s\n",p1,p2);

sub(_______);  //此处缺少参数

printf("%s\n",s1);

return 0;  

}/************************************/

//缺头文件和函数定义

/************************************/

int main()

{

char s1[31],s2[11],*p1,*p2,*t;

p1=gets(s1);

p2=gets(s2);

//此处编写代码,使p1指向大串的首字符,使p2指向小串的首字符

printf("%s,%s\n",p1,p2);

sub(_______);  //此处缺少参数

printf("%s\n",s1);

return 0;  

}

运行结果及报错内容
#include <stdio.h>
void sub(char s1[], char *p1, char *p2) 
{
    int i;
    while(*p1)
    {
        p1++;
    }
    while(*p2)
    {
        *p1++=*p2++;
    *p1=0;
    }
    for(i=0;i!=0;i++)
    {
        s1[i]=*(p1+i);
    }
}


int main() 
{
    char s1[31], s2[11], *p1, *p2, *temp;
    p1 = gets(s1);
    p2 = gets(s2);
//此处编写代码,使p1指向大串的首字符,使p2指向小串的首字符
    if(*p1<*p2)
    {
        temp=p1;
        p1=p2;
        p2=temp;
    }
    printf("%s,%s\n",p1,p2);
    sub(s1, p1, p2); //此处缺少参数
    printf("%s\n",s1);
    return 0;
}


我的解答思路和尝试过的方法

我感觉被调函数问题不大,我如果输入
abcd
ABCD
能够达到预期结果,但是我如果输入
ABCD
abcd
运行结果就是错误的。

我想要达到的结果

Sample Input
ABCD
asdf
Sample Output
asdf,ABCD
asdfABCD

  • 写回答

2条回答 默认 最新

  • 关注
    if(*p1<*p2)  这样只能比较第一个字符。应该是用循环逐个字符比较
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月29日
  • 已采纳回答 11月21日
  • 创建了问题 11月21日

悬赏问题

  • ¥15 请问如何在Ubuntu系统中安装使用microsoft R open?
  • ¥15 jupyter notebook
  • ¥30 informer时间序列预测
  • ¥20 SSR引物多态性分析
  • ¥15 大漠插件在Win11易语言注册调用和免注册灵异事件,VS上注册调用完全没问题
  • ¥15 Addressable缓存机制做热更新的问题
  • ¥15 微信开发者工具vant组件
  • ¥15 iPhone iCloud云盘资料删除,MAC丢失50多G桌面资料
  • ¥20 希望各位学长可以给我答疑
  • ¥20 Linux实现: 客户端(cli01)通过TCP(或UDP)连接到聊天服务器(serv)进行聊天。