




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、chapter 2answers to selected exercises2. was #2 (a) the program contains one directive (#include) and four statements (three calls of printf and one return).(b) parkinsons law:work expands so as to fill the timeavailable for its completion.3. was #4#include int main(void) int height = 8, length = 12
2、, width = 10, volume; volume = height * length * width; printf(dimensions: %dx%dx%dn, length, width, height); printf(volume (cubic inches): %dn, volume); printf(dimensional weight (pounds): %dn, (volume + 165) / 166); return 0;4. was #6 heres one possible program:#include int main(void) int i, j, k;
3、 float x, y, z; printf(value of i: %dn, i); printf(value of j: %dn, j); printf(value of k: %dn, k); printf(value of x: %gn, x); printf(value of y: %gn, y); printf(value of z: %gn, z); return 0;when compiled using gcc and then executed, this program produced the following output:value of i: 5618848va
4、lue of j: 0value of k: 6844404value of x: 3.98979e-34value of y: 9.59105e-39value of z: 9.59105e-39the values printed depend on many factors, so the chance that youll get exactly these numbers is small.5. was #10 (a) is not legal because 100_bottles begins with a digit.8. was #12 there are 14 tokens
5、: a, =, (, 3, *, q, -, p, *, p, ), /, 3, and ;. answers to selected programming projects4. was #8; modified#include int main(void) float original_amount, amount_with_tax; printf(enter an amount: ); scanf(%f, &original_amount); amount_with_tax = original_amount * 1.05f; printf(with tax added: $%.2fn,
6、 amount_with_tax); return 0;the amount_with_tax variable is unnecessary. if we remove it, the program is slightly shorter:#include int main(void) float original_amount; printf(enter an amount: ); scanf(%f, &original_amount); printf(with tax added: $%.2fn, original_amount * 1.05f); return 0;chapter 3
7、answers to selected exercises2. was #2 (a) printf(%-8.1e, x); (b) printf(%10.6e, x); (c) printf(%-8.3f, x); (d) printf(%6.0f, x); 5. was #8 the values of x, i, and y will be 12.3, 45, and .6, respectively.answers to selected programming projects1. was #4; modified #include int main(void) int month,
8、day, year; printf(enter a date (mm/dd/yyyy): ); scanf(%d/%d/%d, &month, &day, &year); printf(you entered the date %d%.2d%.2dn, year, month, day); return 0;3. was #6; modified #include int main(void) int prefix, group, publisher, item, check_digit; printf(enter isbn: ); scanf(%d-%d-%d-%d-%d, &prefix,
9、 &group, &publisher, &item, &check_digit); printf(gs1 prefix: %dn, prefix); printf(group identifier: %dn, group); printf(publisher code: %dn, publisher); printf(item number: %dn, item); printf(check digit: %dn, check_digit); /* the five printf calls can be combined as follows: printf(gs1 prefix: %dn
10、group identifier: %dnpublisher code: %dnitem number: %dncheck digit: %dn, prefix, group, publisher, item, check_digit); */ return 0;chapter 4answers to selected exercises2. was #2 not in c89. suppose that i is 9 and j is 7. the value of (-i)/j could be either 1 or 2, depending on the implementation.
11、 on the other hand, the value of -(i/j) is always 1, regardless of the implementation. in c99, on the other hand, the value of (-i)/j must be equal to the value of -(i/j). 9. was #6 (a) 63 8 (b) 3 2 1 (c) 2 -1 3 (d) 0 0 0 13. was #8 the expression +i is equivalent to (i += 1). the value of both expr
12、essions is i after the increment has been performed. answers to selected programming projects2. was #4 #include int main(void) int n; printf(enter a three-digit number: ); scanf(%d, &n); printf(the reversal is: %d%d%dn, n % 10, (n / 10) % 10, n / 100); return 0;chapter 5answers to selected exercises
13、2. was #2 (a) 1 (b) 1 (c) 1 (d) 1 4. was #4 (i j) - (i j) 6. was #12 yes, the statement is legal. when n is equal to 5, it does nothing, since 5 is not equal to 9. 10. was #16 the output is onetwosince there are no break statements after the cases. answers to selected programming projects2. was #6 #
14、include int main(void) int hours, minutes; printf(enter a 24-hour time: ); scanf(%d:%d, &hours, &minutes); printf(equivalent 12-hour time: ); if (hours = 0) printf(12:%.2d amn, minutes); else if (hours 12) printf(%d:%.2d amn, hours, minutes); else if (hours = 12) printf(%d:%.2d pmn, hours, minutes);
15、 else printf(%d:%.2d pmn, hours - 12, minutes); return 0;4. was #8; modified #include int main(void) int speed; printf(enter a wind speed in knots: ); scanf(%d, &speed); if (speed 1) printf(calmn); else if (speed = 3) printf(light airn); else if (speed = 27) printf(breezen); else if (speed = 47) pri
16、ntf(galen); else if (speed = 63) printf(stormn); else printf(hurricanen); return 0;6. was #10 #include int main(void) int check_digit, d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, first_sum, second_sum, total; printf(enter the first (single) digit: ); scanf(%1d, &d); printf(enter first group of five d
17、igits: ); scanf(%1d%1d%1d%1d%1d, &i1, &i2, &i3, &i4, &i5); printf(enter second group of five digits: ); scanf(%1d%1d%1d%1d%1d, &j1, &j2, &j3, &j4, &j5); printf(enter the last (single) digit: ); scanf(%1d, &check_digit); first_sum = d + i2 + i4 + j1 + j3 + j5; second_sum = i1 + i3 + i5 + j2 + j4; tot
18、al = 3 * first_sum + second_sum; if (check_digit = 9 - (total - 1) % 10) printf(validn); else printf(not validn); return 0;10. was #14 #include int main(void) int grade; printf(enter numerical grade: ); scanf(%d, &grade); if (grade 100) printf(illegal graden); return 0; switch (grade / 10) case 10:
19、case 9: printf(letter grade: an); break; case 8: printf(letter grade: bn); break; case 7: printf(letter grade: cn); break; case 6: printf(letter grade: dn); break; case 5: case 4: case 3: case 2: case 1: case 0: printf(letter grade: fn); break; return 0;chapter 6answers to selected exercises4. was #
20、10 (c) is not equivalent to (a) and (b), because i is incremented before the loop body is executed. 10. was #12 consider the following while loop: while () continue; the equivalent code using goto would have the following appearance:while () goto loop_end; loop_end: ; /* null statement */12. was #14
21、 for (d = 2; d * d = n; d+) if (n % d = 0) break;the if statement that follows the loop will need to be modified as well:if (d * d = n) printf(%d is divisible by %dn, n, d);else printf(%d is primen, n);14. was #16 the problem is the semicolon at the end of the first line. if we remove it, the statem
22、ent is now correct: if (n % 2 = 0) printf(n is evenn);answers to selected programming projects2. was #2 #include int main(void) int m, n, remainder; printf(enter two integers: ); scanf(%d%d, &m, &n); while (n != 0) remainder = m % n; m = n; n = remainder; printf(greatest common divisor: %dn, m); ret
23、urn 0;4. was #4 #include int main(void) float commission, value; printf(enter value of trade: ); scanf(%f, &value); while (value != 0.0f) if (value 2500.00f) commission = 30.00f + .017f * value; else if (value 6250.00f) commission = 56.00f + .0066f * value; else if (value 20000.00f) commission = 76.
24、00f + .0034f * value; else if (value 50000.00f) commission = 100.00f + .0022f * value; else if (value 500000.00f) commission = 155.00f + .0011f * value; else commission = 255.00f + .0009f * value; if (commission 39.00f) commission = 39.00f; printf(commission: $%.2fnn, commission); printf(enter value
25、 of trade: ); scanf(%f, &value); return 0;6. was #6 #include int main(void) int i, n; printf(enter limit on maximum square: ); scanf(%d, &n); for (i = 2; i * i = n; i += 2) printf(%dn, i * i); return 0;8. was #8 #include int main(void) int i, n, start_day; printf(enter number of days in month: ); sc
26、anf(%d, &n); printf(enter starting day of the week (1=sun, 7=sat): ); scanf(%d, &start_day); /* print any leading blank dates */ for (i = 1; i start_day; i+) printf( ); /* now print the calendar */ for (i = 1; i = n; i+) printf(%3d, i); if (start_day + i - 1) % 7 = 0) printf(n); return 0;chapter 7an
27、swers to selected exercises3. was #4 (b) is not legal. 4. was #6 (d) is illegal, since printf requires a string, not a character, as its first argument. 10. was #14 unsigned int, because the (int) cast applies only to j, not j * k. 12. was #16 the value of i is converted to float and added to f, the
28、n the result is converted to double and stored in d. 14. was #18 no. converting f to int will fail if the value stored in f exceeds the largest value of type int. answers to selected programming projects1. was #2 short int values are usually stored in 16 bits, causing failure at 182. int and long in
29、t values are usually stored in 32 bits, with failure occurring at 46341. 2. was #8 #include int main(void) int i, n; char ch; printf(this program prints a table of squares.n); printf(enter number of entries in table: ); scanf(%d, &n); ch = getchar(); /* dispose of new-line character following number
30、 of entries */ /* could simply be getchar(); */ for (i = 1; i = n; i+) printf(%10d%10dn, i, i * i); if (i % 24 = 0) printf(press enter to continue.); ch = getchar(); /* or simply getchar(); */ return 0;5. was #10 #include #include int main(void) int sum = 0; char ch; printf(enter a word: ); while (c
31、h = getchar() != n) switch (toupper(ch) case d: case g: sum += 2; break; case b: case c: case m: case p: sum += 3; break; case f: case h: case v: case w: case y: sum += 4; break; case k: sum += 5; break; case j: case x: sum += 8; break; case q: case z: sum += 10; break; default: sum+; break; printf(
32、scrabble value: %dn, sum); return 0;6. was #12 #include int main(void) printf(size of int: %dn, (int) sizeof(int); printf(size of short: %dn, (int) sizeof(short); printf(size of long: %dn, (int) sizeof(long); printf(size of float: %dn, (int) sizeof(float); printf(size of double: %dn, (int) sizeof(do
33、uble); printf(size of long double: %dn, (int) sizeof(long double); return 0;since the type of a sizeof expression may vary from one implementation to another, its necessary in c89 to cast sizeof expressions to a known type before printing them. the sizes of the basic types are small numbers, so its
34、safe to cast them to int. (in general, however, its best to cast sizeof expressions to unsigned long and print them using %lu.) in c99, we can avoid the cast by using the %zu conversion specification.chapter 8answers to selected exercises1. was #4 the problem with sizeof(a) / sizeof(t) is that it ca
35、nt easily be checked for correctness by someone reading the program. (the reader would have to locate the declaration of a and make sure that its elements have type t.) 2. was #8 to use a digit d (in character form) as a subscript into the array a, we would write ad-0. this assumes that digits have
36、consecutive codes in the underlying character set, which is true of ascii and other popular character sets. 7. was #10 const int segments107 = 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
37、, 1, 1, 1, 1, 1, 0, 1, 1;answers to selected programming projects2. was #2 #include int main(void) int digit_count10 = 0; int digit; long n; printf(enter a number: ); scanf(%ld, &n); while (n 0) digit = n % 10; digit_countdigit+; n /= 10; printf (digit: ); for (digit = 0; digit = 9; digit+) printf(%
38、3d, digit); printf(noccurrences:); for (digit = 0; digit = 9; digit+) printf(%3d, digit_countdigit); printf(n); return 0;5. was #6 #include #define num_rates (int) (sizeof(value) / sizeof(value0)#define initial_balance 100.00int main(void) int i, low_rate, month, num_years, year; double value5; prin
39、tf(enter interest rate: ); scanf(%d, &low_rate); printf(enter number of years: ); scanf(%d, &num_years); printf(nyears); for (i = 0; i num_rates; i+) printf(%6d%, low_rate + i); valuei = initial_balance; printf(n); for (year = 1; year = num_years; year+) printf(%3d , year); for (i = 0; i num_rates;
40、i+) for (month = 1; month = 12; month+) valuei += (double) (low_rate + i) / 12) / 100.0 * valuei; printf(%7.2f, valuei); printf(n); return 0;8. was #12 #include #define num_quizzes 5#define num_students 5int main(void) int gradesnum_studentsnum_quizzes; int high, low, quiz, student, total; for (stud
41、ent = 0; student num_students; student+) printf(enter grades for student %d: , student + 1); for (quiz = 0; quiz num_quizzes; quiz+) scanf(%d, &gradesstudentquiz); printf(nstudent total averagen); for (student = 0; student num_students; student+) printf(%4d , student + 1); total = 0; for (quiz = 0;
42、quiz num_quizzes; quiz+) total += gradesstudentquiz; printf(%3d %3dn, total, total / num_quizzes); printf(nquiz average high lown); for (quiz = 0; quiz num_quizzes; quiz+) printf(%3d , quiz + 1); total = 0; high = 0; low = 100; for (student = 0; student high) high = gradesstudentquiz; if (gradesstud
43、entquiz = 0 & x = 0 & y = n - 1);4. was #4 int day_of_year(int month, int day, int year) int num_days = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; int day_count = 0, i; for (i = 1; i 2) day_count+; return day_count + day;using the expression year % 4 = 0 to test for leap years is not completely
44、 correct. centuries are special cases: if a year is a multiple of 100, then it must also be a multiple of 400 in order to be a leap year. the correct test is year % 4 = 0 & (year % 100 != 0 | year % 400 = 0)6. was #6; modified int digit(int n, int k) int i; for (i = 1; i k; i+) n /= 10; return n % 1
45、0;8. was #8 (a) and (b) are valid prototypes. (c) is illegal, since it doesnt specify the type of the parameter. (d) incorrectly specifies that f returns an int value in c89; in c99, omitting the return type is illegal. 10. was #10 (a)int largest(int a, int n) int i, max = a0; for (i = 1; i max) max
46、 = ai; return max;(b)int average(int a, int n) int i, avg = 0; for (i = 0; i n; i+) avg += ai; return avg / n;(c)int num_positive(int a, int n) int i, count = 0; for (i = 0; i 0) count+; return count;15. was #12; modified double median(double x, double y, double z) double result; if (x = y) if (y = z) result = y; else if (x = z) result = z; else result = x; else if (z = y) result = y; else if (x = z) result = x; else result = z; return result;17. was #14 int fact(int n) int i, result = 1; for (i = 2; i = n; i+) result *= i; return result;19. was #16 the following program tests the pb func
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 漿砌磚施工方案
- 二零二五年度全屋定制家居設(shè)計、生產(chǎn)、安裝一體化合同
- 甲乙丙三方2025年度能源供應(yīng)與采購合同
- 二零二五年度科技研發(fā)項目知識產(chǎn)權(quán)保護(hù)協(xié)議
- 2025年度智慧城市建設(shè)咨詢合同變更協(xié)議
- 2025年度跨境電商質(zhì)押擔(dān)保合同
- 二零二五年度互聯(lián)網(wǎng)干股合作協(xié)議書模板
- 二零二五年度購房意向金糾紛解決協(xié)議
- 2025年度智能小程序用戶權(quán)益保護(hù)服務(wù)協(xié)議
- 二零二五年度消防安全責(zé)任書簽訂模板
- 機(jī)電運輸安全基本知識
- 小紅書經(jīng)典營銷案例分析
- 企業(yè)戰(zhàn)略與績效管理
- 虛擬貨幣交易合同
- 基于51單片機(jī)的無功補(bǔ)償裝置
- 幼兒園公開課:大班語言《相反國》課件(優(yōu)化版)
- 水利設(shè)施維護(hù)投標(biāo)方案(技術(shù)標(biāo))
- 2024屆湖南省長沙市湖南師大附中等校高三上學(xué)期月考(二)語文試題(解析版)
- 上海科技版小學(xué)二年級下冊綜合實踐活動全冊教案
- 2022年深圳市南山區(qū)教育系統(tǒng)招聘公辦幼兒園園長考試真題
- 氣缸磨損的測量說課教案
評論
0/150
提交評論