我目前能够打印序列,但我需要它以特定格式打印。我需要它在列中打印,例如,如果我输入10作为输入,输出应如下所示:
这是我目前的代码:
#include <stdio.h>
int main(int argc, char *args[])
{
int i, num = 0;
int n;
long int f1 =1, f2 = 1;
if ( argc > 1 ) {
num = atoi( args[1] ); // convert a number string to an integer
printf("%d\n", num); // to test if the it get the argument
if (1 <= num && num <= 40) {
for(i=1;i<10;i++){
n = f1 + f2;
f1 = f2;
f2 = n;
printf("%d\n",n);
}
}
}
else
printf("no argument");
printf("\n");
return 0;
}
答案 0 :(得分:2)
(这似乎是一项家庭作业,所以我会根据这里描述的妥协来回答How do I ask and answer homework questions?。即我不会提供完整的代码解决方案。相反,我会帮助你思考一下这可以让你自己做作业,提供提示。)
第一提示:
第二个提示:
第三个提示:
\t
进行对齐似乎是一个很有前景的概念让我知道这有多大帮助,我可能会提供更多提示。
答案 1 :(得分:0)
这看起来很像家庭作业,所以我认为没有人应该给你你的答案。话虽如此,您可能想查看modulus operator。提示:每次num % something
等于0
时,您可能需要插入换行符。
您要查看的另一件事是sprintf或printf。例如,尝试"%20d"
vs "%-20d"
。
编辑:看起来有人给了你答案。您应该真正理解为什么它可能会或可能不会满足您的需求。此外,使用标签("\t"
)可能符合您的(或您的请求者)要求,也可能不符合您的要求。如果列的间距很重要,您可能需要回顾我的答案。
答案 2 :(得分:0)
你可以尝试这样的事情;
使用制表符分隔大多数数字,并每隔四位打印一个换行符,并在for循环终止条件中使用num而不是10。
if (1 <= num && num <= 40) {
/* Add this to print the first two fibinacci values */
printf("\t1\t1");
for(i=2;i<num;){
n = f1 + f2;
f1 = f2;
f2 = n;
printf("\t%d",n);
/* Once we've printed 4 digits print a newline */
if (++i%4==0)
printf("\n");
}
}
答案 3 :(得分:0)
我认为你可以玩它。
printf(i % 4 == 0 ? "\t%d\t\n" : "\t%d\t", n);