当前位置: 代码迷 >> C语言 >> 谁给我解释一下这段程序,谢谢!
  详细解决方案

谁给我解释一下这段程序,谢谢!

热度:90   发布时间:2005-01-19 12:22:00.0
谁给我解释一下这段程序,谢谢!

#include <stdio.h> #include <stdlib.h> #define P printf #define I atoi

int main(int a,char *v[]) { int i,r=5; if(a>1) r=I(v[1]); if(r<=0) r=5; if(r%2==0) ++r; for(i=0;i<r*r;P(i/r==(3*r)/2-(i%r+1)||i/r==r/2-i%r|| i/r==r/2+i%r||i/r==i%r-r/2?"*":" "),i++,i%r==0? P("\n"):0); return 0; }

搜索更多相关的解决方案: 解释  

----------------解决方案--------------------------------------------------------
没有人回答吗?

已经放了很久了!!!
----------------解决方案--------------------------------------------------------
你想做什么???
for(i=0;i&lt;r*r;P(i/r==(3*r)/2-(i%r+1)||i/r==r/2-i%r||
        i/r==r/2+i%r||i/r==i%r-r/2?"*":" "),i++,i%r==0?
        P("\n"):0);
看这迷糊!!!!
----------------解决方案--------------------------------------------------------
我在书上看到的,就是不清楚,所以才问你们!
----------------解决方案--------------------------------------------------------

#include <stdio.h> #include <stdlib.h> /* #define P printf */ /*#define I atoi */ //这里是替换

int main(int a,char*v[]) //main参数 { int i,r=5 ; if(a>1)r=atoi(v[1]); //假如带参数运行,则取得参数项第一项的值作为*号方程的行数 if(r<=0)r=5 ; //如果输入的参数小过0,则使用默认参数 5 . if(r%2==0)++r ; //如果行数是偶数,则自增1,目的是为了满足下面的计算 for(i=0;i<r*r;i++) //将此凌形方程看成是 r*r的正方形, { if(i/r==(3*r)/2-(i%r+1))printf("*"); else if(i/r==r/2-i%r)printf("*"); else if(i/r==r/2+i%r)printf("*"); else if(i/r==i%r-r/2)printf("*"); else printf(" "); // 这里计算每一个点是打*,还是空格

if((i+1)%r==0)printf("\n"); //回车计算 /*P(i/r==(3*r)/2-(i%r+1)||i/r==r/2-i%r||i/r==r/2+i%r||i/r==i%r-r/2?"*":" "),i++,i%r==0?P("\n"):0; */ } return 0 ; }


----------------解决方案--------------------------------------------------------

main() { int t=0,i,n=11;//n为行数,这个可以打偶数行和奇数行

i=n/2+n%2;

for(;i;t+=2) { printf("%*s%*s\n",i,"*",t,"*"+(i==n/2+n%2)); i--; }

if(n%2)i++,t-=2;

for(;i<n/2+n%2;) { i++; t-=2; printf("%*s%*s\n",i,"*",t,"*"+(i==n/2+n%2));

} } 当然,还可以用递归来做得更简洁,一条语句就行了。


----------------解决方案--------------------------------------------------------
是在书上看的么,还是在别的论坛上看的帖子???

这样的资料可以不看,因为写的就很乱,肯定不是高手(书上这样写的)!!!

无聊的时候可以打发一下时间!如果是刚入门,最好找例子排列比较整齐的看,这样容易入门!!!
----------------解决方案--------------------------------------------------------