首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一段c代码看不懂 求大侠指导解决方法

2012-04-19 
一段c代码看不懂 求大侠指导代码很简短,但就是看不懂,不晓得谁写的。问了好多人都不会。代码如下,可以打印乘

一段c代码看不懂 求大侠指导
代码很简短,但就是看不懂,不晓得谁写的。问了好多人都不会。

代码如下,可以打印乘法口诀表,只使用了一个变量。

求指导啊。


#include<stdio.h>
int r=1;
main(_)
{
printf("%d*%d=%-4d",_,r,_*r),++_>r?puts(""),r++^9&&main(1):main(_);

}


谢谢啦!!!!!!!

[解决办法]
/*程序是这样执行的
第一次T=r=1所以打印出1*1=1
接着进入三元运算符"?:"判断++T>r时候成立,这里是成立的,输出换行(puts(""))执 "r++^9!(=0)执行main(1)此时T=1,r经过++后r=2"
1*2=2,此时发现++T>r不成立执行main(T),输出2*2=4,到目前为止输出如下
1*1=1
1*2=2 2*2=4
剩下部分同上分析
*/
注意r++^9&&main(1)是一个逻辑运算符.只有当r++^9!=0是执行main(1)
[解决办法]

C/C++ code
int r = 1;//代表行数int _tmain(int argc, _TCHAR* argv[]){    printf("%d*%d=%-4d",argc,r,argc*r);    argc++;//argc代表列数    if(argc > r)//如果列数大于行数,则要换行    {        puts("");//换行        if(r!=9)//当r!=9时,r^9一定是真,这里是用来控制递归结束的:到第9行时结束程序。        {            r++;            _tmain(1, NULL);//把列数重新置为1。        }    }    else _tmain(argc, NULL);//列数+1后,继续打印。    return 0;} 

热点排行