回 帖 发 新 帖 刷新版面

主题:关于换行

#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个回复)

沙发

如果if(i%5==0) printf("\n");在printf("%12d",f[i]);之后
那么i的初值是0,它一输出之后就会换行一次再重复循环。。

板凳


不会啊,0/5==0?

3 楼

1楼说的是对的.楼主仔细想想.

4 楼

我用VC6.0的编译器输出的就是楼主的正确答案啊!纠结中、、、

5 楼


是啊,运行出来的结果是楼主想要的结果啊。。。

6 楼


是i%5==0呀

7 楼

一楼说的对,但是这样子输出的第一行就会出现换行。
可以改成if(i%5==0 && 0 != i) printf("\n");

8 楼

一楼对的,0%5余数是0,就会换行、

9 楼


#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 楼

如果是if(i%5==0) printf("\n");应该在printf("%12d",f[i]);之后,那么输出一个%d后,0%5==0,换行,再到1、2、3、4都不满足,等到i=5的时候满足,即输出出f[5]后换行,以此类推
不知道你怎么想

我来回复

您尚未登录,请登录后再回复。点此登录或注册