论坛: 编程破解 标题: c语言 复制本贴地址    
作者: lover_521 [lover_521]    论坛用户   登录
main()
{int a=1,b=0;
while(a<9)
b+=a/++a;
printf("%d,",b);
}
结果是多少?没一步的结果.第一步是1还是1/2为什么.谢谢大家了。帮帮忙.

地主 发表时间: 11/14 13:59

回复: lwei889 [lwei889]   论坛用户   登录
main()
{int a=1,b=0;
while(a<9)
  { b+=a/++a;
    printf("b=%d\n",b);
  }
}
把这个程序少作修改,你就能清楚的看到每一步的结果
至于第一步为什么等于等价于下面这个程序
main()
{int a=1,b=0;
while(a<9)
  { a++;  //也可写成++a  区别是a++,先使用a的值,在使a加一 ++a则相反
    b+=a/a;
    printf("b=%d\n",b);
  }
}

你要是学c语言的话,书上肯定有介绍的,建议你认真的看书,在一个就是写易懂的程序,提高程序的可读性!


B1层 发表时间: 11/14 14:37

回复: cyshaoping [cyshaoping]   论坛用户   登录
结果是多少,你不会用编译器编译吗?

B2层 发表时间: 11/14 16:49

回复: ziaichen [ziaichen]   论坛用户   登录
你还是好好看看书吧
最好你能从基础看起  认真一点

B3层 发表时间: 11/14 17:03

回复: gentleman [gentleman]   论坛用户   登录
是不是1/2啊!!!
++a先加一赋值,等于2,
是不是这样啊!!
不懂!!!

B4层 发表时间: 11/15 09:37

回复: zhoen889 [zhoen889]   论坛用户   登录
如果不加括号,结果是:8
加后是:1 2 3 4 5 6 7 8
     


[此贴被 zhoen889(zhoen889) 在 11月28日20时23分 编辑过]

B5层 发表时间: 11/28 17:08

回复: yzl800527 [yzl800527]   论坛用户   登录
什么是基础的呀???我是个小小小的菜鸟~!!!!

告诉我好吗?多多多多谢了。

B6层 发表时间: 11/30 16:33

回复: sungod [sungod]   论坛用户   登录
结果为0
因为a/++a=0

B7层 发表时间: 11/30 16:52

回复: rainnet [rainnet]   论坛用户   登录
结果应该等于0吧

B8层 发表时间: 12/01 20:03

回复: xiao99 [xiao99]   论坛用户   登录
结果是:8,
你是个笨蛋,你记好了!

B9层 发表时间: 12/02 21:28

回复: whq1015 [whq1015]   论坛用户   登录
前面没加头文件
结果应该是0

B10层 发表时间: 12/03 14:02

回复: zhoen889 [zhoen889]   论坛用户   登录
在tc中用printf输出函数不用写头文件!!

B11层 发表时间: 12/04 10:34

回复: windll [windll]   论坛用户   登录
当然是8拉
a++了
a的值每一次都变了嘛

B12层 发表时间: 12/04 23:07

回复: ziaichen [ziaichen]   论坛用户   登录
我认为所谓的基础就是:你要先清楚c语言的一些基本表达式、语句含义(特别是赋值语句),基本运算(譬如位运算等),以及在编写程序中因格式的不同而所制定的规则等,至少要具有这样的基础,才能看懂一些基本的c程序。


[此贴被 ziaichen(ziaichen) 在 12月05日08时54分 编辑过]

B13层 发表时间: 12/05 08:38

回复: ziaichen [ziaichen]   论坛用户   登录
可以看看这个网站,里面使关于c编程的一些基本介绍
http://paul.rutgers.edu/~junl/learning/TC/


[此贴被 ziaichen(ziaichen) 在 12月05日09时09分 编辑过]

B14层 发表时间: 12/05 09:24

回复: shen [shen]   论坛用户   登录
main(){
int a=0,b=0;
printf("%d",++a);        /*出来的结果为1*/
printf("%d",b++);        /*出来的结果为0*/
}
++a是先加后用,b++是先用后加
最后的结果都是1

B15层 发表时间: 12/05 14:28

回复: beautyproo [beautyproo]   论坛用户   登录
当然是1了,不论是先加后加,自己除自己都是1啊

B16层 发表时间: 12/05 16:10

回复: zhengzheng [zhengzheng]   论坛用户   登录
呵呵,是0?是1?是8?还是‘’‘’‘

B17层 发表时间: 12/05 20:45

回复: zhoen889 [zhoen889]   论坛用户   登录
上机运行就知道了,何必呢!!

B18层 发表时间: 12/06 19:32

回复: xiaofu [fuxianfu]   论坛用户   登录
只要知道单目运算符和数据运算符的优先顺序就可以了。
切!

B19层 发表时间: 12/09 03:39

回复: kenter1643 [kenter1643]   论坛用户   登录
搞清楚++i 和i++的关系吧

B20层 发表时间: 12/09 14:59

回复: honyry [honyry]   论坛用户   登录
我认为应该是8

第一步是得1不是1/2 如果此处!=1  此处=1/2那么由于int变量相当于求模就会=0

我没有上机啊  也许我分析的不对  有不对的请指出哦 谢谢

B21层 发表时间: 12/09 15:02

回复: kenter1643 [kenter1643]   论坛用户   登录
第一步是a/++a嘛!不是等于1/2吗??是C语言啊!!a/++a才是1嘛.

B22层 发表时间: 12/09 15:38

回复: honyry [honyry]   论坛用户   登录
楼上的你说的是什么意思啊?a/++a你说是1还是1/2?

B23层 发表时间: 12/09 15:48

回复: kenter1643 [kenter1643]   论坛用户   登录
是1/2吧!个人理解

B24层 发表时间: 12/09 16:03

回复: honyry [honyry]   论坛用户   登录
不对  应该是1    没有1/2的可能  如果是按逻辑是1/2  因为 b是int型变量  也会对0。5取模[0。5]=0  就应该是0了  但根据++的用法看就应该是1  不信上机!

B25层 发表时间: 12/09 16:21

回复: zoom2002 [zoom2002]   论坛用户   登录
当然1/2

B26层 发表时间: 12/09 20:39

回复: peter [peter]   论坛用户   登录
自己上机算一下就知了
结果应该是 0 (口算的)原因:那是 int 型
还有 ++ 的优先级是比 / 要高,面结合方向是自右至左


[此贴被 peter(peter) 在 06月11日16时05分 编辑过]

B27层 发表时间: 04-05-29 20:36

回复: Anubis [shajia2646]   论坛用户   登录
结果为8,不信的话你上机试试,我用的是TC2.0



[此贴被 Anubis(shajia2646) 在 05月31日17时38分 编辑过]

B28层 发表时间: 04-05-31 17:37

回复: Titians [flyfalcon]      登录
a/a++
a已经自增1了
也就相当于
a+=1
a/a
这样的话,应该明白是1,而不是1/2了吧
因为这是先进行++ 运算,  a++ , a的值已经增加1了,  分子也是a那么在原来的基础不是也
增1了么。


B29层 发表时间: 04-06-09 11:24

回复: cfirer [cfirer]   论坛用户   登录
这个结果是
1 2 3 4 5 6 7 8
我已经试了

说是8的
是因为while(a<9)后面没有{}

B30层 发表时间: 04-06-09 13:16

回复: cfirer [cfirer]   论坛用户   登录
看错看错
楼主也没while后面也没加{}
main()
{int a=1,b=0;
while(a<9)
b+=a/++a;
printf("%d,",b);
}
这个结果是8
main()
{int a=1,b=0;
while(a<9)
{b+=a/++a;
printf("%d,",b);}

}
这个结果是1,2,3,4,5,6,7,8,


B31层 发表时间: 04-06-09 13:19

回复: cfirer [cfirer]   论坛用户   登录
楼上同志是正确答案
大家不要灌水了嘎嘎

B32层 发表时间: 04-06-09 13:20

回复: windflower [windflower]   论坛用户   登录
但是,
我编译了下,结果也是8


B33层 发表时间: 04-06-10 22:23

回复: lgf [lgf]   论坛用户   登录
~~~就是

B34层 发表时间: 04-06-12 12:05

回复: yndx301com [yndx301com]   论坛用户   登录
a++;++a;这种最好在C中少用。
a++:是把a的值赋了再运算。而++a是先算后赋值。
这种写程序易出问题,不方便读写/修改。最好采用三者关系的变量来完成.

B35层 发表时间: 04-06-13 14:05

回复: windflower [windflower]   论坛用户   登录
楼上,你恰恰说反了。

B36层 发表时间: 04-06-13 22:20

回复: xuepeng [xuepeng]   论坛用户   登录
应该是1吧
上机一试就知道了
这是很基础的程序啊,多看看书吧。搞清楚运算符的优先级、结合方向

B37层 发表时间: 04-06-14 08:52

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号