主题:关于换行
edelweiss
[专家分:60] 发布于 2010-12-02 19:28:00
#include<stdio.h>
int main()
{
int i;
int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{
if(i%5==0) printf("\n");
printf("%12d",f[i]);
}
printf("\n");
return 0;
}
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765(这个是正确答案)
就是 我认为if(i%5==0) printf("\n");应该在printf("%12d",f[i]);之后,
1
1 2 3 5 8
13 21 34 55 89
144 233 377 610 987
1597 2584 4181 6765(怎么会出现这样的结果)
忘高手支招
回复列表 (共11个回复)
沙发
似水流鱼 [专家分:20] 发布于 2010-12-02 20:29:00
如果if(i%5==0) printf("\n");在printf("%12d",f[i]);之后
那么i的初值是0,它一输出之后就会换行一次再重复循环。。
板凳
edelweiss [专家分:60] 发布于 2010-12-03 08:56:00
不会啊,0/5==0?
3 楼
_超.C [专家分:10] 发布于 2010-12-04 09:55:00
1楼说的是对的.楼主仔细想想.
4 楼
cfj469933485 [专家分:950] 发布于 2010-12-05 16:15:00
我用VC6.0的编译器输出的就是楼主的正确答案啊!纠结中、、、
5 楼
learningC [专家分:0] 发布于 2010-12-06 11:00:00
是啊,运行出来的结果是楼主想要的结果啊。。。
6 楼
singolang [专家分:0] 发布于 2010-12-06 16:12:00
是i%5==0呀
7 楼
haibo1989 [专家分:10] 发布于 2010-12-06 17:09:00
一楼说的对,但是这样子输出的第一行就会出现换行。
可以改成if(i%5==0 && 0 != i) printf("\n");
8 楼
inlove [专家分:0] 发布于 2010-12-10 15:22:00
一楼对的,0%5余数是0,就会换行、
9 楼
li520rong [专家分:0] 发布于 2010-12-10 19:17:00
#include<stdio.h>
int main()
{
int i;
int f[20]={1,1};
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=1;i<21;i++)
{
printf("%12d",f[i-1]);
if(i%5==0) printf("\n");
}
printf("\n");
return 0;
}
10 楼
keeplove [专家分:10] 发布于 2010-12-10 23:18:00
如果是if(i%5==0) printf("\n");应该在printf("%12d",f[i]);之后,那么输出一个%d后,0%5==0,换行,再到1、2、3、4都不满足,等到i=5的时候满足,即输出出f[5]后换行,以此类推
不知道你怎么想
我来回复