c语言从键盘输入两个字符串a和b,并在a串中的最大元素后边插入字符串b!有图 就程序 50

 我来答
黑丶雨
推荐于2018-03-01 · TA获得超过554个赞
知道小有建树答主
回答量:406
采纳率:80%
帮助的人:409万
展开全部
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

const char *max(const char *x);

int main(void)
{
    char string1[1024] = {0};  //字符串1; 
    char string2[1024] = {0};  //字符串2; 
    
    printf("Input string1:"); 
    gets(string1);  //输入串1; 
    printf("Input string2:"); 
    gets(string2);  //输入串2; 

    char *newstr = (char*)calloc(strlen(string1) + strlen(string2) + 1, sizeof(char));  //创建一个刚好容纳两个串的新串; 
    
    if(!newstr)  //检查是否创建成功; 
    {
        printf("内存不足,程序结束!\n");
        exit(1);    
    } 
    
    const char *m = max(string1);  //调用max函数取串1内最大元素的地址; 
    int i = 0;
    
    for(; &string1[i] != m; ++i)  //串1最大元素之前的内容放入新串; 
        newstr[i] = string1[i];
    
    newstr[i] = string1[i];  //串1最大元素放入新串; 
    strcat(newstr, string2);  //串2接入新串; 
    strcat(newstr, m + 1);    //串1最大元素之后的内容接入新串;    
    printf("The new string is %s\n", newstr);  //输出新串; 
    free(newstr);  //释放内存; 
    newstr = NULL;    //放空指针; 
    return 0;
}

const char *max(const char *x)  //返回串中最大元素地址; 
{
    const char *m = &x[0];  //指向第一个元素; 
    
    for(int i = 1; x[i] != '\0'; ++i)  //循环到'\0'; 
        if(x[i] > *m)  //若比m当前指向的元素大, 
            m = &x[i];  //让m指向该元素地址; 
            
    return m;  //返回最大元素地址; 
}
肖焱淼
2016-11-25 · TA获得超过162个赞
知道小有建树答主
回答量:286
采纳率:50%
帮助的人:150万
展开全部
//这么试试,我只大概写下思路:
char str1[250] = {0};
char str2[250] = {0};
int p=0;
int pos = 0;
while(1){
scanf("%s %s", str1, str2);
p=0;
while(str1[p]){
if(str1[pos]<str1[p]){
pos = p;
}
p++;
}
strcat(str2, str1+pos);
str1[pos] = 0;
strcat(str1,str2);
printf("%s\n", str1);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式