C程序:如何打印这样的字符串......?

时间:2015-11-05 23:38:16

标签: c

如果我输入的是:功能区 输出将是:

  rn
 rion  
ribbon

或者我的输入是:harry

  hy
 hary  
harry  

它应该看起来像一个文本动画,文字应该逐个出现(前面和后面的字母应该首先出现)。

这是我的代码,但它似乎没有用,因为它有一个wront输出。

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

int main () {
    char input[10];
    int front, back;
    int n; //counter

    n = strlen(input);

    printf ("input\n");
    fgets (input, sizeof (input), stdin);

    for (front=0,back=n-1; front<=((n-1)/2)||back>=(((n-1)/2)+1);front++,back--) {
        if (front==0||back&&(n-1)) {
            printf ("%c",input[front]);
            printf ("%c", input[back]);
            front++;
            back--;
            usleep (500000);
        }
        else {
            if (front<=((n-1)/2)||back>=(((n-1)/2)+1)) {
                front++;
                back --;
            }
            else if (front==n) {
                printf ("%c\n", input[front]);
                printf ("%c\n", input[back]);
            }
        }
    }   
    return 0;
}

1 个答案:

答案 0 :(得分:0)

有一个主要问题:您在接收任何输入之前尝试确定输入的长度。

所以切换这样的行:

printf ("input\n");
fgets (input, sizeof (input), stdin);
n = strlen(input);

然后你的for循环......为什么这么重的测试,不会

for ( front = 0, back = n-1; front < back; ++front, --back)

足够吗?

最后:代码的其余部分。请再考虑一下。你想要:

  • 从头到尾打印所有字符,包括front
  • 从背面打印所有字符
  • 打印换行符

您的代码对此无效。但我们不是来解决你的功课;)

最后一个提示:有两种不同类型的停止条件,它们取决于您的输入长度是偶数还是奇数。 (我建议的测试应该可以赶上两个,然后)。