c程序打印外观和说顺序

时间:2015-07-02 12:31:41

标签: c printing sequence

这是我的代码,实际输出和所需输出略有不同。 在实际输出中,每个数字都在新行打印。 但我希望输出以空格分隔的单行打印。

必需的输出

示例输入:

1 8

示例输出:

1 11 21 1211 111221 312211 13112221 1113213211

我的代码在这里

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *a = malloc(2), *b = 0, *x, c;
    int cnt, len = 1,i=1,lim,s;
  scanf("%d",&s);
 scanf("%d",&lim);
    for (sprintf(a, "%d",s); (b = realloc(b, len * 2 + 1)); a = b, b = x)
    {
        puts(x = a);
        for (len = 0, cnt = 1; (c = *a); )
        {
            if (c == *++a)
                cnt++;
            else if (c) 
            {
                len += sprintf(b + len, "%d%c", cnt, c);
                cnt = 1;

            }

        }
      if(i==lim)
        break;
      i++;
    }

    return 0;
}

我的输出

输入&gt; 1

  

8

输出&GT; 1

11

21

1211

111221

312211

13112221

1113213211

2 个答案:

答案 0 :(得分:4)

使用

 printf("%s ",a);

而不是

 puts(x = a);

答案 1 :(得分:3)

  

puts会自动附加换行符。如果这不是您想要的,您可以将字符串输出到stdout或使用printf。

 fputs(x=a,stdout);

 printf("%s ",a);