搜索
楼主: rosynirvana
打印 上一主题 下一主题

一份个人制作的习题解答

[复制链接]
31#
 楼主| 发表于 2013-11-29 21:24:01 | 只看该作者
4399APPLE 发表于 2013-11-29 19:40
没错,就像一样

那要看你如何定义“错误”了

用位与代替逻辑与是个典型的语意错误,在条件判断的情况下,要做的事情是判断两端的表达式是否同时为真,而非按位求与
或许你觉得求得的值是一样的,但那是比较简单的表达式,如果两端的表达式有副作用,& 和 &&求得的值就未必一样了,因为&&强制求值顺序,而&没有这个效力
举例来说
i = -1; (i++) & i的值是未定义的;而i = -1;  (i++) && i是有明确定义的

至于scanf("%d", a); 当然可以迫使它有正确的语意, 但是这样写所有人第一眼看上去都会怀疑是不是写错了,如果不是私人项目里的代码,一般是要加注释说明的

当然,如果你所谓“没错”指的只是“能通过编译”,那只要改改编译条件就能让编译器报错了
32#
发表于 2013-11-30 08:56:07 | 只看该作者
rosynirvana 发表于 2013-11-29 21:24
那要看你如何定义“错误”了

用位与代替逻辑与是个典型的语意错误,在条件判断的情况下,要做的事情是 ...

好吧,我知道&和&&的含义不一样,如果是&,那编译器就会先按位“与”运算,再求值是不是0,但如果是&&,编译器就知道这两个条件是连在一起的,是不是?
对于
  1. scanf("%d",a);
复制代码
编译器根本不会报编译错误,但运行之后就是
XXX.exe已停止工作
Windows可以联机解决方案

33#
发表于 2013-11-30 08:57:09 | 只看该作者
rosynirvana 发表于 2013-11-29 21:24
那要看你如何定义“错误”了

用位与代替逻辑与是个典型的语意错误,在条件判断的情况下,要做的事情是 ...

嗯,好吧,我知道了
34#
发表于 2013-12-9 11:24:36 | 只看该作者
本帖最后由 stu 于 2013-12-9 12:35 编辑

发问



如何用FOR语句循环实现  http://bbs.ahalei.com/thread-3875-1-1.html
35#
发表于 2013-12-13 16:18:52 | 只看该作者
answer.txt 中P63
你的答案是(2) printf("%d",c); -> printf("%d",a);
应该是 printf("%c",a); 吧
36#
 楼主| 发表于 2013-12-13 16:41:54 | 只看该作者
LazyGuy 发表于 2013-12-13 16:18
answer.txt 中P63
你的答案是(2) printf("%d",c); -> printf("%d",a);
应该是 printf("%c",a); 吧

yep,你说的对
但是电子版的书已经重新排版过了,我就不更新这个文档了~
37#
发表于 2014-8-20 07:57:34 | 只看该作者
rosynirvana 发表于 2013-4-5 21:42
sec只是一个普通的变量名啊,叫什么都可以……
思路是把2分钟转化成秒,每秒减少1,然后再计算剩余多少 ...

你这个解题思路比我那个强多了,代码简洁明了。
分钟用除,秒数用模(另外%02d占位符宽度不足补0,看来我用if来判断是多余的了。)
38#
发表于 2014-9-23 16:29:24 | 只看该作者
学习了.....
39#
发表于 2015-2-3 04:55:01 | 只看该作者
AQSQ 发表于 2013-3-4 23:55
还是有点不大明白,呵呵。

这个0可以怎么理解呢?0代表着什么呢?谢谢了!

这玩意,你要刻苦的动脑子哦,不难
40#
发表于 2015-7-15 15:32:32 | 只看该作者
感谢楼主无私奉献,正好卡在while嵌套循环这一节
41#
发表于 2016-12-10 22:35:53 | 只看该作者
楼主好厉害
PS:我也喜欢Nirvana
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表