c语言从键盘输入两个字符串a和b,并在a串中的最大元素后边插入字符串b!有图 就程序
发布网友
发布时间:2022-10-04 18:41
我来回答
共2个回答
热心网友
时间:2023-10-15 11:53
#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; //返回最大元素地址;
}
热心网友
时间:2023-10-15 11:53
//这么试试,我只大概写下思路:
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);
}