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

程序的功能是:键盘输入两个字符串,被调函数将小串连接到大串之后。程序缺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 2024-五一综合模拟赛
  • ¥15 如何将下列的“无限压缩存储器”设计出来
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口