搜索
查看: 12158|回复: 40
打印 上一主题 下一主题

一份个人制作的习题解答

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-28 15:13:02 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 rosynirvana 于 2013-2-28 15:15 编辑

若有错误请指出
任何人都可以随意使用这份解答

代码风格上尽量向ahaC教程靠拢
解法尽力做到容易理解
在以后的版本中可能会添加“更好的解法”

ahaC.zip

7.82 KB, 下载次数: 849

评分

参与人数 1啊哈币 +5 收起 理由
啊哈磊 + 5 很给力!

查看全部评分

沙发
 楼主| 发表于 2013-2-28 23:57:32 | 显示全部楼层
AQSQ 发表于 2013-2-28 23:25
求解,从键盘输入两个正整数,让计算机判断第2个数是不是第1个数的约数。如果是则输出YES,不是输出NO。

...

输入15和5
a%b = 15 % 5 = 0
0 == 0
这个式子是真的
所以显示 yes
板凳
 楼主| 发表于 2013-3-5 01:29:59 | 显示全部楼层
AQSQ 发表于 2013-3-4 23:55
还是有点不大明白,呵呵。

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

您是说哪一个0呢?

第一个0表示15除以5的余数(%符号表示计算余数)
第二个0就是上面那个0
第三个0是表达式里原本的0

用自然语言叙述一遍,就是计算15除以5的余数,然后将这个余数和0相比较,看看余数和0是否相等
如果是,那么输入yes;不然就输出no
地板
 楼主| 发表于 2013-4-2 12:15:10 | 显示全部楼层
julius 发表于 2013-4-2 10:38
#include
#include
#include

检查你的第九行
5#
 楼主| 发表于 2013-4-5 21:42:31 | 显示全部楼层
jaytop 发表于 2013-4-5 19:42
#include
#include

sec只是一个普通的变量名啊,叫什么都可以……
思路是把2分钟转化成秒,每秒减少1,然后再计算剩余多少分多少秒
6#
 楼主| 发表于 2013-4-10 10:55:31 | 显示全部楼层
julius 发表于 2013-4-10 09:43
= = 我表示我运行的很正常

if(a<9&a>1)

&是位与,这里应该用的是逻辑与&&
编译器是发现不了这种错误的
7#
 楼主| 发表于 2013-7-19 11:56:46 | 显示全部楼层
gretchency 发表于 2013-7-19 11:40
楼主你194页的习题貌似不对哦。题目要求是小人从右往左跑,你的还是从左往右跑啊?

没错,从控制台50跑到20,你确定编译的是我写的那段?
8#
 楼主| 发表于 2013-11-4 02:34:55 | 显示全部楼层
whwlove 发表于 2013-11-2 00:31
楼主,能出后面几章的答案吗,我用的不是电子书。

都写出来了,去题解区翻吧
如果没看错后四章只有这么多习题
http://bbs.ahalei.com/forum-60-1.html
9#
 楼主| 发表于 2013-11-29 21:24:01 | 显示全部楼层
4399APPLE 发表于 2013-11-29 19:40
没错,就像一样

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

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

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

当然,如果你所谓“没错”指的只是“能通过编译”,那只要改改编译条件就能让编译器报错了
10#
 楼主| 发表于 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,你说的对
但是电子版的书已经重新排版过了,我就不更新这个文档了~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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