CPrimerPlus课后答案.doc
Chapter 2PE 2-1/* Programming Exercise 2-1 */#include <stdio.h>int main(void) printf("Anton Brucknern"); printf("AntonnBrucknern"); printf("Anton "); printf("Brucknern"); return 0;PE 2-3/* Programming Exercise 2-3 */#include <stdio.h>int main(void) int ageyears; /* age in years */ int agedays; /* age in days */ /* large ages may require the long type */ ageyears = 44; 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 <stdio.h>void jolly(void);void deny(void);int main(void) jolly(); jolly(); jolly(); deny(); return 0;void jolly(void) printf("For he's a jolly good fellow!n");void deny(void) printf("Which nobody can deny!n");PE 2-5/* Programming Exercise 2-5 */#include <stdio.h>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-6/* Programming Exercise 2-6 */#include <stdio.h>void once();void main(void)once();once();once();printf("n");once();once();printf("n");once();printf("n");void once()printf("Smile!");PE 2-7/* Programming Exercise 2-7 */#include <stdio.h>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 3PE 3-2/* Programming Exercise 3-2(1) */#include <stdio.h>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;/* Programming Exercise 3-2(2) */#include <stdio.h>int main(void)int num;printf("Please enter a num:");scanf("%d",&num);printf("The code for the num is %cn",num);return 0;PE 3-3/* Programming Exercise 3-3 */#include <stdio.h>int main(void)printf("a");printf("alarm and print a line of wordn");return 0;PE 3-4/* Programming Exercise 3-4(1) */#include <stdio.h>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); return 0;/* Programming Exercise 3-4(2) */#include <stdio.h>int main(void)long float a;a=21.290000;printf("The input is %lf or %le.n",a,a);return 0;PE 3-5/* Programming Exercise 3-5 */#include <stdio.h>int main(void)long int age;printf("Please enter your age:n");scanf("%d",&age);printf("Your age equals to %lf seconds.n",age*3.156e7);return 0;PE 3-6/* Programming Exercise 3-6 */#include <stdio.h>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;PE 3-6/* Programming Exercise 3-7 */#include <stdio.h>int main(void)float height;printf("Please enter your height:n");scanf("%fg",&height);printf("Your height equals to %f cm.n",height*2.54);return 0;Chapter 4PE 4-1/* Programming Exercise 4-1 */#include <stdio.h>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 <stdio.h>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-6/* Programming Exercise 4-6 */#include <stdio.h>#include <float.h>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 5PE 5-1/* Programming Exercise 5-1 */#include <stdio.h>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 <stdio.h>int main(void) const int daysperweek = 7; int days, weeks, day_rem; printf("Enter the number of days: "); scanf("%d", &days); weeks = days / daysperweek; day_rem = days % daysperweek; printf("%d days are %d weeks and %d days.n", days, weeks, day_rem); return 0;PE 5-5/* Programming Exercise 5-5 */#include <stdio.h>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 <stdio.h>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 6PE 6-1/* pe6-1.c */* this implementation assumes the character codes */* are sequential, as they are in ASCII. */#include <stdio.h>#define SIZE 26int 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 <stdio.h>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-5/* pe6-5.c */#include <stdio.h>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-7/* pe6-7.c */#include <stdio.h>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-10/* pe6-10.c */#include <stdio.h>#define SIZE 8int main( void ) int valsSIZE; int i; printf("Please enter %d integers.n", SIZE); for (i = 0; i < SIZE; i+) scanf("%d", &valsi); printf("Here, in reverse order, are the values you entered:n"); for (i = SIZE - 1; i > 0; i-) printf("%d ", valsi); printf("n"); return 0;PE 6-12/* pe6-12.c */* This version starts with the 0 power */#include <stdio.h>#define SIZE 8int 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-13/* pe-13.c */* Programming Exercise 6-13 */#include <stdio.h>#define SIZE 8int 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-15/* pe6-15.c */#include <stdio.h>#define RATE_SIMP 0.10#define RATE_COMP 0.05#define INIT_AMT 100.0int 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 7PE 7-1/* Programming Exercise 7-1 */#include <stdio.h>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 <stdio.h>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 = 1) sumodd += n; +ct_odd; else sumeven += n; +ct_even; 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 <stdio.h>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 replacements of . with !n", ct1); printf("%d replacements of ! with !n", ct2); return 0;PE 7-7 /* Programming Exercise 7-7 */#include <stdio.h>#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 /* Programmming Exercise 7-9 */#include <stdio.h>#define NO 0#define YES 1int main(void) long num; /* value to be checked */ long div; /* potential divisors */ long lim; /* limit to values */ int prime; printf("Please enter limit to values to be checked; "); printf("Enter q to quit.n"); while (scanf("%ld", &lim) = 1 && lim > 0) for (num = 2; num <= lim; num+) for (div = 2, prime = YES; (div * div) <= num; div+) if (num % div = 0) prime = NO; /* number is not prime */ if (prime = YES) printf("%ld is prime.n", num); printf("Please enter another limit; "); printf("Enter q to quit.n"); return 0;PE 7-11 /* pe7-11.c */* Programming Exercise 7-11 */