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

如题所述

#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;  //返回最大元素地址; 
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-25
//这么试试,我只大概写下思路:
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);
}本回答被网友采纳