回 帖 发 新 帖 刷新版面

主题:帮忙解释下这个有趣的C程序

#include<stdio.h>
int main(void)
{
    int i,j,n;
    while(scanf("%d",&n)+1)
        for(i=j=n;j--||(putchar(10),j=n-1,--i);
        printf("%-7d",((n-1)*3/2+i-j)%n*n+((5*n-1)/2+i+j-n-n)%n+1));
   return 0;
}

回复列表 (共7个回复)

沙发

#include<stdio.h>
int main(void)
{
    int i,j,n;
    while(scanf("%d",&n)+1) //循环scanf函数返回值是int,不管你输入的数字是什么,至少返回0,也就是0项被匹配。而0+1肯定 > 0,所以while循环成立,从而进入循环进行操作
        for(i=j=n;j--||(putchar(10),j=n-1,--i);//这里其实就是j-- > 0 || --i > 0而已,其他的不过是进行的一些逻辑操作,如果需要查看内部的具体实现则可以看看。
        printf("%-7d",((n-1)*3/2+i-j)%n*n+((5*n-1)/2+i+j-n-n)%n+1)); //总的来说这个for循环就是控制打印的一些数据而已。没什么特别的,只是将所有的逻辑操作都放到里面了。不过具体打印什么东西,我就没有具体看了。
   return 0;
}

板凳

这样更加有趣,为什么不这样写呢?

[code=c]
#include<stdio.h>
int main(){int i,j,n;while(scanf("\045\144",&n)+1)for(i=j=n;j--||(putchar(012),j=n-1,--i);printf("\045\055\067\144",((n-1)*3/2+i-j)%n*n+((5*n-1)/2+i+j-n-n)%n+1));return 0;}
[/code]

程序是写给人看的,如果要故作高深,不如用二进制01来写.

3 楼

还是不懂 ,它的for循环里面怎么只有两个条件,而且里面的逻辑关系我更是不懂
真的很想知道这个程序到底地怎么个意思 ,有高手箐详细解说 谢谢!!!

4 楼


把程序写的太绕了。不好。我要是你老板,肯定开你。

5 楼

也疑惑中,静等高手

6 楼

谢谢楼主了,请继续努力



















[url=http://www.sc115.com/vector]矢量素材[/url],[url=http://www.sc115.com/PPT]PPT模板[/url],[url=http://www.sc115.com]素材中国[/url]

7 楼

选择千锋 选择卓越 千锋3G 手机软件开发培训第一品牌

[url=http://www.mobiletrain.org/]iOS培训[/url] [url=http://www.mobiletrain.org/]北京iOS培训[/url]

我来回复

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