从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b的C语言

如题所述

#include<stdio.h>
#include<string.h>
#define size 100

void insert(char *s1,const char *source);
int main(int argc,char *argv[])//主函数
{
char s1[size]={0};
char source[size]={0};

puts("enter s1\ns1:");
fgets(s1,size,stdin);//从键盘获取字符串s1

puts("enter source\ns2:");
fgets(source,size,stdin);//从键盘获取字符串s2
int len_source=strlen(source);//删除S2最后的回车
if ( source[len_source-1] == '\n')
{
source[len_source-1]='\0';
}

insert(s1,source);
puts(s1);//打印新的s1
return 0;
}


void insert(char *s1,const char *source)
{
int len = strlen(s1),i,flg;
char min=s1[0];
for(i=0;i<len-1;i++)//求最小的元素
{
if ( min > s1[i])
{
min = s1[i];
flg = i+1;
}
}
char tmp_str[size]={0};
strcpy(tmp_str,s1+flg);//先把最小元素之后的字符拷贝到临时数组
strcpy(s1+flg,source);//从最小元素的位置把s2拷贝到s1
strcpy(s1+strlen(s1),tmp_str);//最后把s1最开始最小元素之前的字符(包括pos)重新拷到s1
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-07
最小元素 是指的什么? 输入的都是0 - 9的数?
还是ASCII码中最小值的字符?本回答被网友采纳
第2个回答  2013-04-13
什么叫做“最小”呢?是以字符的ascii码来衡量么?追问

对,就是按照ascii码

追答

我都还没贴出代码,你就采纳我。。。

以下代码已测试通过

#include
#include
int main(void)
{
char a[200], b[100];
int i, pos=0;
printf("请输入字符串a:");
gets(a);
printf("请输入字符串b:");
gets(b);
for (i=0; a[i+1]!='\0'; i++)
if (a[i+1] < a[pos])//假如a字符串中有多个“并列最小”的字符,那么将会在第一个并列最小的那个后面加上b字符串,如果你想在最后一个并列最小的字符后加b,那么就把这个条件改成a[i+1] <= a[pos]
pos = i+1;
a[pos+1] = '\0';
strcat(a, b);
puts(a);
return 0;
}

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网