C-Primer-Plus第6版编程练习答案(已下载)

上传人:xgs****56 文档编号:10134984 上传时间:2020-04-10 格式:DOCX 页数:73 大小:64.64KB
返回 下载 相关 举报
C-Primer-Plus第6版编程练习答案(已下载)_第1页
第1页 / 共73页
C-Primer-Plus第6版编程练习答案(已下载)_第2页
第2页 / 共73页
C-Primer-Plus第6版编程练习答案(已下载)_第3页
第3页 / 共73页
点击查看更多>>
资源描述
C Primer Plus Sixth Edition Programming Exercise Selected Answers Chapter 2 Programming Exercises PE 2-1 /* Programming Exercise 2-1 */ #include int main(void) printf(Gustav Mahlern); printf(GustavnMahlern); printf(Gustav ); printf(Mahlern); return 0; PE 2-3 /* Programming Exercise 2-3 */ #include int main(void) int ageyears; /* age in years */ int agedays; /* age in days */ /* large ages may require the long type */ ageyears = 101; agedays = 365 * ageyears; printf(An age of %d years is %d days.n, ageyears, agedays); return 0; PE 2-4 /* Programming Exercise 2-4 */ #include void jolly(void); void deny(void); int main(void) jolly(); jolly(); jolly(); deny(); return 0; void jolly(void) printf(For hes a jolly good fellow!n); void deny(void) printf(Which nobody can deny!n); PE 2-6 /* Programming Exercise 2-6 */ #include int main(void) int toes; toes = 10; printf(toes = %dn, toes); printf(Twice toes = %dn, 2 * toes); printf(toes squared = %dn, toes * toes); return 0; /* or create two more variables, set them to 2 * toes and toes * toes */ PE 2-8 /* Programming Exercise 2-8 */ #include void one_three(void); void two(void); int main(void) printf(starting now:n); one_three(); printf(done!n); return 0; void one_three(void) printf(onen); two(); printf(threen); void two(void) printf(twon); Chapter 3 Programming Exercises PE 3-2 /* Programming Exercise 3-2 */ #include int main(void) int ascii; printf(Enter an ASCII code: ); scanf(%d, &ascii); printf(%d is the ASCII code for %c.n, ascii, ascii); return 0; PE 3-4 /* Programming Exercise 3-4 */ #include int main(void) float num; printf(Enter a floating-point value: ); scanf(%f, &num); printf(fixed-point notation: %fn, num); printf(exponential notation: %en, num); printf(p notation: %an, num); return 0; PE 3-6 /* Programming Exercise 3-6 */ #include int main(void) float mass_mol = 3.0e-23; /* mass of water molecule in grams */ float mass_qt = 950; /* mass of quart of water in grams */ float quarts; float molecules; printf(Enter the number of quarts of water: ); scanf(%f, &quarts); molecules = quarts * mass_qt / mass_mol; printf(%f quarts of water contain %e molecules.n, quarts, molecules); return 0; Chapter 4 Programming Exercises PE 4-1 /* Programming Exercise 4-1 */ #include int main(void) char fname40; char lname40; printf(Enter your first name: ); scanf(%s, fname); printf(Enter your last name: ); scanf(%s, lname); printf(%s, %sn, lname, fname); return 0; PE 4-4 /* Programming Exercise 4-4 */ #include int main(void) float height; char name40; printf(Enter your height in inches: ); scanf(%f, &height); printf(Enter your name: ); scanf(%s, name); printf(%s, you are %.3f feet talln, name, height / 12.0); return 0; PE 4-7 /* Programming Exercise 4-7 */ #include #include int main(void) float ot_f = 1.0 / 3.0; double ot_d = 1.0 / 3.0; printf( float values: ); printf(%.4f %.12f %.16fn, ot_f, ot_f, ot_f); printf(double values: ); printf(%.4f %.12f %.16fn, ot_d, ot_d, ot_d); printf(FLT_DIG: %dn, FLT_DIG); printf(DBL_DIG: %dn, DBL_DIG); return 0; Chapter 5 Programming Exercises PE 5-1 /* Programming Exercise 5-1 */ #include int main(void) const int minperhour = 60; int minutes, hours, mins; printf(Enter the number of minutes to convert: ); scanf(%d, &minutes); while (minutes 0 ) hours = minutes / minperhour; mins = minutes % minperhour; printf(%d minutes = %d hours, %d minutesn, minutes, hours, mins); printf(Enter next minutes value (0 to quit): ); scanf(%d, &minutes); printf(Byen); return 0; PE 5-3 /* Programming Exercise 5-3 */ #include int main(void) const int daysperweek = 7; int days, weeks, day_rem; printf(Enter the number of days: ); scanf(%d, &days); while (days 0) weeks = days / daysperweek; day_rem = days % daysperweek; printf(%d days are %d weeks and %d days.n, days, weeks, day_rem); printf(Enter the number of days (0 or less to end): ); scanf(%d, &days); printf(Done!n); return 0; PE 5-5 /* Programming Exercise 5-5 */ #include int main(void) /* finds sum of first n integers */ int count, sum; int n; printf(Enter the upper limit: ); scanf(%d, &n); count = 0; sum = 0; while (count+ n) sum = sum + count; printf(sum = %dn, sum); return 0; PE 5-7 /* Programming Exercise 5-7 */ #include void showCube(double x); int main(void) /* finds cube of entered number */ double val; printf(Enter a floating-point value: ); scanf(%lf, &val); showCube(val); return 0; void showCube(double x) printf(The cube of %e is %e.n, x, x*x*x ); Chapter 6 Programming Exercises PE 6-1 /* pe6-1.c */ /* this implementation assumes the character codes */ /* are sequential, as they are in ASCII. */ #include #define SIZE 26 int main( void ) char lcaseSIZE; int i; for (i = 0; i SIZE; i+) lcasei = a + i; for (i = 0; i SIZE; i+) printf(%c, lcasei); printf(n); return 0; PE 6-3 /* pe6-3.c */ /* this implementation assumes the character codes */ /* are sequential, as they are in ASCII. */ #include int main( void ) char let = F; char start; char end; for (end = let; end = A; end-) for (start = let; start = end; start-) printf(%c, start); printf(n); return 0; PE 6-6 /* pe6-6.c */ #include int main( void ) int lower, upper, index; int square, cube; printf(Enter starting integer: ); scanf(%d, &lower); printf(Enter ending integer: ); scanf(%d, &upper); printf(%5s %10s %15sn, num, square, cube); for (index = lower; index = upper; index+) square = index * index; cube = index * square; printf(%5d %10d %15dn, index, square, cube); return 0; PE 6-8 /* pe6-8.c */ #include int main( void ) double n, m; double res; printf(Enter a pair of numbers: ); while (scanf(%lf %lf, &n, &m) = 2) res = (n - m) / (n * m); printf(%.3g - %.3g)/(%.3g*%.3g) = %.5gn, n, m, n, m, res); printf(Enter next pair (non-numeric to quit): ); return 0; PE 6-11 /* pe6-11.c */ #include #define SIZE 8 int main( void ) int valsSIZE; int i; printf(Please enter %d integers.n, SIZE); for (i = 0; i = 0; i-) printf(%d , valsi); printf(n); return 0; PE 6-13 /* pe6-13.c */ /* This version starts with the 0 power */ #include #define SIZE 8 int main( void ) int twopowsSIZE; int i; int value = 1; /* 2 to the 0 */ for (i = 0; i SIZE; i+) twopowsi = value; value *= 2; i = 0; do printf(%d , twopowsi); i+; while (i SIZE); printf(n); return 0; PE 6-14 /* pe-14.c */ /* Programming Exercise 6-14 */ #include #define SIZE 8 int main(void) double arrSIZE; double arr_cumulSIZE; int i; printf(Enter %d numbers:n, SIZE); for (i = 0; i SIZE; i+) printf(value #%d: , i + 1); scanf(%lf, &arri); /* or scanf(%lf, arr + i); */ arr_cumul0 = arr0; /* set first element */ for (i = 1; i SIZE; i+) arr_cumuli = arr_cumuli-1 + arri; for (i = 0; i SIZE; i+) printf(%8g , arri); printf(n); for (i = 0; i SIZE; i+) printf(%8g , arr_cumuli); printf(n); return 0; PE 6-16 /* pe6-16.c */ #include #define RATE_SIMP 0.10 #define RATE_COMP 0.05 #define INIT_AMT 100.0 int main( void ) double daphne = INIT_AMT; double deidre = INIT_AMT; int years = 0; while (deidre = daphne) daphne += RATE_SIMP * INIT_AMT; deidre += RATE_COMP * deidre; +years; printf(Investment values after %d years:n, years); printf(Daphne: $%.2fn, daphne); printf(Deidre: $%.2fn, deidre); return 0; Chapter 7 Programming Exercises PE 7-1 /* Programming Exercise 7-1 */ #include int main(void) char ch; int sp_ct = 0; int nl_ct = 0; int other = 0; while (ch = getchar() != #) if (ch = ) sp_ct+; else if (ch = n) nl_ct+; else other+; printf(spaces: %d, newlines: %d, others: %dn, sp_ct, nl_ct, other); return 0; PE 7-3 /* Programming Exercise 7-3 */ #include int main(void) int n; double sumeven = 0.0; int ct_even = 0; double sumodd = 0.0; int ct_odd = 0; while (scanf(%d, &n) = 1 & n != 0) if (n % 2 = 0) sumeven += n; +ct_even; else / n % 2 is either 1 or -1 sumodd += n; +ct_odd; printf(Number of evens: %d, ct_even); if (ct_even 0) printf( average: %g, sumeven / ct_even); putchar(n); printf(Number of odds: %d, ct_odd); if (ct_odd 0) printf( average: %g, sumodd / ct_odd); putchar(n); printf(ndonen); return 0; PE 7-5 /* Programming Exercise 7-5 */ #include int main(void) char ch; int ct1 = 0; int ct2 = 0; while (ch = getchar() != #) switch(ch) case . : putchar(!); +ct1; break; case ! : putchar(!); putchar(!); +ct2; break; default : putchar(ch); printf(%d replacement(s) of . with !n, ct1); printf(%d replacement(s) of ! with !n, ct2); return 0; PE 7-7 / Programming Exercise 7-7 #include #define BASEPAY 10 / $10 per hour #define BASEHRS 40 / hours at basepay #define OVERTIME 1.5 / 1.5 time #define AMT1 300 / 1st rate tier #define AMT2 150 / 2st rate tier #define RATE1 0.15 / rate for 1st tier #define RATE2 0.20 / rate for 2nd tier #define RATE3 0.25 / rate for 3rd tier int main(void) double hours; double gross; double net; double taxes; printf(Enter the number of hours worked this week: ); scanf(%lf, &hours); if (hours = BASEHRS) gross = hours * BASEPAY; else gross = BASEHRS * BASEPAY + (hours - BASEHRS) * BASEPAY * OVERTIME; if (gross = AMT1) taxes = gross * RATE1; else if (gross = AMT1 + AMT2) taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; else taxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes; printf(gross: $%.2f; taxes: $%.2f; net: $%.2fn, gross, taxes, net); return 0; PE 7-9 /* Programming Exercise 7-9 */ #include #include int main(void) int limit; int num; int div; bool numIsPrime; / use int if stdbool.h not available printf(Enter a positive integer: ); while (scanf(%d, &limit) = 1 & limit 0) if (limit 1) printf(Here are the prime numbers up through %dn, limit); else printf(No primes.n); for (num = 2; num = limit; num+) for (div = 2, numIsPrime = true; (div * div) = num; div+) if (num % div = 0) numIsPrime = false; if (numIsPrime) printf(%d is prime.n, num); printf(Enter a positive integer (q to quit): ); printf(Done!n); return 0; PE 7-11 /* pe7-11.c */ /* Programming Exercise 7-11 */ #include #include int main(void) const double price_artichokes = 2.05; const double price_beets = 1.15; const double price_carrots = 1.09; const double DISCOUNT_RATE = 0.05; const double under5 = 6.50; const double under20 = 14.00; const double base20 = 14.00; const double extralb = 0.50; char ch; double lb_artichokes = 0; double lb_beets = 0; double lb_carrots = 0; double lb_temp; double lb_total; double cost_artichokes; double cost_beets; double cost_carrots; double cost_total; double final_total; double discount; double shipping; printf(Enter a to buy artichokes, b for beets, ); printf(c for carrots, q to quit: ); while (ch = getchar() != q & ch != Q) if (ch = n) continue; while (getchar() != n) continue; ch = tolower(ch); switch (ch) case a : printf(Enter pounds of artichokes: ); scanf(%lf, &lb_temp); lb_artichokes += lb_temp; break; case b : printf(Enter pounds of beets: ); scanf(%lf, &lb_temp); lb_beets += lb_temp; break; case c : printf(Enter pounds of carrots: ); scanf(%lf, &lb_temp); lb_carrots += lb_temp; break; default : printf(%c is not a valid choice.n, ch); printf(Enter a to buy artichokes, b for beets, ); printf(c for carrots, q to quit: ); cost_artichokes = price_artichokes * lb_artichokes; cost_beets = price_beets * lb_beets; cost_carrots = price_carrots * lb_carrots; cost_total = cost_artichokes + cost_beets + cost_carrots; lb_total = lb_artichokes + lb_beets + lb_carrots; if (lb_total = 0) shipping = 0.0; else if (lb_total 5.0) shipping = under5; else if (lb_total 100.0) discount = DISCOUNT_RATE * cost_total; else discount = 0.0; final_total = cost_total + shipping - discount; printf(Your order:n); printf(%.2f lbs of artichokes at $%.2f per pound:$ %.2fn, lb_artichokes, price_artichokes, cost_artichokes); printf(%.2f lbs of beets at $%.2f per pound: $%.2fn, lb_beets, price_beets, cost_beets); printf(%.2f lbs of carrots at $%.2f per pound: $%.2fn, lb_carrots, price_carrots, cost_carrots); printf(Total cost of vegetables: $%.2fn, cost_total); if (cost_total 100) printf(Volume discount: $%.2fn, discount); printf(Shipping: $%.2fn, shipping); printf(Total charges: $%.2fn, final_total); return 0; Chapter 8 Programming Exercises PE 8-1 /* Programming Exercise 8-1 */ #include int main(void) int ch; int ct = 0; while (ch = getchar() != EOF) ct+; printf(%d characters readn, ct); return 0; PE 8-3 /* Programming Exercise 8-3 */ /* Using ctype.h eliminates need to assume consecutive coding */ #include #include int main(void) int ch; unsigned long uct = 0; unsigned long lct = 0; unsigned long oct = 0; while (ch = getchar() != EOF) if (isupper(ch) uct+; else if (islower(ch) lct+; else oct+; printf(%lu uppercase characters readn, uct); printf(%lu lowercase characters readn, lct); printf(%lu other characters readn, oct); return 0; /* or you could use if (ch = A & ch = a & ch = z) lct+; else oct+; */ PE 8-5 /* Programming Exercise 8-5 */ /* binaryguess.c - an improved number-guesser */ /* but relies upon truthful, correct responses */ #include #include int main(void) int high = 100; int low = 1; int guess = (high + low) / 2; char response; printf(Pick an integer from 1 to 100. I will try to guess ); printf(it.nRespond with a y if my guess is right, with); printf(na h if it is high, and with an l if it is low.n); printf(Uh.is your number %d?n, guess); while (response = getchar() != y) /* get response */ if (response = n) continue; if (response != h & response != l) printf(I dont understand that response. Please enter h forn); printf(high, l for low, or y for correct.n); continue; if (response = h) high = guess - 1; else if (response = l) low = guess + 1; guess = (high + low) / 2; printf(Well, then, is it %d?n, guess); printf(I knew I could do it!n); return 0; PE 8-7 /* Programming Exercise 8-7 */ #include #include #include #define BASEPAY1 8.75 / $8.75 per hour #define BASEPAY2 9.33 / $9.33 per hour #define BASEPAY3 10.00 / $10.00 per hour #define BASEPAY4 11.20 / $11.20 per hour #define BASEHRS 40 / hours at basepay #define OVERTIME 1.5 / 1.5 time #define AMT1 300 / 1st rate tier #define AMT2 150 / 2
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!