从键盘输入字符串a和字符串b,并在a串中的最小元素(不含结束符)后面插入字符串b的C语言
发布网友
发布时间:2022-10-04 18:41
我来回答
共3个回答
热心网友
时间:2023-10-15 11:52
#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
}
热心网友
时间:2023-10-15 11:53
最小元素 是指的什么? 输入的都是0 - 9的数?
还是ASCII码中最小值的字符?
热心网友
时间:2023-10-15 11:53
什么叫做“最小”呢?是以字符的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;
}