这是我的代码,实际输出和所需输出略有不同。 在实际输出中,每个数字都在新行打印。 但我希望输出以空格分隔的单行打印。
必需的输出
示例输入:
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
答案 0 :(得分:4)
使用
printf("%s ",a);
而不是
puts(x = a);
答案 1 :(得分:3)
puts会自动附加换行符。如果这不是您想要的,您可以将字符串输出到stdout或使用printf。
fputs(x=a,stdout);
或
printf("%s ",a);