从键盘上输入两个字符串(每个字符串中不包含空格),若不相等,将短的字符串连接到长的字符串的末尾并输出新字符串(若两个字符串长度相等,则后一个字符串连接到前一个字符串末尾);若相等,则输出第一个字符串。

从键盘上输入两个字符串(每个字符串中不包含空格),若不相等,将短的字符串连接到长的字符串的末尾并输出新字符串(若两个字符串长度相等,则后一个字符串连接到前一个字符串末尾);若相等,则输出第一个字符串。

供参考:

#include<stdio.h>
#include<string.h>
#define MAX 512
int  main()
{
    char str1[MAX], str2[MAX];
    int len1, len2;
    printf("input string 1 : ");
    scanf("%s",str1);    //输入字符串1
    printf("input string 2 : ");
    scanf("%s",str2);   // 输入字符串2
    len1 = strlen(str1); // 获取字符串1的长度
    len2 = strlen(str2); // 获取字符串2的长度
    if(len1 < len2){
         strcat(str2, str1); // 将短的字符串1接在较长的字符串2的后面
         printf("new string : %s\n", str2);
    }
    else if(len1 > len2){
         strcat(str1, str2);
         printf("new string : %s\n", str1);
    }
    else{
         printf("first string : %s\n", str1);
    }
    return 0;
}


#include <stdio.h>
#include <string.h>
#define MAX 100
int main(){
    char str1[MAX]={0},str2[MAX]={0};
    int len1=0,len2=0;
    gets(str1);
    gets(str2);
    len1=strlen(str1);
    len2=strlen(str2);
    if(strcmp(str1,str2)==0){
        puts(str1);
    }
    else{
        if(len1>=len2){
            strcat(str1,str2);
            puts(str1);
        }
        else{
            strcat(str2,str1);
            puts(str2);
        }
    }
}

两个字符串相等的情况:

img

字符串不相等,字符串1长度大于字符串2:

img

字符串不相等,字符串2长度大于字符串1:

img

代码:


#include <stdio.h>
#include <string.h>
#define MAXLEN (int)200
int main()
{
    char str1[MAXLEN], str2[MAXLEN];
    int len1 = 0, len2 = 0;
    scanf("%s", str1);
    scanf("%s", str2);
    if (strcmp(str1, str2) == 0)
    {
        printf("%s", str1);
    }
    else
    {
        len1 = strlen(str1);
        len2 = strlen(str2);
        if (len1 >= len2)
        {
            strcat(str1, str2);
            printf("%s", str1);
        }
        else
        {
            strcat(str2, str1);
            printf("%s", str2);
        }
    }
    return 0;
}

望采纳,谢谢!


#include<stdio.h>
#include<string.h>
#define ARR_SIZE 80
int main()
{
    char str1[ARR_SIZE];
    char str2[ARR_SIZE];
    int len1, len2, flag = 1;
    gets(str1);
    gets(str2);
    len1 = strlen(str1);
    len2 = strlen(str2);

    if (len1 == len2)
    {
        for (int i = 0; i <= len1; i++) {
            if (str1[i] != str2[i])
            {
                flag = 0;
                break;
            }
        }
        if (flag == 1) 
            printf("%s", str1);
        else 
            printf("%s%s", str1, str2);
    }
    else if (len1 < len2)
    {
        printf("%s%s", str2, str1);
    }
    else
    {
        printf("%s%s", str1, str2);
    }
    return 0;
}

编译工具VS,代码如下:

#include <stdio.h>
#include<string.h>
void main() 
{
    int len1, len2;
    char s1[100],s2[100];
    gets(s1);
    gets(s2);
    len1 = strlen(s1);
    len2 = strlen(s2);
    if (strcmp(s1, s2) == 0)
        puts(s1);
    else
    {
        if (len1 >= len2)
        {
            strcat_s(s1,100, s2);
            puts(s1);
        }
        else if (len1 < len2)
        {
            strcat_s(s2,100, s1);
            puts(s2);
        }
    }
    return 0;
}

如果你用其他编译工具的话,strcat_s(s1,100, s2);换成strcat(s1, s2);即可

把字符依次复制到str3就行

#include<stdio.h>
#include<string.h>
#define max 150
int main()
{
    char str1[max],str2[max];
    gets(str1);
    gets(str2);
    int len1=strlen(str1);
    int len2=strlen(str2);
    char str3[max*2];
    if(strcmp(str1,str2)==0)
    {
        puts(str1);
    }
    else
    {
        if(len1<len2)
        {
            int p=0;
            for(int i=0; i<len2; i++)
            {
                str3[p++]=str2[i];
            }
            for(int i=0; i<len1; i++)
            {
                str3[p++]=str1[i];
            }
            str3[p]='\0';
        }
        else
        {
            int p=0;
            for(int i=0; i<len1; i++)
            {
                str3[p++]=str1[i];
            }
            for(int i=0; i<len2; i++)
            {
                str3[p++]=str2[i];
            }
            str3[p]='\0';
        }
        puts(str3);
    }
    return 0;
}