NTUBIME96-HW 板


LINE

╔═════════════╗ ║九十二学年度期中考试题解答║ ╚═════════════╝ 【第一题】 A = 9 B = 0 C = 0 D = 2 E = 160 【第二题】 2 (换行) 5 3 (换行) 5 4 (换行) 5 3 (换行) 5 1 (换行) 5 P.S. 这题有一大票人因为那个 5 挂蛋....... 虽然很同情,但是填充题就是这样.... 【第三题】 0000000000 ++++++++++ 0000000000 ++++++++++ 0000000000 P.S. 怎麽很多人写 0+0+0+.... 呢? @@ 【第四题】 a = 10 a = 30 a = 10 a = 5 a = 5 a = 15 a = 16 a = 5 a = 16 a = 17 P.S. 基本上像这种题目,如果中间有哪个不会的话, 最好写个「a = 」然後空下来,让阅卷的人知道你只有这个不会, 而不是後面一整串都搞错。 否则的话,就好像答案卡画错格一样,那扣下来是很伤的... 这次我是根据你考卷上计算的痕迹来判断, 不过如果你考卷白白的超乾净,那就.......... 【第五题】 #include <iostream> #include <cmath> using namespace std; void main() { int i = 1; // 计数器 while(i <= 10) cout << pow(2, i++) << " "; // 带入 power function,印出值,然後把计数器加 1 cout << endl; } P.S. 老师特别规定要用 while,用 for 的人我酌扣两分。 【第六题】 #include <iostream> using namespace std; float my_exp(int n); // 计算指数函数的函式 void main() { // 呼叫函式并印出值 for(int i=1; i<=10; i++) cout << "my_exp(" << i << ") = " << my_exp(i) << endl; } float my_exp(int n) { float e = 1; // 指数函数的值,第一项为 1 float temp = 1; // 计算个别项的变数 // 计算後面 19 项 for(int i=1; i<20; i++) { temp *= float(n) / i; // 连乘以达到次方与阶乘的效果 e += temp; // 累计各项次 } return e; } P.S. 看清楚,第 20 项是 (x^19 / 19!) 喔! 另外,请注意 temp *= float(n) / i; 这一行。 因为 n 和 i 都是 int type,所以程式会以 int 下去运算, 那出来就变整数了。是故一定要先转成 float 再去除 i, 算出来的质才会是小数。这是很常见的 bug 来源, 请务必要特别小心。 (又,我看到有些人写 float(n/i),这样是没用的。) 【第七题】 #include <iostream> #include <iomanip> using namespace std; void main() { int a1 = 0; // 第 n-2 项 int a2 = 1; // 第 n-1 项 int a3; // 第 n 项 // 先印出首二项 cout << setw(5) << a1 << "," << setw(5) << a2 << ","; // 然後是剩下的 18 项 for(int i=2; i<20; i++) { // 计算这一项应该是多少 a3 = a1 + a2; // 每一项都是前两项的和 a1 = a2; // 前进一项 a2 = a3; // 前进一项 // 算完了就印出来 cout << setw(5) << a3 << ","; // 每五项换个行 if((i+1)%5 == 0) cout << endl; } } P.S. 我发现很多人喜欢用递回,的确它在某些地方是很方便, 但是切记它会占用大量的记忆体,并造成程式效能低落。 基本上,如果能不用的话,就最好不要用。 【第八题】 #include <iostream> using namespace std; int find_GCD(int, int); // 找出 GCD 的函式 void main() { int int1, int2; // 给人家输入用 cout << "Please input two intergers : "; cin >> int1 >> int2; cout << "(" << int1 << ", " << int2 << ") = " << find_GCD(int1, int2) << endl; } int find_GCD(int a, int b) { int c = 0; // 暂存器 while(1) { // 辗转相除法 c = a % b; // 看看余数是多少 if(c == 0) // 除尽了,那除数就是 GCD return b; // 没除尽,把除数拿来当下次的被除数,余数当下次的除数 a = b; b = c; } } 【第九题】 #include <iostream> #include <ctime> #include <cstdlib> #include <cstdio> using namespace std; int two_dice(); // 掷骰子函式 void main() { cout << "这是一个闲闲掷骰子的程式..........\n" << "每次丢两颗,共丢一万次,\n" << "我会把每次的结果都印出来,\n" << "希望你有足够的动态视力去看它.........\n" << "最後我还会把这一万次的平均值告诉你,\n" << "可以顺便复习一下机率.........@@\n\n"; cout << "随便按个键,要开始丢了........\n"; getchar(); int d = 0; // 这次的结果 float avg = 0; // 平均值 for(int i=0; i<10000; i++) { d = two_dice(); // 丢啊... cout << "第 " << i << " 次掷骰的结果是:" << d << endl; avg += d; // 累加 } avg /= 10000.0f; // 平均 cout << "\n丢完了,平均值是 " << avg << "\n"; } int two_dice() { int d1 = rand()%6 + 1; // 第一颗骰子 int d2 = rand()%6 + 2; // 第二颗骰子 return d1+d2; // 两颗加起来传回去 } 最後说一下评分标准: 1. 语法错误一次扣一分。 2. 逻辑错误视情况而定,从 2 分到 8、9 分都有可能。 3. 如果老师有特别要求(比如说要写成函式什麽的)而没有达到,扣两分。 4. include 和 using 我不会特别去挑你有没有漏掉, 说实在要去记哪个函式在哪个标头档也是满无聊的。 然而有两个情形例外,我还是会扣分: a) 你有写但是写错了,这种算在语法错误的帐上。 b) 你什麽都没写,那我会开始怀疑你是不是根本不知道有这回事..... ※ 有件事要特别提一下: 有几位同学提出质问,他们引用的时候写成这样: #include "iostream.h" 然後不写 using,为什麽我扣了一分? 的确这样 compile 会过,但是那并不代表你应该这样写。 这要牵扯到 C++ 的演革,早期的 C++ 是没有 namespace 的, 此一观念一直到了第三版才被列入标准。 在新标准中,名称空间的标示是必须的, 你如果不想每次都写 abc::ooxx,那就请加个 using。 然而有许多程式是在第三版 C++ 诞生前就已经存在, 为了能够与这些程式共存,所以制定出没有 .h 的 header file, 让编译器以此为依据而达到向下相容的目的--这就是你能通过检查的原因。 但是,namespace 之所以会被加入标准,就是因为名称冲突实在太容易发生了, 我自己就遇到过许多遍........相信我,当你花了许多时间去 debug, 到头来却发现是这种问题的时候,要有强烈的自制力才不会去砸电脑......... 就如同许多 C++ 与 C 的差异一样,这个规则有其必要性,是应该要去遵守的。 尤其现在是在学习的阶段,我认为应该要养成习惯使用新的规则, 这是我扣分的理由。 最後,如果你仍然对你的成绩有疑问, 欢迎下来农机馆地下 105 实验室,找个姓熊的理论。 (什麽?为什麽是 105? 呃,因为 405 太小了,所以每年都要有倒楣鬼被放逐......) bear -- 这次的经典: 有位仁兄在第六题给我这样写: e = 1+x+x*x/2+x*x*x/2*3+x*x*x*x/2*3*4+x*x*x*x*x/2*3*4*5 +x*x*x*x*x*x/2*3*4*5*6+...........(我没力了....) 真是好样的...... 比起来那些在第七题用 cout 印 20 个数字的人真是太和蔼可亲了.......... -- 你不也是猎人吗? 来抓我啊! --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.94.173 ※ 编辑: SuperBEAR 来自: 140.112.94.173 (11/27 19:02)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP