回 帖 发 新 帖 刷新版面

主题:求解

编写函数将两个升序排列的字符串(串长<81)融合成一个字符串,融合后的字符串仍然是升序排列的。
 


输入描述:
输入两升序字符串
 


输出描述描述:
融合后的字符串 (含回车符)
 


样式输入:
acefi
bdfg
 


样式输出:
abcdeffgi
 





#include<stdio.h>
#include<string.h>
int main()
{
    char a[81],b[81],c[100];
    char *pa,*pb;
    int i=0,j=0,k=0,t1,t2;
    gets(a);
    gets(b);
    pa=a;
    pb=b;
    t1=strlen(a);
    t2=strlen(b);
    while(pa<(pa+t1) && pb<(pb+t2))
    {
        if(*pa<*pb)
        {
            c[j]=*pa;
            j++;
            pa++;
        }
        else if(*pa>*pb)
        {
            c[j]=*pb;
            j++;
            pb++;
        }
        else
        {
            c[j]=*pa;
            k++;
            j++;
            pa++;
        }
    }
    c[j+1]='\0';
    for(i=0;i<t1+t2-k;i++)
    {
        printf("%c",c[i]);
    }
    return 0;
}
我写得不对,请求修改,谢谢!

回复列表 (共2个回复)

沙发

#include <stdio.h>
#include <string.h>
#define MAX 165
void appendsort(char arr[],int n);
int main()
{
    char str1[]={'a','f','e','p','h','i','\0'};
    char str2[]={'b','z','d','j','k','l','M','\0'};
    char str[MAX]={'\0'};
    appendsort(str1,sizeof(str1)/sizeof(str1[0]));
    appendsort(str2,sizeof(str2)/sizeof(str2[0]));
    printf("str1 is %s\n",str1);
    printf("str2 is %s\n",str2);
    strcat(str,str1);
    strcat(str,str2);
    int len = sizeof(str)/sizeof(str[0]);
    appendsort(str,len);
    int i;
    for(i = 0; i < len; i++)
        printf("%c",str[i]);
    printf("\n");
    return 0;
}
void appendsort(char arr[],int n)
{
    int i;
    int j;
    for(i = 0; i < n; i++){
        for(j = i+1;j < n-1;j++){
            if(arr[j] < arr[i]){
                char tmp=arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}

板凳

lz这样用循环?while(pa<(pa+t1) && pb<(pb+t2))
//能break么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册