写一个顺序写两个字符串的C程序?

时间:2018-03-26 14:30:38

标签: c string merge

我得到了这个任务:

编写一个C程序,按顺序将两个字符串相互写入,如下图所示。从字符串开始 由“X”组成,每次迭代时,必须重写第一个和最后一个X字符,直到整个字符串为止 重写并显示最终消息。 提示:使用库中的函数strlen()来确定字符串的长度。

应输出如下:

XXXXXXXXXXXXXXXXXXXXX
IXXXXXXXXXXXXXXXXXXX!
I XXXXXXXXXXXXXXXXXg!
I lXXXXXXXXXXXXXXXng!
I loXXXXXXXXXXXXXing!
I lovXXXXXXXXXXXming!
I loveXXXXXXXXXmming!
I love XXXXXXXamming!
I love CXXXXXramming!
I love C-XXXgramming!
I love C-PXogramming!
I love C-Programming!

Final String =我喜欢C-Programming!

这是我到目前为止所做的:

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
//data
char str[] = "I love C-Programming!";
int rows;
int columns;
int length = strlen(str);
int format =5;

//process
{
    rows = 0;
    while (rows <= length)
    {
        rows++;
    }
    while (rows > 0)
    {
        int count = length;
        columns = rows - 1;
        while (columns > 0)
        {
            printf("X");
            columns--;
            count --;
        }

        if (rows <= length)
        {
            printf("%.*s", count, str);
        }
        printf("\n");
        rows-=2;
    }
    printf("%s", str);
}

//output    
printf("\n");
printf("\n");
printf("Final String = %s\n", str);
return 0;
}

无法正常显示。请帮忙! 感谢。

2 个答案:

答案 0 :(得分:1)

嗨,这确实是一个非常简单的程序。实际上你的老师要你写一个如下的程序: -

=simpleCellRegex(A1)

它将如下所示: -

int main(int argc, char **argv)
{
    //data
    char str1[] = "I love C-Programming!";
    char str2[strlen(str1)];
    memset(str2, 'X', sizeof(str2));//Set all the character to X
    str2[strlen(str1)-1]=0;//end of string character value of '\0'
    //int rows;
    //int columns;
    int length = strlen(str1);
    //int format =5;
    int i = 0;
    int j = length - 1;
      do
      {
       printf("%s\n", str2);//Print the second string first
       str2[i]=str1[i];//copy from first character from str1
       str2[j]=str1[j];//copy from last character from str1
               //so in each iteration we are coping two characters from str1 to str2
      }while(i++ != j-- );//once I and j are equal break the loop
       printf("%s", str2);
    /*
    //process
    {

        rows = 0;
        while (rows <= length)
        {
            rows++;
        }
        while (rows > 0)
        {
            int count = length;
            columns = rows - 1;
            while (columns > 0)
            {
                printf("X");
                columns--;
                count --;
            }

            if (rows <= length)
            {
                printf("%.*s", count, str);
            }
            printf("\n");
            rows-=2;
        }
        printf("%s", str);
    }
    */

    //output
    printf("\n");
    printf("\n");
    printf("Final String = %s\n", str2);
    return 0;
}

答案 1 :(得分:1)

#include <stdio.h>
#include <string.h>

int main()
{
    char s1[] = "XXXXXXXXXXXXXXXXXXXXX";
    const char s2[] = "I love C-Programming!";
    const int n = strlen(s1);
    const int h = n / 2;
    int i;
    int j;

    puts(s1);
    for (i = 0, j = n - 1; i <= h; ++i, --j) {
        s1[i] = s2[i];
        s1[j] = s2[j];
        puts(s1);
    }

    return 0;
}