C primer plus课后编程练习答案
C_Primer_Plus第6版编程练习答案(已下载)

Chapter 2 Programming ExercisesPE 2-‐1/* Programming Exercise 2-1 */#include <stdio.h> intmain(void){ printf("Gustav Mahler\n");printf("Gustav\nMahler\n");printf("Gustav "); printf("Mahler\n");return 0;}PE 2-‐3/* Programming Exercise 2-3 */#include <stdio.h> intmain(void){ int ageyears; /* age in years */ intagedays; /* 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 <stdio.h> voidjolly(void); voiddeny(void); int main(void){ jolly();jolly(); jolly();deny(); return0; }void jolly(void){printf("For he's a jolly good fellow!\n");}void deny(void){printf("Which nobody can deny!\n");}PE 2-‐6/* Programming Exercise 2-6 */#include <stdio.h> intmain(void){ int toes;toes = 10;printf("toes = %d\n", toes);printf("Twice toes = %d\n", 2 * toes); printf("toes squared= %d\n", 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 <stdio.h> voidone_three(void); voidtwo(void); int main(void){printf("starting now:\n");one_three(); printf("done!\n");return 0;}void one_three(void){printf("one\n"); two();printf("three\n");}void two(void){printf("two\n");}Chapter 3 Programming ExercisesPE 3-‐2/* Programming Exercise 3-2 */#include <stdio.h> intmain(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 <stdio.h> intmain(void){ float num;printf("Enter a floating-point value: "); scanf("%f", &num);printf("fixed-point notation: %f\n", num);printf("exponential notation: %e\n", num); printf("pnotation: %a\n", num); return 0;}PE 3-‐6/* Programming Exercise 3-6 */#include <stdio.h> intmain(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 ExercisesPE 4-‐1/* Programming Exercise 4-1 */#include <stdio.h> intmain(void){ char fname[40];char lname[40];printf("Enter your first name: "); scanf("%s", fname); printf("Enter your last name: ");scanf("%s", lname); printf("%s, %s\n", lname, fname); return 0;}PE 4-‐4/* Programming Exercise 4-4 */#include <stdio.h> intmain(void){ float height;char name[40];printf("Enter your height in inches: "); scanf("%f",&height); printf("Enter your name: "); scanf("%s", name);printf("%s, you are %.3f feet tall\n", name, height / 12.0); return 0;}PE 4-‐7/* Programming Exercise 4-7 */#include <stdio.h> #include<float.h> int main(void){ float ot_f = 1.0 / 3.0; doubleot_d = 1.0 / 3.0; printf(" floatvalues: ");printf("%.4f %.12f %.16f\n", ot_f, ot_f, ot_f); printf("double values: ");printf("%.4f %.12f %.16f\n", ot_d, ot_d, ot_d);printf("FLT_DIG: %d\n", FLT_DIG); printf("DBL_DIG: %d\n",DBL_DIG); return 0;}Chapter 5 Programming ExercisesPE 5-‐1/* Programming Exercise 5-1 */#include <stdio.h> intmain(void){ const int minperhour = 60; intminutes, 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 minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes);}printf("Bye\n");return 0;}PE 5-‐3/* Programming Exercise 5-3 */#include <stdio.h> intmain(void){ const int daysperweek = 7; intdays, 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 <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 = %d\n", sum); return 0;}PE 5-‐7/* Programming Exercise 5-7 */#include <stdio.h> voidshowCube(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 ExercisesPE 6-‐1/* pe6-1.c *//* this implementation assumes the character codes */ /* are sequential, as they are in ASCII. */#include <stdio.h> #define SIZE 26 intmain( void ) { char lcase[SIZE]; inti; for (i = 0; i < SIZE; i++)lcase[i] = 'a' + i; for (i = 0; i < SIZE;i++) printf("%c", lcase[i]);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> intmain( 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<stdio.h> int main( void ){ int lower, upper, index; intsquare, cube;printf("Enter starting integer: "); scanf("%d",&lower); printf("Enter ending integer: ");scanf("%d", &upper);printf("%5s %10s %15s\n", "num", "square", "cube"); for (index= lower; index <= upper; index++){ square = index * index;cube = index * square;printf("%5d %10d %15d\n", index, square, cube);}return 0;}PE 6-‐8/* pe6-8.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) = %.5g\n", n, m, n, m, res); printf("Enter next pair (non-numeric to quit): ");}return 0;}PE 6-‐11/* pe6-11.c */#define SIZE 8 intmain( void ){ int vals[SIZE]; inti;printf("Please enter %d integers.\n", SIZE); for (i = 0; i <SIZE; i++) scanf("%d", &vals[i]);printf("Here, in reverse order, are the values you entered:\n"); for (i = SIZE - 1;i >= 0; i--) printf("%d ", vals[i]); printf("\n"); return 0;}PE 6-‐13/* pe6-13.c *//* This version starts with the 0 power */#include <stdio.h>#define SIZE 8 intmain( void ){int twopows[SIZE]; int i;int value = 1; /* 2 to the 0 */for (i = 0; i < SIZE; i++){ twopows[i] = value;value *= 2;} i= 0; do{printf("%d ", twopows[i]);i++; } while (i < SIZE); printf("\n");return 0;}PE 6-‐14/* pe-14.c *//* Programming Exercise 6-14 */#define SIZE 8 intmain(void){ double arr[SIZE]; doublearr_cumul[SIZE]; int i;printf("Enter %d numbers:\n", SIZE);for (i = 0; i < SIZE; i++){printf("value #%d: ", i + 1);scanf("%lf", &arr[i]); /* or scanf("%lf", arr + i);*/}arr_cumul[0] = arr[0]; /* set first element */ for (i = 1; i < SIZE; i++) arr_cumul[i] = arr_cumul[i-1] + arr[i];for (i = 0; i < SIZE; i++) printf("%8g", arr[i]); printf("\n"); for (i = 0; i < SIZE;i++) printf("%8g ", arr_cumul[i]);printf("\n"); return 0;}PE 6-‐16/* pe6-16.c */#include <stdio.h>#define RATE_SIMP 0.10#define RATE_COMP 0.05 #defineINIT_AMT 100.0 int main( void ){double daphne = INIT_AMT;double deidre = INIT_AMT; intyears = 0;while (deidre <= daphne){ daphne += RATE_SIMP * INIT_AMT;deidre += RATE_COMP * deidre;++years; }printf("Investment values after %d years:\n", years); printf("Daphne: $%.2f\n", daphne); printf("Deidre: $%.2f\n", deidre); return 0;}Chapter 7 Programming ExercisesPE 7-‐1/* Programming Exercise 7-1 */#include <stdio.h> int main(void){ char ch; intsp_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: %d\n", sp_ct, nl_ct, other); return 0;}PE 7-‐3/* Programming Exercise 7-3 */#include <stdio.h> intmain(void){ int n; double sumeven =0.0; int ct_even = 0;double sumodd = 0.0; intct_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("\ndone\n");return 0;}PE 7-‐5/* Programming Exercise 7-5 */#include <stdio.h> intmain(void){ char ch; intct1 = 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 <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 RATE30.25 // rate for 3rd tier int main(void){double hours; doublegross; double net;double taxes;printf("Enter the number of hours worked this week: "); scanf("%lf",&hours); if (hours <= BASEHRS) gross = hours * BASEPAY; elsegross = BASEHRS * BASEPAY + (hours - BASEHRS) * BASEPAY * OVERTIME; if (gross <=AMT1) taxes = gross * RATE1; else if (gross <= AMT1 + AMT2)taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes; printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net);return 0;}PE 7-‐9/* Programming Exercise 7-9 */#include <stdio.h> #include<stdbool.h> int main(void){int limit; intnum; int div;bool numIsPrime; // use int if stdbool.h not availableprintf("Enter a positive integer: "); while (scanf("%d",&limit) == 1 && limit > 0){if (limit > 1)printf("Here are the prime numbers up through %d\n", limit); elseprintf("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 <stdio.h> #include<ctype.h> int main(void){const double price_artichokes = 2.05; constdouble price_beets = 1.15; const doubleprice_carrots = 1.09; const doubleDISCOUNT_RATE = 0.05; const double under5 =6.50; const double under20 = 14.00; constdouble base20 = 14.00; const double extralb =0.50;char ch;double lb_artichokes = 0;double lb_beets = 0; doublelb_carrots = 0; double lb_temp;double lb_total;double cost_artichokes;double cost_beets; doublecost_carrots; double cost_total;double final_total; doublediscount; double shipping;printf("Enter a to buy artichokes, b for beets, "); printf("c forcarrots, 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 < 20) shipping =under20; elseshipping = base20 + extralb * lb_total; if (cost_total >100.0)discount = DISCOUNT_RATE * cost_total; elsediscount = 0.0;final_total = cost_total + shipping - discount; printf("Your order:\n");printf("%.2f lbs of artichokes at $%.2f per pound:$ %.2f\n",lb_artichokes, price_artichokes, cost_artichokes); printf("%.2f lbs of beets at $%.2f per pound: $%.2f\n", lb_beets, price_beets, cost_beets);printf("%.2f lbs of carrots at $%.2f per pound: $%.2f\n", lb_carrots,price_carrots, cost_carrots); printf("Total cost of vegetables: $%.2f\n",cost_total); if (cost_total > 100)printf("Volume discount: $%.2f\n", discount);printf("Shipping: $%.2f\n", shipping); printf("Total charges:$%.2f\n", final_total); return 0; }Chapter 8 Programming ExercisesPE 8-‐1/* Programming Exercise 8-1 */#include <stdio.h>int main(void) { int ch; int ct = 0;while ((ch = getchar()) != EOF) ct++;printf("%d characters read\n", ct);return 0;}PE 8-‐3/* Programming Exercise 8-3 *//* Using ctype.h eliminates need to assume consecutive coding */#include <stdio.h> #include<ctype.h> int main(void) { intch; 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++; elseoct++;printf("%lu uppercase characters read\n", uct); printf("%lu lowercase characters read\n", lct); printf("%lu other characters read\n", oct);return 0;}/* or you could use if (ch >= 'A'&& ch <= 'Z') uct++;else if (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 <stdio.h> #include <ctype.h>int main(void) { int high = 100; intlow = 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 ifmy 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 don't understand that response. Please enter h for\n"); 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 <stdio.h>#include <ctype.h>#include <stdio.h>#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 // 2st rate tier#define RATE1 0.15 // rate for 1st tier#define RATE2 0.20 // rate for 2nd tier #define RATE30.25 // rate for 3rd tier int getfirst(void); void menu(void);int main(void){ double hours;double gross;double net; doubletaxes; double pay;char response;menu();while ((response = getfirst()) != 'q'){if (response == '\n') /* skip over newlines */ continue;response = tolower(response); /* accept A as a, etc. */ switch (response){case 'a': pay = BASEPAY1; break; case 'b': pay= BASEPAY2; break; case 'c': pay = BASEPAY3; break;case 'd': pay = BASEPAY4; break;default : printf("Please enter a, b, c, d, or q.\n"); menu();continue; // go to beginning of loop}printf("Enter the number of hours worked this week: "); scanf("%lf",&hours); if (hours <= BASEHRS) gross = hours * pay; elsegross = BASEHRS * pay + (hours - BASEHRS) * pay * OVERTIME; if (gross <=AMT1) taxes = gross * RATE1; else if (gross <= AMT1 + AMT2)taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net);menu(); }printf("Done.\n");return 0;}void menu(void){printf("********************************************************""*********\n");printf("Enter the letter corresponding to the desired pay rate"" or action:\n");printf("a) $%4.2f/hr b) $%4.2f/hr\n", BASEPAY1, BASEPAY2); printf("c) $%5.2f/hr d) $%5.2f/hr\n", BASEPAY3, BASEPAY4); printf("q) quit\n");printf("********************************************************""*********\n");}int getfirst(void){ int ch;ch = getchar(); while(isspace(ch)) ch = getchar();while (getchar() != '\n')continue; return ch;}Chapter 9 Programming ExercisesPE 9-‐1/* Programming Exercise 9-1 */#include <stdio.h>double min(double, double); intmain(void){double x, y; printf("Enter two numbers (q to quit):"); while (scanf("%lf %lf", &x, &y) == 2){ printf("The smaller number is %f.\n", min(x,y));printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}double min(double a, double b){return a < b ? a : b;}/* alternative implementation doublemin(double a, double b){ if (a < b)return a; elsereturn b;}*/PE 9-‐3/* Programming Exercise 9-3 */#include <stdio.h>void chLineRow(char ch, int c, int r); int main(void){ char ch; int col, row; printf("Enter a character(# to quit): "); while ( (ch = getchar()) != '#'){ if (ch == '\n')continue;printf("Enter number of columns and number of rows: "); if(scanf("%d %d", &col, &row) != 2) break; chLineRow(ch, col, row); printf("\nEnter next character (# to quit): ");}printf("Bye!\n");return 0;}// start rows and cols at 0 void chLineRow(charch, int c, int r){int col, row;for (row = 0; row < r ; row++){for (col = 0; col < c; col++)putchar(ch); putchar('\n');} return;}PE 9-‐5/* Programming Exercise 9-5 */#include <stdio.h>void larger_of(double *p1, double *p2); int main(void){double x, y; printf("Enter two numbers (q to quit):"); while (scanf("%lf %lf", &x, &y) == 2){larger_of(&x, &y);printf("The modified values are %f and %f.\n", x, y); printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}void larger_of(double *p1, double *p2){ if (*p1 > *p2)*p2 = *p1; else*p1 = *p2;}// alternatively:/*void larger_of(double *p1, double *p2){*p1= *p2 = *p1 > *p2 ? *p1 : *p2;}*/PE 9-‐8/* Programming Exercise 9-8 */ #include <stdio.h>double power(double a, int b); /* ANSI prototype */ int main(void){ double x, xpow; int n; printf("Enter a number and the integer power"); printf(" to which\nthe number will be raised. Enter q"); printf("to quit.\n"); while (scanf("%lf%d", &x, &n) == 2){ xpow = power(x,n); /* function call */ printf("%.3g tothe power %d is %.5g\n", x, n, xpow); printf("Enter next pair of numbersor q to quit.\n");} printf("Hope you enjoyed this power trip -- bye!\n"); return 0;} double power(double a, int b) /* function definition */{ double pow = 1;int i; if (b == 0){ if (a == 0)printf("0 to the 0 undefined; using 1 as the value\n"); pow = 1.0; } else if (a == 0) pow = 0.0; else if (b > 0) for(i = 1; i <= b; i++) pow *= a; else /* b < 0 */ pow = 1.0 / power(a, - b);return pow; /* return the value of pow */}PE 9-‐10/* Programming Exercise 9-10 */ #include <stdio.h> voidto_base_n(int x, int base); int main(void) { int number;int b; int count; printf("Enter an integer (q toquit):\n"); while (scanf("%d", &number) == 1){ printf("Enter number base (2-10): "); while((count = scanf("%d", &b))== 1&& (b < 2 || b > 10)){printf("base should be in the range 2-10: ");} if (count != 1)break;printf("Base %d equivalent: ", b);to_base_n(number, b); putchar('\n');printf("Enter an integer (q to quit):\n");} printf("Done.\n");return 0;}void to_base_n(int x, int base) /* recursive function */{ int r; r = x % base; if (x >= base)to_base_n(x / base, base); putchar('0' +r); return;}Chapter 10 Programming ExercisesPE 10-‐1/* Programming Exercise 10-1 */#include <stdio.h>#define MONTHS 12 // number of months in a year #defineYRS 5 // number of years of data int main(void){// initializing rainfall data for 2010 - 2014 const floatrain[YRS][MONTHS] = {{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}}; int year, month;float subtot, total;printf(" YEAR RAINFALL (inches)\n"); for (year = 0,total = 0; year < YRS; year++){ /* for each year, sum rainfall for each month */ for (month = 0, subtot = 0; month < MONTHS; month++) subtot += *(*(rain + year) + month); printf("%5d %15.1f\n", 2010 + year, subtot);total += subtot; /* total for all years */}printf("\nThe yearly average is %.1f inches.\n\n", total/YRS); printf("MONTHLY AVERAGES:\n\n");printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct "); printf(" Nov Dec\n"); for (month = 0; month < MONTHS; month++){ /* for each month, sum rainfall over years */ for (year = 0, subtot =0; year < YRS; year++) subtot += *(*(rain + year) + month); printf("%4.1f ", subtot/YRS);} printf("\n");return 0;}PE 10-‐3/* Programming Exercise 10-3 */#include <stdio.h>#define LEN 10int max_arr(const int ar[], int n); voidshow_arr(const int ar[], int n);int main(void){int orig[LEN] = {1,2,3,4,12,6,7,8,9,10}; int max;show_arr(orig, LEN); max = max_arr(orig, LEN);printf("%d = largest value\n", max);return 0;}int max_arr(const int ar[], int n){ int i; int max =ar[0];/* don't use 0 as initial max value -- fails if all array values are neg */for (i = 1; i < n; i++) if(max < ar[i]) max = ar[i];return max;}void show_arr(const int ar[], int n){ int i; for (i = 0; i < n; i++)printf("%d ", ar[i]); putchar('\n');}PE 10-‐5/* Programming Exercise 10-5 */#include <stdio.h>#define LEN 10double max_diff(const double ar[], int n); void show_arr(const double ar[], int n);int main(void){double orig[LEN] = {1.1,2,3,4,12,61.3,7,8,9,10}; double max; show_arr(orig, LEN); max =max_diff(orig, LEN);printf("%g = maximum difference\n", max);return 0;}double max_diff(const double ar[], int n){ int i; double max =ar[0]; double min = ar[0];for (i = 1; i < n; i++){if (max < ar[i]) max =ar[i]; else if (min > ar[i])min = ar[i];}return max - min;}void show_arr(const double ar[], int n){ int i; for (i = 0; i < n; i++)printf("%g ", ar[i]); putchar('\n');}PE 10-‐8/* Programming Exercise 10-8 */#include <stdio.h>#define LEN1 7#define LEN2 3。
c++primerplus课后编程练习答案

第二章:开始学习C++ n”;}<<endl;return 0;}double C2F(double t){return *t+32;}<<endl;return 0;}double convert(double t){return 63240*t;n";return 0;}style(miles per gallon):"<<endl;cout<<Euro_style<<" L/100Km = "<<*Euro_style<<" mpg\n";return 0;}Enter the automobile gasoline consumption figure inEuropean style(liters per 100 kilometers):Converts to . style(miles per gallon):L/100Km = mpgPress any key to continuestyle(miles per gallon):";double US_style;cin>>US_style;cout<<"Converts to European style(miles per gallon):"<<endl;cout<<US_style<<" mpg = "<< *US_style<<"L/100Km\n";return 0;}style(miles per gallon):19Converts to European style(miles per gallon):19 mpg = 100KmPress any key to continue第四章复合类型n";return 0;}rand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;}return 0;}rand="A";eight=;snack[0].calory=200;snack[1].brand="B";snack[1].weight=;snack[1].calory=400;snack[2].brand="C";snack[2].weight=;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " << snack[i].brand << endl;cout << " weight: " << snack[i].weight << endl;cout << " calorie: " << snack[i].calory << endl<<endl;}delete [] snack;return 0;}et();car* ps=new car[num];for(int i=0;i<num;++i){cout<<"Car #"<<i+1<<":\n";cout<<"Please enter the make: ";getline(cin,ps[i].name);cout<<"Please enter the year made: ";(cin>>ps[i].year).get();}cout<<"Here is your collection:\n";for(int i=0;i<num;++i)cout<<ps[i].year<<" "<<ps[i].name<<endl;delete [] ps;return 0;}n";return 0;}n";return 0;};for(int k=0;k<=i;++k)cout<<"*";cout<<endl;}return 0;}。
C Primer Plus第6版编程练习答案(已下载)

Chapter 2 Programming ExercisesPE 2-‐1/* Programming Exercise 2-1 */#include <stdio.h> intmain(void){ printf("Gustav Mahler\n");printf("Gustav\nMahler\n");printf("Gustav ");printf("Mahler\n"); return 0;}PE 2-‐3/* Programming Exercise 2-3 */#include <stdio.h> intmain(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 <stdio.h>void jolly(void); voiddeny(void); intmain(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-‐6/* Programming Exercise 2-6 */#include <stdio.h> intmain(void){ inttoes;toes = 10;printf("toes = %d\n", toes);printf("Twice toes = %d\n", 2 * toes); printf("toessquared = %d\n", 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 <stdio.h>void one_three(void);void two(void); intmain(void){printf("starting now:\n");one_three(); printf("done!\n");return 0;}void one_three(void){printf("one\n");two();printf("three\n");}void two(void){printf("two\n");}Chapter 3 Programming ExercisesPE 3-‐2/* Programming Exercise 3-2 */#include <stdio.h> intmain(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 <stdio.h> intmain(void){ floatnum;printf("Enter a floating-point value: "); scanf("%f",&num);printf("fixed-point notation: %f\n", num);printf("exponential notation: %e\n", num);printf("p notation: %a\n", num); return 0;}PE 3-‐6/* Programming Exercise 3-6 */#include <stdio.h> intmain(void){float mass_mol = 3.0e-23; /* mass of water molecule in grams */ floatmass_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 ExercisesPE 4-‐1/* Programming Exercise 4-1 */#include <stdio.h> intmain(void){ charfname[40]; charlname[40];printf("Enter your first name: ");scanf("%s", fname); printf("Enter yourlast name: "); scanf("%s", lname);printf("%s, %s\n", lname, fname); return0;}PE 4-‐4/* Programming Exercise 4-4 */#include <stdio.h> intmain(void){ floatheight; charname[40];printf("Enter your height in inches: ");scanf("%f", &height); printf("Enter your name:"); scanf("%s", name);printf("%s, you are %.3f feet tall\n", name, height / 12.0);return 0;}PE 4-‐7/* Programming Exercise 4-7 */#include <stdio.h>#include <float.h> intmain(void){ float ot_f = 1.0 / 3.0;double ot_d = 1.0 / 3.0;printf(" float values: ");printf("%.4f %.12f %.16f\n", ot_f, ot_f, ot_f); printf("doublevalues: ");printf("%.4f %.12f %.16f\n", ot_d, ot_d, ot_d);printf("FLT_DIG: %d\n", FLT_DIG); printf("DBL_DIG: %d\n",DBL_DIG); return 0;}Chapter 5 Programming ExercisesPE 5-‐1/* Programming Exercise 5-1 */#include <stdio.h> intmain(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 minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes);}printf("Bye\n");return 0;}PE 5-‐3/* Programming Exercise 5-3 */#include <stdio.h> intmain(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<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= %d\n", sum); return 0;}PE 5-‐7/* Programming Exercise 5-7 */#include <stdio.h> voidshowCube(double x);int main(void) /* finds cube of entered number */{ doubleval;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 ExercisesPE 6-‐1/* pe6-1.c *//* this implementation assumes the character codes *//* are sequential, as they are in ASCII. */#include <stdio.h> #define SIZE26 int main( void ) { charlcase[SIZE]; int i; for(i = 0; i < SIZE; i++)lcase[i] = 'a' + i; for (i = 0; i< SIZE; i++) printf("%c",lcase[i]); 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> intmain( 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<stdio.h> int main( void ){ int lower, upper, index;int square, cube;printf("Enter starting integer: ");scanf("%d", &lower); printf("Enter endinginteger: "); scanf("%d", &upper);printf("%5s %10s %15s\n", "num", "square", "cube"); for (index = lower; index <= upper; index++){ square = index *index; cube = index * square;printf("%5d %10d %15d\n", index, square, cube);}return 0;}PE 6-‐8/* pe6-8.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) = %.5g\n", n, m, n, m, res);printf("Enter next pair (non-numeric to quit): ");}return 0;}PE 6-‐11/* pe6-11.c */#include<stdio.h> #defineSIZE 8 intmain( void ){ intvals[SIZE]; int i;printf("Please enter %d integers.\n", SIZE);for (i = 0; i < SIZE; i++) scanf("%d", &vals[i]);printf("Here, in reverse order, are the values you entered:\n"); for(i = SIZE - 1; i >= 0; i--) printf("%d ", vals[i]); printf("\n"); return 0;}PE 6-‐13/* pe6-13.c *//* This version starts with the 0 power */#include<stdio.h> #defineSIZE 8 intmain( void ){int twopows[SIZE];int i;int value = 1; /* 2 to the 0 */for (i = 0; i < SIZE; i++){ twopows[i] =value; value *= 2;}i = 0;do {printf("%d ", twopows[i]);i++; } while (i < SIZE);printf("\n");return 0;}PE 6-‐14/* pe-14.c *//* Programming Exercise 6-14 */#include<stdio.h> #defineSIZE 8 int main(void){ double arr[SIZE];double arr_cumul[SIZE]; inti;printf("Enter %d numbers:\n", SIZE);for (i = 0; i < SIZE; i++){printf("value #%d: ", i + 1);scanf("%lf", &arr[i]); /* or scanf("%lf",arr + i); */}arr_cumul[0] = arr[0]; /* set first element */ for (i = 1; i < SIZE; i++)arr_cumul[i] = arr_cumul[i-1] + arr[i];for (i = 0; i < SIZE; i++)printf("%8g ", arr[i]); printf("\n");for (i = 0; i < SIZE; i++)printf("%8g ", arr_cumul[i]);printf("\n");return 0;}PE 6-‐16/* pe6-16.c */#include <stdio.h>#define RATE_SIMP 0.10#define RATE_COMP 0.05#define INIT_AMT 100.0 intmain( void ){double daphne = INIT_AMT;double deidre = INIT_AMT; intyears = 0;while (deidre <= daphne){ daphne += RATE_SIMP *INIT_AMT; deidre += RATE_COMP * deidre;++years; }printf("Investment values after %d years:\n", years);printf("Daphne: $%.2f\n", daphne); printf("Deidre: $%.2f\n",deidre); return 0;}Chapter 7 Programming ExercisesPE 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: %d\n", sp_ct, nl_ct, other);return 0;}PE 7-‐3/* Programming Exercise 7-3 */#include <stdio.h> intmain(void){ int n; doublesumeven = 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("\ndone\n");return 0;}PE 7-‐5/* Programming Exercise 7-5 */#include <stdio.h> intmain(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 <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 #defineRATE3 0.25 // rate for 3rd tier int main(void){double hours;double gross; doublenet; double taxes;printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS) gross = hours* BASEPAY; elsegross = BASEHRS * BASEPAY + (hours - BASEHRS) * BASEPAY * OVERTIME; if(gross <= AMT1) taxes = gross * RATE1; else if (gross <= AMT1 + AMT2) taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net);return 0;}PE 7-‐9/* Programming Exercise 7-9 */#include <stdio.h>#include <stdbool.h> intmain(void){int limit;int num; intdiv;bool numIsPrime; // use int if stdbool.h not availableprintf("Enter a positive integer: "); while(scanf("%d", &limit) == 1 && limit > 0){if (limit > 1)printf("Here are the prime numbers up through %d\n", limit);elseprintf("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 <stdio.h>#include <ctype.h> intmain(void){const double price_artichokes = 2.05;const double price_beets = 1.15; constdouble price_carrots = 1.09; const doubleDISCOUNT_RATE = 0.05; const double under5 =6.50; const double under20 = 14.00; constdouble base20 = 14.00; const double extralb= 0.50;char ch;double lb_artichokes = 0;double lb_beets = 0; doublelb_carrots = 0; double lb_temp;double lb_total;doublecost_artichokes; doublecost_beets; doublecost_carrots; doublecost_total; doublefinal_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 forcarrots, 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 < 20) shipping = under20; elseshipping = base20 + extralb * lb_total; if(cost_total > 100.0)discount = DISCOUNT_RATE * cost_total;else discount = 0.0;final_total = cost_total + shipping - discount; printf("Yourorder:\n");printf("%.2f lbs of artichokes at $%.2f per pound:$ %.2f\n",lb_artichokes, price_artichokes, cost_artichokes); printf("%.2f lbs ofbeets at $%.2f per pound: $%.2f\n", lb_beets, price_beets,cost_beets); printf("%.2f lbs of carrots at $%.2f per pound: $%.2f\n", lb_carrots, price_carrots, cost_carrots); printf("Total cost ofvegetables: $%.2f\n", cost_total); if (cost_total > 100)printf("Volume discount: $%.2f\n", discount);printf("Shipping: $%.2f\n", shipping); printf("Totalcharges: $%.2f\n", final_total); return 0; }Chapter 8 Programming ExercisesPE 8-‐1/* Programming Exercise 8-1 */#include <stdio.h>int main(void) { int ch; intct = 0; while ((ch =getchar()) != EOF) ct++;printf("%d characters read\n", ct);return 0;}PE 8-‐3/* Programming Exercise 8-3 *//* Using ctype.h eliminates need to assume consecutive coding */#include <stdio.h> #include<ctype.h> int main(void){ int ch; unsigned longuct = 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 read\n", uct); printf("%lulowercase characters read\n", lct); printf("%lu other charactersread\n", oct);return 0;}/* or you could use if(ch >= 'A' && ch <= 'Z')uct++;else if (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 <stdio.h> #include<ctype.h> 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 ishigh, 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 don't understand that response. Please enter h for\n"); 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 <stdio.h>#include <ctype.h>#include <stdio.h>#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 // 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 intgetfirst(void); void menu(void); int main(void){ doublehours; doublegross; double net;double taxes;double pay; charresponse;menu();while ((response = getfirst()) != 'q'){if (response == '\n') /* skip over newlines */continue;response = tolower(response); /* accept A as a, etc. */ switch (response){case 'a': pay = BASEPAY1; break;case 'b': pay = BASEPAY2; break; case 'c':pay = BASEPAY3; break; case 'd': pay = BASEPAY4;break;default : printf("Please enter a, b, c, d, or q.\n"); menu();continue; // go to beginning of loop}printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS) gross =hours * pay; elsegross = BASEHRS * pay + (hours - BASEHRS) * pay * OVERTIME;if (gross <= AMT1) taxes = gross * RATE1; else if (gross <= AMT1+ AMT2)taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net); menu(); }printf("Done.\n");return 0;}void menu(void){printf("********************************************************""*********\n");printf("Enter the letter corresponding to the desired pay rate"" or action:\n");printf("a) $%4.2f/hr b) $%4.2f/hr\n", BASEPAY1,BASEPAY2);printf("c) $%5.2f/hr d) $%5.2f/hr\n", BASEPAY3, BASEPAY4); printf("q) quit\n");printf("********************************************************""*********\n");}int getfirst(void){ int ch;ch = getchar();while (isspace(ch)) ch =getchar(); while(getchar() != '\n')continue; return ch;}Chapter 9 Programming ExercisesPE 9-‐1/* Programming Exercise 9-1 */#include <stdio.h>double min(double, double); intmain(void){double x, y; printf("Enter two numbers(q to quit): "); while (scanf("%lf %lf", &x, &y) ==2){ printf("The smaller number is %f.\n", min(x,y));printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}double min(double a, double b){return a < b ? a : b;}/* alternative implementation doublemin(double a, double b){ if (a < b)return a; elsereturn b;}*/PE 9-‐3/* Programming Exercise 9-3 */#include <stdio.h>void chLineRow(char ch, int c, int r); intmain(void){ char ch; int col, row;printf("Enter a character (# to quit): "); while( (ch = getchar()) != '#'){ if (ch =='\n') continue;printf("Enter number of columns and number of rows: ");if (scanf("%d %d", &col, &row) != 2) break;chLineRow(ch, col, row);printf("\nEnter next character (# to quit): ");}printf("Bye!\n");return 0;}// start rows and cols at 0 voidchLineRow(char ch, int c, int r){int col, row;for (row = 0; row < r ; row++){for (col = 0; col < c; col++)putchar(ch); putchar('\n');}return;}PE 9-‐5/* Programming Exercise 9-5 */#include <stdio.h>void larger_of(double *p1, double *p2); intmain(void){double x, y; printf("Enter two numbers(q to quit): "); while (scanf("%lf %lf", &x, &y) ==2){larger_of(&x, &y);printf("The modified values are %f and %f.\n", x, y); printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}void larger_of(double *p1, double *p2){ if (*p1 >*p2) *p2 =*p1; else*p1 = *p2;}// alternatively:/*void larger_of(double *p1, double *p2){*p1= *p2 = *p1 > *p2 ? *p1 : *p2;}*/PE 9-‐8/* Programming Exercise 9-8 */ #include<stdio.h>double power(double a, int b); /* ANSI prototype */ intmain(void) { double x, xpow; int n; printf("Enter a number andthe integer power"); printf(" to which\nthe number will be raised.Enter q"); printf(" to quit.\n"); while (scanf("%lf%d", &x, &n)== 2){ xpow = power(x,n); /* function call */ printf("%.3g to the power %d is %.5g\n", x, n, xpow);printf("Enter next pair of numbers or q to quit.\n");} printf("Hope you enjoyed this power trip -- bye!\n");return 0;} double power(double a, int b) /* function definition */{ double pow =1; int i; if(b == 0){ if (a == 0)printf("0 to the 0 undefined; using 1 as the value\n"); pow = 1.0; } else if (a == 0) pow = 0.0; else if (b > 0)for(i = 1; i <= b; i++) pow *= a; else /* b < 0 */ pow = 1.0 / power(a, - b);return pow; /* return the value of pow */}PE 9-‐10/* Programming Exercise 9-10 */ #include<stdio.h> void to_base_n(int x, int base); intmain(void) { int number; int b; int count;printf("Enter an integer (q to quit):\n"); while(scanf("%d", &number) == 1){ printf("Enter number base (2-10): ");while ((count = scanf("%d", &b))== 1&& (b < 2 || b > 10)){printf("base should be in the range 2-10: ");} if(count != 1)break;printf("Base %d equivalent: ", b);to_base_n(number, b); putchar('\n');printf("Enter an integer (q to quit):\n");}printf("Done.\n");return 0;}void to_base_n(int x, int base) /* recursive function */{ int r; r = x % base; if(x >= base) to_base_n(x / base,base); putchar('0' + r); return;}Chapter 10 Programming ExercisesPE 10-‐1/* Programming Exercise 10-1 */#include <stdio.h>#define MONTHS 12 // number of months in a year#define YRS 5 // number of years of data int main(void){// initializing rainfall data for 2010 - 2014 constfloat rain[YRS][MONTHS] = {{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}}; int year,month; float subtot,total;printf(" YEAR RAINFALL (inches)\n");for (year = 0, total = 0; year < YRS; year++){ /* for each year, sum rainfall for each month */for (month = 0, subtot = 0; month < MONTHS; month++) subtot +=*(*(rain + year) + month); printf("%5d %15.1f\n", 2010 + year, subtot);total += subtot; /* total for all years */}printf("\nThe yearly average is %.1f inches.\n\n", total/YRS);printf("MONTHLY AVERAGES:\n\n");printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct "); printf(" Nov Dec\n");for (month = 0; month < MONTHS; month++){ /* for each month, sum rainfall over years */ for (year = 0, subtot =0; year < YRS; year++) subtot += *(*(rain + year) + month); printf("%4.1f ", subtot/YRS);}printf("\n");return 0;}PE 10-‐3/* Programming Exercise 10-3 */#include <stdio.h>#define LEN 10int max_arr(const int ar[], int n);void show_arr(const int ar[], int n);int main(void){int orig[LEN] = {1,2,3,4,12,6,7,8,9,10}; intmax;show_arr(orig, LEN); max =max_arr(orig, LEN); printf("%d = largestvalue\n", max);return 0;}int max_arr(const int ar[], int n){ int i; intmax = ar[0];/* don't use 0 as initial max value -- fails if all array values are neg */for (i = 1; i < n; i++)if (max < ar[i]) max= ar[i]; return max;}void show_arr(const int ar[], int n){ int i; for (i =0; i < n; i++) printf("%d", ar[i]); putchar('\n');}PE 10-‐5/* Programming Exercise 10-5 */#include <stdio.h>#define LEN 10double max_diff(const double ar[], int n); voidshow_arr(const double ar[], int n);。
C++ primer plus 编程练习(2-5)答案

C++ primer plus第二章到第五章编程练习答案第二章1:#include<iostream>#define max 10using namespace std;void main(){char name[max],dizhi[max];cout<<"请输入姓名: ";cin>>name;cout<<"请输入地址: ";cin>>dizhi;cout<<"姓名--->"<<name<<"\t地址--->"<<dizhi<<endl; }2:#include<iostream>using namespace std;void main(){long juli;cout<<"请输入距离long(1 long 为220码):";cin>>juli;cout<<"按照您输入的距离是:"<<juli*220<<"码"<<endl; }3:#include<iostream>using namespace std;void blind(){cout<<"Three blind mice\n";}void run(){cout<<"See how they run\n";}void main(){for(int i=0;i<2;i++)blind();for(int j=0;j<2;j++)run();}4:#include<iostream>using namespace std;void month(int age){cout<<"该年龄一共包含"<<age*12<<"个月!\n";}void main(){int age;cout<<"请输入年龄:";cin>>age;month(age);}5:#include<iostream>using namespace std;double fahrenheit(double celsius){return 1.8*celsius+32.0;}void main(){double celsius;cout<<"please enter a celsius value:";cin>>celsius;cout<<celsius<<" degrees celsius is "<<fahrenheit(celsius)<<" degrees fahrenheit.\n";}6:#include<iostream>using namespace std;double astronomical(double light){return 63240*light;}void main(){double light;cout<<"Enter the number of light years:";cin>>light;cout<<light<<" light years = "<<astronomical(light)<<" astronomical units.\n"; }7:#include<iostream>using namespace std;void display(int hours,int minutes){cout<<"Time: "<<hours<<":"<<minutes<<endl;}void main(){int hour,minute;cout<<"please input the time of hour:";cin>>hour;cout<<"please input the time of minute:";cin>>minute;display(hour,minute);}第三章1:#include<iostream>using namespace std;const float danwei=0.0833333;void iswap(int cun){cout<<"您的身高为: "<<cun*danwei<<" 英尺!"<<endl;}void main(){int cun;cout<<"请输入英寸单位的身高(整数):_______\b\b\b\b\b\b";cin>>cun;iswap(cun);}2:#include<iostream>using namespace std;const double yingchi=12;const double bang=2.2;const double memter=0.0245;void caculate(double chi,double cun,double weight){double BMI;double yingcun,mi,qianke;yingcun=cun+chi*yingchi;mi=yingcun*memter;qianke=weight/bang;BMI=qianke/(mi*mi);cout<<"您的BMI值为: "<<BMI<<endl;}void main(){double chi,cun,weight;cout<<"请输入身高(以几英尺几英寸方式输入): ";cin>>chi>>cun;cout<<"请输入体重(以磅为单位): ";cin>>weight;caculate(chi,cun,weight);}3:#include<iostream>using namespace std;void main(){double degrees,minutes,seconds,sum;cout<<"Enter a latitude in degrees,minutes,and seconds:"<<endl;cout<<"First,enter the degrees: ";cin>>degrees;cout<<"Next,enter the minutes of arc: ";cin>>minutes;cout<<"Finally,enter the seconds of arc: ";cin>>seconds;sum=degrees+minutes/60+seconds/3600;cout<<degrees<<" degrees,"<<minutes<<" minutes,"<<seconds<<" seconds= "<<sum<<" degrees."<<endl;}4:#include<iostream>using namespace std;const long m=60;const long h=60;const long d=24;int sumday(long seconds){long hour,minute;minute=seconds/m;hour=minute/h;return hour/d;}int sumhour(long seconds,int day){long minute;seconds=seconds-day*d*h*m;minute=seconds/m;return minute/h;}int summinute(long seconds,int day,int hour){seconds=seconds-(day*d*h*m+hour*h*m);return seconds/m;}int sumsecond(long seconds,int day,int hour,int minute){return seconds=seconds-(day*d*h*m+hour*h*m+minute*m);}void main(){long seconds;int day,hour,minute,second;cout<<"Enter the number of seconds: ";cin>>seconds;day=sumday(seconds);hour=sumhour(seconds,day);minute=summinute(seconds,day,hour);second=sumsecond(seconds,day,hour,minute);cout<<seconds<<" seconds = "<<day<<" days,"<<hour<<" hours,"<<minute<<" minutes,"<<second<<" seconds."<<endl;}5:#include<iostream>using namespace std;void main(){double world,us;cout<<"Enter the world's population: ";cin>>world;cout<<"Enter the population of the us: ";cin>>us;double bilv;bilv=us/world;cout<<"The population of the us is "<<bilv<<"% of the world population."<<endl;}6:#include<iostream>using namespace std;void main(){float memter,jialun;cout<<"以美国风格还是欧洲风格显示耗油量?m为美国,o为欧洲!"<<endl;cout<<"请输入(m或o):";char c;cin>>c;if(c=='m'){cout<<"请输入驱车里程(英里):";cin>>memter;cout<<"请输入使用汽油量(加仑):";cin>>jialun;cout<<"汽车耗油量为:"<<memter/jialun<<"mpg."<<endl;}else{cout<<"请输入驱车里程(公里):";cin>>memter;cout<<"请输入使用汽油量(升):";cin>>jialun;float ofg;ofg=(100*jialun)/memter;cout<<"汽车耗油量为:"<<ofg<<"L/100Km."<<endl;}}7:include<iostream>using namespace std;void main(){cout<<"请输入欧洲风格的汽车耗油量(每100公里消耗的汽油量(升)):";float ofg;cin>>ofg;float jialun;jialun=ofg/3.875;float haoyou;haoyou=62.14/jialun;cout<<"转换成美国风格的耗油量(一加仑的里程,mpg):"<<haoyou<<"mpg."<<endl;}第四章1:#include<iostream>#include<cstring>const int num=10;using namespace std;int main(){cout<<"What's your first name?";char first[num];cin.getline(first,num);cout<<"whst's your last name?";char last[num];cin>>last;cout<<"what letter grade do you deserve?";char grade;cin>>grade;cout<<"what's your age?";int age;cin>>age;cout<<"-------------------------------------"<<endl;cout<<"Name: "<<last<<","<<first<<endl;cout<<"Grade: "<<char (grade+1)<<endl;cout<<"Age: "<<age<<endl;return 0;}2:#include<iostream>#include<string>using namespace std;int main(){string name,dessert;cout<<"Enter your name:\n";getline(cin,name);cin.get();cout<<"Enter your favorite dessert:\n";getline(cin,dessert);cout<<"I have some delicious "<<dessert<<" for you, "<<name<<".\n";return 0;}3:#include<iostream>#include<cstring>using namespace std;int main(){cout<<"Enter,your first name: ";char first[10];cin>>first;cout<<"Enter your last name: ";char last[10];cin>>last;strcat(last,", ");strcat(last,first);cout<<"Here's the information in a single string: "<<last<<endl;return 0;}4:include<iostream>#include<string>using namespace std;int main(){cout<<"Enter,your first name: ";string first;cin>>first;cout<<"Enter your last name: ";string last;cin>>last;last=last+", ";last=last+first;cout<<"Here's the information in a single string: "<<last<<endl;return 0;}5:#include<iostream>#include<string>using namespace std;struct CandyBar{char brand[20];double weight;long calories;};int main(){CandyBar snack={ "Mocha Munch",2.3,350 };cout<<snack.brand<<endl;cout<<snack.weight<<endl;cout<<snack.calories<<endl;return 0;}6:#include<iostream>#include<string>using namespace std;struct CandyBar{char brand[20];double weight;long calories;};int main(){CandyBar snack[3]={ { "Mocha Munch",2.3,350 },{ "caorui",3.6,456 },{ "denger",4.7,877 } };for(int i=0;i<3;i++){cout<<"-----------------------"<<endl;cout<<snack[i].brand<<endl;cout<<snack[i].weight<<endl;cout<<snack[i].calories<<endl;}cout<<"-----------------------"<<endl;return 0;}7:#include<iostream>#include<string>#include<cstring>using namespace std;struct pizza{string company;double diameter;double weight;};int main(){pizza p;cout<<"Please input the company of manufacture pizza: ";getline(cin,pany);cout<<"Please input the diameter of pizza: ";cin>>p.diameter;cout<<"Please input the weight of pizza: ";cin>>p.weight;cout<<"Name : "<<pany<<",and the company name is form of "<<pany.size()<<" words."<<endl;cout<<"Diameter: "<<p.diameter<<endl;cout<<"Weight: "<<p.weight<<endl;return 0;}8:#include<iostream>#include<string>#include<cstring>using namespace std;struct pizza{string company;double diameter;double weight;};int main(){pizza *p=new pizza;cout<<"Please input the diameter of pizza: ";cin>>p->diameter;cin.get();cout<<"Please input the company of manufacture pizza: ";getline(cin,p->company);cout<<"Please input the weight of pizza: ";cin>>p->weight;cout<<"Name : "<<p->company<<",and the company name is form of "<<p->company.size()<<" words."<<endl;cout<<"Diameter: "<<p->diameter<<endl;cout<<"Weight: "<<p->weight<<endl;return 0;}9:#include<iostream>#include<string>using namespace std;struct CandyBar{char brand[20];double weight;long calories;};int main(){CandyBar *snack=new CandyBar[3];strcpy(snack->brand,"shanghai");snack->weight=1.2;snack->calories=7;strcpy((snack+1)->brand,"beijing");(snack+1)->weight=2.3;(snack+1)->calories=8;strcpy((snack+2)->brand,"guangzhou");(snack+2)->weight=3.4;(snack+2)->calories=9;for(int i=0;i<3;i++){cout<<"-----------------------"<<endl;cout<<snack[i].brand<<endl;cout<<snack[i].weight<<endl;cout<<snack[i].calories<<endl;}cout<<"-----------------------"<<endl;return 0;}10:#include<iostream>#include<string>using namespace std;int main(){double grade[3];cout<<"Please input three grades of running."<<endl;for(int i=0;i<3;i++){cout<<"The "<<i+1<<" is :";cin>>grade[i];}cout<<"一共跑了3次,平均成绩为: "<<(grade[0]+grade[1]+grade[2])/3<<" 码."<<endl;return 0;}第五章1:#include<iostream>using namespace std;int main(){int x,y;cout<<"please input two numbers."<<endl;cin>>x>>y;double sum=0;for(int i=x;i<=y;i++)sum+=i;cout<<x<<" to "<<y<<" sums is: "<<sum<<endl;system("pause");return 0;}2:#include<iostream>using namespace std;int main(){long double jiechen=1;for(int i=2;i<=100;i++)jiechen=i*jiechen;cout<<"100!="<<jiechen<<endl;system("pause");return 0;}3:#include<iostream>using namespace std;int main(){double numbers;cout<<"please input some numbers to caculate sums."<<endl;cin>>numbers;double sum=0;while(numbers){sum+=numbers;cout<<"Sum is "<<sum<<endl;cin>>numbers;}system("pause");return 0;}4:#include<iostream>using namespace std;int main(){double Daphne=100,Cleo=100;int x=0;do{++x;Daphne=Daphne+100*0.1;Cleo=Cleo+Cleo*0.05;}while(Cleo<Daphne);cout<<x<<" years later, Cleo's Money are more than Daphne's Money."<<endl;cout<<"---Now"<<endl;cout<<"Cleo has "<<Cleo<<"$!"<<endl;cout<<"Daphne has "<<Daphne<<"$!"<<endl;system("pause");return 0;}5:#include<iostream>using namespace std;int main(){cout<<"please input twelves months sales amount of 《C++ For Fools》."<<endl;char *month[12]={ "January","February","March","April","May","June","July","August","September","October","November","December" };int sales[12];double sum=0;for(int i=0;i<12;i++){cout<<month[i]<<" : ";cin>>sales[i];sum+=sales[i];}cout<<"Form "<<month[0]<<" to "<<month[11]<<" ,the sum sales is "<<sum<<endl;system("pause");return 0;}6:#include<iostream>#include<stdlib.h>using namespace std;int main(){cout<<"please input twelves months sales amount of 《C++ For Fools》."<<endl;char *month[12]={ "January","February","March","April","May","June","July","August","September","October","November","December" };int sales[3][12];double sum=0;for(int k=0;k<3;k++){system("CLS");cout<<"Please input the "<<k+1<<" years sales."<<endl;for(int i=0;i<12;i++){cout<<month[i]<<" : ";cin>>sales[k][i];sum+=sales[k][i];}}cout<<"Form three years of "<<month[0]<<" to "<<month[11]<<" ,the sum sales is "<<sum<<endl;system("pause");return 0;}7:#include<iostream>#include<string>using namespace std;struct car{string company;int year;};int main(){cout<<"How many cars do you wish to catalog?";int num;(cin>>num).get();car *c=new car[num];for(int i=0;i<num;++i){cout<<"Car #"<<i+1<<endl;cout<<"Please enter the make: ";getline(cin,c[i].company);cout<<"Please enter the year: ";(cin>>c[i].year).get();}cout<<endl<<"Here is your collection:"<<endl;for(int j=0;j<num;++j)cout<<c[j].year<<" "<<c[j].company<<endl;system("pause");return 0;}8:#include<iostream>#include<cstring>using namespace std;int main(){char words[20];int sums=0;cout<<"enter words (to stop,type the words done): "<<endl;cin>>words;while(strcmp(words,"done")){++sums;cin>>words;}cout<<"You entered a total of "<<sums<<" words."<<endl;system("pause");return 0;}9:#include<iostream>#include<string>using namespace std;int main(){string words;int sums=0;cout<<"enter words (to stop,type the words done): "<<endl;cin>>words;while(words!="done"){++sums;cin>>words;}cout<<"You entered a total of "<<sums<<" words."<<endl;system("pause");return 0;}10:#include<iostream>#include<string>using namespace std;int main(){cout<<"Enter number of rows :";int nums;cin>>nums;for(int i=1;i<=nums;++i){for(int j=nums-i;j>0;--j)cout<<".";for(int k=1;k<=i;++k)cout<<"*";cout<<endl;}system("pause");return 0;}。
C Primer Plus第6版编程练习答案(已下载)

C Primer Plus Sixth Edition Programming ExerciseSelected Answers Chapter 2 Programming ExercisesPE 2-1/* Programming Exercise 2-1 */#include <stdio.h> intmain(void){ printf("Gustav Mahler\n");printf("Gustav\nMahler\n");printf("Gustav ");printf("Mahler\n"); return0;}PE 2-3/* Programming Exercise 2-3 */#include <stdio.h> intmain(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 <stdio.h>void jolly(void);void deny(void); intmain(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-6/* Programming Exercise 2-6 */#include <stdio.h> intmain(void){ int toes;toes = 10;printf("toes = %d\n", toes);— printf("Twice toes = %d\n", 2 * toes);printf("toes squared = %d\n", toes * toes); return0;}/* or create two more variables, set them to 2 * toes and toes * toes */PE 2-8/* Programming Exercise 2-8 */#include <stdio.h>void one_three(void);void two(void); intmain(void){printf("starting now:\n");one_three();printf("done!\n"); return0;}void one_three(void){printf("one\n");two();printf("three\n");}void two(void){printf("two\n");}Chapter 3 Programming ExercisesPE 3-2/* Programming Exercise 3-2 */#include <stdio.h> intmain(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 <stdio.h> intmain(void){ floatnum;printf("Enter a floating-point value: ");scanf("%f", &num);printf("fixed-point notation: %f\n", num);printf("exponential notation: %e\n", num);printf("p notation: %a\n", num); return 0;}—PE 3-6/* Programming Exercise 3-6 */#include <stdio.h> intmain(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 ExercisesPE 4-1/* Programming Exercise 4-1 */#include <stdio.h> intmain(void){ charfname[40]; charlname[40];printf("Enter your first name: ");scanf("%s", fname); printf("Enteryour last name: "); scanf("%s",lname); printf("%s, %s\n", lname,fname); return 0;}PE 4-4/* Programming Exercise 4-4 */#include <stdio.h> intmain(void){ float height;char name[40];printf("Enter your height in inches: ");scanf("%f", &height); printf("Enter yourname: "); scanf("%s", name);printf("%s, you are %.3f feet tall\n", name, height / 12.0);return 0;}PE 4-7/* Programming Exercise 4-7 */#include <stdio.h>#include <float.h> intmain(void)—{ float ot_f = 1.0 / 3.0;double ot_d = 1.0 / 3.0;printf(" float values: ");printf("%.4f %.12f %.16f\n", ot_f, ot_f, ot_f);printf("double values: ");printf("%.4f %.12f %.16f\n", ot_d, ot_d, ot_d);printf("FLT_DIG: %d\n", FLT_DIG);printf("DBL_DIG: %d\n", DBL_DIG); return 0;}Chapter 5 Programming ExercisesPE 5-1/* Programming Exercise 5-1 */#include <stdio.h> intmain(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 minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d",&minutes);}printf("Bye\n");return 0;}PE 5-3/* Programming Exercise 5-3 */#include <stdio.h> intmain(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<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 = %d\n", sum); return0;}PE 5-7/* Programming Exercise 5-7 */#include <stdio.h> voidshowCube(double x);int main(void) /* finds cube of entered number */{ doubleval;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 ExercisesPE 6-1/* pe6-1.c *//* this implementation assumes the character codes *//* are sequential, as they are in ASCII. */#include <stdio.h> #define SIZE26 int main( void ) { charlcase[SIZE]; int i;for (i = 0; i < SIZE; i++)lcase[i] = 'a' + i; for (i= 0; i < SIZE; i++)printf("%c", lcase[i]);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> intmain( 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<stdio.h> intmain( void ){ int lower, upper,index; int square, cube;printf("Enter starting integer: ");scanf("%d", &lower); printf("Enterending integer: "); scanf("%d",&upper);printf("%5s %10s %15s\n", "num", "square","cube"); for (index = lower; index <= upper;index++){ square = index *index; cube = index *square;printf("%5d %10d %15d\n", index, square, cube);}return 0;}PE 6-8/* pe6-8.c */ #include<stdio.h> intmain( void ){ double n,m; doubleres;printf("Enter a pair of numbers: ");while (scanf("%lf %lf", &n, &m) == 2){res = (n - m) / (n * m);printf("(%.3g - %.3g)/(%.3g*%.3g) = %.5g\n", n, m, n, m, res);printf("Enter next pair (non-numeric to quit): ");}return 0;}PE 6-11/* pe6-11.c */—#include <stdio.h>#define SIZE 8 intmain( void ){ intvals[SIZE]; inti;printf("Please enter %d integers.\n", SIZE);for (i = 0; i < SIZE; i++) scanf("%d",&vals[i]);printf("Here, in reverse order, are the values you entered:\n");for (i = SIZE - 1; i >= 0; i--) printf("%d ", vals[i]);printf("\n"); return 0;}PE 6-13/* pe6-13.c *//* This version starts with the 0 power */#include <stdio.h>#define SIZE 8 intmain( void ){int twopows[SIZE];int i;int value = 1; /* 2 to the 0 */for (i = 0; i < SIZE; i++){ twopows[i] =value; value *= 2;}i = 0;do {printf("%d ", twopows[i]);i++; } while (i < SIZE);printf("\n");return 0;}PE 6-14/* pe-14.c *//* Programming Exercise 6-14 */#include <stdio.h>#define SIZE 8 intmain(void){ double arr[SIZE];double arr_cumul[SIZE];int i;printf("Enter %d numbers:\n",SIZE);for (i = 0; i < SIZE; i++){printf("value #%d: ", i + 1);scanf("%lf", &arr[i]); /* orscanf("%lf", arr + i); */}arr_cumul[0] = arr[0]; /* set first element */for (i = 1; i < SIZE; i++)— arr_cumul[i] = arr_cumul[i-1] + arr[i];for (i = 0; i < SIZE; i++)printf("%8g ", arr[i]);printf("\n"); for (i = 0; i <SIZE; i++) printf("%8g ",arr_cumul[i]); printf("\n");return 0;}PE 6-16/* pe6-16.c */#include <stdio.h>#define RATE_SIMP 0.10#define RATE_COMP 0.05#define INIT_AMT 100.0 intmain( 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: $%.2f\n", daphne); printf("Deidre:$%.2f\n", deidre); return 0;}Chapter 7 Programming ExercisesPE 7-1/* Programming Exercise 7-1 */#include <stdio.h> intmain(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: %d\n", sp_ct, nl_ct, other);return 0;}—PE 7-3/* Programming Exercise 7-3 */#include <stdio.h> intmain(void){ int n; doublesumeven = 0.0; intct_even = 0; doublesumodd = 0.0; intct_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("\ndone\n");return 0;}PE 7-5/* Programming Exercise 7-5 */#include <stdio.h> intmain(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 <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 intmain(void){double hours;double gross;double net; doubletaxes;printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS)gross = hours * BASEPAY; elsegross = BASEHRS * BASEPAY + (hours - BASEHRS) * BASEPAY * OVERTIME;if (gross <= AMT1) taxes = gross * RATE1; else if (gross <=AMT1 + AMT2)taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2;elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3;net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net);return 0;}PE 7-9/* Programming Exercise 7-9 */#include <stdio.h>#include <stdbool.h> intmain(void){int limit;int num; intdiv;bool numIsPrime; // use int if stdbool.h not availableprintf("Enter a positive integer: ");while (scanf("%d", &limit) == 1 && limit > 0){if (limit > 1)printf("Here are the prime numbers up through %d\n", limit);elseprintf("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 <stdio.h>#include <ctype.h> intmain(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; constdouble under20 = 14.00; const doublebase20 = 14.00; const double extralb= 0.50;charch;double lb_artichokes = 0;double lb_beets = 0;double lb_carrots = 0;double lb_temp; doublelb_total;doublecost_artichokes; doublecost_beets; doublecost_carrots; doublecost_total; doublefinal_total; doublediscount; doubleshipping;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 ofcarrots: "); 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 < 20) shipping = under20; elseshipping = base20 + extralb * lb_total;if (cost_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:$ %.2f\n",lb_artichokes, price_artichokes, cost_artichokes);printf("%.2f lbs of beets at $%.2f per pound: $%.2f\n",lb_beets, price_beets, cost_beets); printf("%.2f lbs ofcarrots at $%.2f per pound: $%.2f\n", lb_carrots,price_carrots, cost_carrots); printf("Total cost ofvegetables: $%.2f\n", cost_total); if (cost_total > 100)printf("Volume discount: $%.2f\n", discount);printf("Shipping: $%.2f\n", shipping);printf("Total charges: $%.2f\n", final_total);return 0; }Chapter 8 Programming ExercisesPE 8-1/* Programming Exercise 8-1 */#include <stdio.h>int main(void) { int ch;int ct = 0; while ((ch =getchar()) != EOF) ct++;printf("%d characters read\n", ct);return 0;}PE 8-3/* Programming Exercise 8-3 *//* Using ctype.h eliminates need to assume consecutive coding */#include <stdio.h>#include <ctype.h> intmain(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++; elseoct++;—printf("%lu uppercase characters read\n", uct);printf("%lu lowercase characters read\n", lct); printf("%luother characters read\n", oct);return 0;}/* or you could use if(ch >= 'A' && ch <= 'Z')uct++;else if (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 <stdio.h> #include<ctype.h> 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("\nah if it is high, and with an l if it is low.\n"); printf("Uh...is yournumber %d?\n", guess);while ((response = getchar()) != 'y') /* get response */{if (response == '\n')continue;if (response != 'h' && response != 'l'){printf("I don't understand that response. Please enter h for\n"); 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 <stdio.h>#include <ctype.h>#include <stdio.h>#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 // 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 tierint getfirst(void); void menu(void); intmain(void){ double hours;double gross;double net;double taxes;double pay;char response;menu();while ((response = getfirst()) != 'q'){if (response == '\n') /* skip over newlines */continue;response = tolower(response); /* accept A as a, etc. */switch (response){case 'a': pay = BASEPAY1; break;case 'b': pay = BASEPAY2; break; case'c': pay = BASEPAY3; break; case 'd':pay = BASEPAY4; break;default : printf("Please enter a, b, c, d, or q.\n"); menu();continue; // go to beginning of loop}printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS)gross = hours * pay; elsegross = BASEHRS * pay + (hours - BASEHRS) * pay * OVERTIME;if (gross <= AMT1) taxes = gross * RATE1; else if(gross <= AMT1 + AMT2)taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2;elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3;net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net); menu(); }printf("Done.\n");return 0;}void menu(void){printf("********************************************************""*********\n");printf("Enter the letter corresponding to the desired pay rate"" or action:\n");printf("a) $%4.2f/hr b) $%4.2f/hr\n", BASEPAY1,BASEPAY2);printf("c) $%5.2f/hr d) $%5.2f/hr\n", BASEPAY3,BASEPAY4); printf("q) quit\n");printf("********************************************************""*********\n");}int getfirst(void)—{ intch;ch = getchar();while (isspace(ch))ch = getchar(); while(getchar() != '\n')continue; return ch;}Chapter 9 Programming ExercisesPE 9-1/* Programming Exercise 9-1 */#include <stdio.h>double min(double, double); intmain(void){double x, y; printf("Enter twonumbers (q to quit): "); while(scanf("%lf %lf", &x, &y) == 2){ printf("The smaller number is %f.\n",min(x,y)); printf("Next two values (q to quit):");}printf("Bye!\n");return 0;}double min(double a, double b){return a < b ? a : b;}/* alternative implementation doublemin(double a, double b){ if (a < b)return a;elsereturn b;}*/PE 9-3/* Programming Exercise 9-3 */#include <stdio.h>void chLineRow(char ch, int c, int r); intmain(void){ char ch; int col, row;printf("Enter a character (# to quit): ");while ( (ch = getchar()) != '#')— { if (ch =='\n')continue;printf("Enter number of columns and number of rows: ");if (scanf("%d %d", &col, &row) != 2) break;chLineRow(ch, col, row);printf("\nEnter next character (# to quit): ");}printf("Bye!\n");return 0;}// start rows and cols at 0 voidchLineRow(char ch, int c, int r){int col, row;for (row = 0; row < r ; row++){for (col = 0; col < c; col++)putchar(ch); putchar('\n');}return;}PE 9-5/* Programming Exercise 9-5 */#include <stdio.h>void larger_of(double *p1, double *p2); intmain(void){double x, y; printf("Enter twonumbers (q to quit): "); while(scanf("%lf %lf", &x, &y) == 2){larger_of(&x, &y);printf("The modified values are %f and %f.\n", x, y);printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}void larger_of(double *p1, double *p2){ if (*p1 >*p2) *p2 =*p1; else*p1 = *p2;}// alternatively:/*void larger_of(double *p1, double *p2){*p1= *p2 = *p1 > *p2 ? *p1 : *p2;—}*/PE 9-8/* Programming Exercise 9-8 */ #include<stdio.h>double power(double a, int b); /* ANSI prototype */ intmain(void) { double x, xpow; int n; printf("Enter anumber and the integer power"); printf(" to which\nthenumber will be raised. Enter q"); printf(" to quit.\n");while (scanf("%lf%d", &x, &n) == 2){ xpow = power(x,n); /* function call*/ printf("%.3g to the power %d is %.5g\n", x, n,xpow); printf("Enter next pair of numbers or q toquit.\n");} printf("Hope you enjoyed this power trip --bye!\n"); return 0;} double power(double a, int b) /* function definition*/{ double pow =1; int i;if (b == 0){ if (a ==0)printf("0 to the 0 undefined; using 1 as the value\n");pow = 1.0; } else if (a == 0) pow = 0.0; else if (b >0) for(i = 1; i <= b; i++) pow *= a; else /* b< 0 */ pow = 1.0 / power(a, - b);return pow; /* return the value of pow */}PE 9-10/* Programming Exercise 9-10 */ #include<stdio.h> void to_base_n(int x, int base);int main(void) { int number; int b;int count; printf("Enter an integer (qto quit):\n"); while (scanf("%d", &number)== 1){ printf("Enter number base (2-10):"); while ((count = scanf("%d",&b))== 1&& (b < 2 || b > 10)){printf("base should be in the range 2-10: ");} if(count != 1)break;printf("Base %d equivalent: ", b);to_base_n(number, b); putchar('\n');printf("Enter an integer (q to quit):\n");}printf("Done.\n");return 0;}void to_base_n(int x, int base) /* recursive function */{ int r; r = x % base;if (x >= base) to_base_n(x—/ base, base); putchar('0' +r); return;}Chapter 10 Programming ExercisesPE 10-1/* Programming Exercise 10-1 */#include <stdio.h>#define MONTHS 12 // number of months in a year#define YRS 5 // number of years of data intmain(void){// initializing rainfall data for 2010 - 2014const float rain[YRS][MONTHS] = {{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}}; int year,month; float subtot,total;printf(" YEAR RAINFALL (inches)\n");for (year = 0, total = 0; year < YRS; year++){ /* for each year, sum rainfall for each month */for (month = 0, subtot = 0; month < MONTHS; month++)subtot += *(*(rain + year) + month); printf("%5d %15.1f\n",2010 + year, subtot);total += subtot; /* total for all years */}printf("\nThe yearly average is %.1f inches.\n\n", total/YRS);printf("MONTHLY AVERAGES:\n\n");printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct ");printf(" Nov Dec\n");for (month = 0; month < MONTHS; month++){ /* for each month, sum rainfall over years */for (year = 0, subtot =0; year < YRS; year++) subtot+= *(*(rain + year) + month); printf("%4.1f ",subtot/YRS);}printf("\n");return 0;}PE 10-3/* Programming Exercise 10-3 */#include <stdio.h>#define LEN 10int max_arr(const int ar[], int n);void show_arr(const int ar[], int n);int main(void){— int orig[LEN] = {1,2,3,4,12,6,7,8,9,10};int max;show_arr(orig, LEN); max =max_arr(orig, LEN); printf("%d =largest value\n", max);return 0;}int max_arr(const int ar[], int n){ int i; intmax = ar[0];/* don't use 0 as initial max value -- fails if all array values are neg */for (i = 1; i < n; i++)if (max < ar[i])max = ar[i]; return max;}void show_arr(const int ar[], int n){ int i; for (i= 0; i < n; i++)printf("%d ", ar[i]);putchar('\n');}PE 10-5/* Programming Exercise 10-5 */#include <stdio.h>#define LEN 10double max_diff(const double ar[], int n); voidshow_arr(const double ar[], int n);int main(void){double orig[LEN] = {1.1,2,3,4,12,61.3,7,8,9,10};double max;show_arr(orig, LEN);max = max_diff(orig, LEN);printf("%g = maximum difference\n", max);return 0;}double max_diff(const double ar[], int n){ int i; doublemax = ar[0]; doublemin = ar[0];for (i = 1; i < n; i++){if (max < ar[i])max = ar[i]; else if(min > ar[i])min = ar[i];}return max - min;}void show_arr(const double ar[], int n)。
c++primerplus(第六版)课后编程练习答案

第二章:开始学习C++ n”;}<<endl;return 0;}double C2F(double t){return *t+32;,}<<endl;return 0;}double convert(double t){return 63240*t;n";return 0;}`style(miles per gallon):"<<endl;cout<<Euro_style<<" L/100Km = "<<*Euro_style<<" mpg\n";return 0;}Enter the automobile gasoline consumption figure inEuropean style(liters per 100 kilometers):Converts to . style(miles per gallon):L/100Km = mpg。
Press any key to continuestyle(miles per gallon):";double US_style;cin>>US_style;cout<<"Converts to European style(miles per gallon):"<<endl;cout<<US_style<<" mpg = "<< *US_style<<"L/100Km\n";return 0;}style(miles per gallon):19Converts to European style(miles per gallon):`19 mpg = 100KmPress any key to continue第四章复合类型n";return 0;}rand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;&}return 0;}rand="A";eight=;snack[0].calory=200;snack[1].brand="B";snack[1].weight=;snack[1].calory=400;)snack[2].brand="C";snack[2].weight=;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " << snack[i].brand << endl;cout << " weight: " << snack[i].weight << endl;cout << " calorie: " << snack[i].calory << endl<<endl; (}delete [] snack;return 0;}et();car* ps=new car[num];for(int i=0;i<num;++i){cout<<"Car #"<<i+1<<":\n";—cout<<"Please enter the make: ";getline(cin,ps[i].name);cout<<"Please enter the year made: ";(cin>>ps[i].year).get();}cout<<"Here is your collection:\n";for(int i=0;i<num;++i)cout<<ps[i].year<<" "<<ps[i].name<<endl;delete [] ps;return 0;.}n";return 0;}n";return 0;}…;for(int k=0;k<=i;++k)cout<<"*";cout<<endl;}return 0;}。
C Primer Plus第6版编程练习答案(已下载)精编版

/* or create two more variables, set them to 2 * toes and toes * toes */
PE
/* Programming Exercise 2-8 */
#include <stdio.h> void one_three(void); void two(void); int main(void)
Chapter
PE
/* Programming Exercise 2-1 */
#include <stdio.h> int main(void)
{ printf("Gustav Mahler\n"); printf("Gustav\nMahler\n"); printf("Gustav "); printf("Mahler\n"); return 0;
printf("An age of %d years is %d days.\n", ageyears, agedays); return 0;
}
PE
/* Programming Exercise 2-4 */
#include <stdio.h> void jolly(void); void deny(void); int main(void)
}
PE
/* Programming Exercise 2-3 */
#include <stdio.h> int main(void)
{ int ageyears; /* age in years */ int agedays; /* age in days */
(完整word)c++primerplus(第六版)课后编程练习答案

第二章:开始学习C++//ex2。
1——display your name and address#include〈iostream〉int main(void){using namespace std;cout〈〈"My name is liao chunguang and I live in hunan chenzhou。
\n”;}//ex2。
2-—convert the furlong units to yard uints-把浪单位换位码单位#include〈iostream>double fur2yd(double);int main(){using namespace std;cout〈〈"enter the distance measured by furlong units:";double fur;cin〉>fur;cout〈<”convert the furlong to yard"〈<endl;double yd;yd=fur2yd(fur);cout<<fur<〈" furlong is "<<yd〈〈" yard"〈〈endl;return 0;}double fur2yd(double t){return 220*t;}//ex2。
3—每个函数都被调用两次#include〈iostream〉void mice();void see();using namespace std;int main(){mice();mice();see();see();return 0;}void mice(){}void see(){cout<〈"see how they run”〈<endl;}//ex2.4#include〈iostream〉int main(){using namespace std;cout〈<"Enter your age:”;int age;cin>>age;int month;month=age*12;cout<〈age<〈” years is "<〈month<〈" months"<<endl;return 0;}//ex2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章概览编程练习1.您刚刚被MacroMuscle有限公司(Software for Hard Bodies)聘用。
该公司要进入欧洲市场,需要一个将英寸转换为厘米(1英寸= cm)的程序。
他们希望建立的该程序可提示用户输入英寸值。
您的工作是定义程序目标并设计该程序(编程过程的第1步和第2步)。
1.将英寸值转化为厘米值2.显示“输入英寸值”->得到该值->转换为厘米值->存储->告知用户已结束第二章 C语言概述编程练习1.编写一个程序,调用printf()函数在一行上输出您的名和姓,再调用一次printf()函数在两个单独的行上输出您的名和姓,然后调用一对printf()函数在一行上输出您的名和姓。
输出应如下所示(当然里面要换成您的姓名):Anton BrucknerAntonBrucknerAnton Bruckner第一个输出语句第二个输出语句仍然是第二个输出语句第三个和第四个输出语句#include<>int main(void){printf("He Jin\n");printf("He\n");printf("Jin\n");printf("He Jin\n");return(0);}2.编写一个程序输出您的姓名及地址。
#include<>int main(void){printf("Name:He Jin\n");printf("Address:CAUC\n");return(0);}3.编写一个程序,把您的年龄转换成天数并显示二者的值。
不用考虑平年( fractional year)和闰年(leapyear)的问题。
#include<>int main(void){int age=22;printf("Age:%d\n",age);printf("Day:%d\n",age*356);return(0);}4.编写一个能够产生下面输出的程序:For he's a jolly good fellow!For he's a jolly good fellow!For he's a jolly good fellow!Which nobody can deny!程序中除了main()函数之外,要使用两个用户定义的函数:一个用于把上面的夸奖消息输出一次:另一个用于把最后一行输出一次。
#include<>void printf1(void);void printf2(void);int main(void){printf1();printf1();printf1();printf2();return(0);}void printf1(void){printf("For he's a jolly good fellow!\n");}void printf2(void){printf("Which nobody can deny!\n");}5.编写一个程序,创建一个名为toes的整数变量。
让程序把toes设置为10。
再让程序计算两个toes的和以及toes的平方。
程序应该输出所有的3个值,并分别标识它们。
#include<>int main(void){int toes=10;int toes_add;int toes_square;toes_add=toes+toes;toes_square=toes*toes;printf("toes=%d\ntoes_add=%d\ntoes_square=%d\n",toes,toes_add,toes_square);return(0);}6.编写一个能够产生下列输出的程序:Smile ! Smile ! SmileSmile ! Smile !Smile !在程序中定义一个能显示字符串smile卜一次的函数,并在需要时使用该函数。
#include<>void display(void);int main(void){display();display();display();printf("\n");display();display();printf("\n");display();printf("\n");return(0);}void display(void){printf("Smile!");}7.编写一个程序,程序中要调用名为one_three()的函数。
该函数要在一行中显示单词"one",再调用two()函数,然后再在另一行中显示单词"three"。
函数two()应该能在一行中显示单词"two"。
main()函数应该在调用one_three()函数之前显示短语"starting now:",函数调用之后要显示"done!"o这样,最后的输出结果应如下所示:starting nowonetwothreedone !#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("One\n");two();printf("Three\n");}void two(void)printf("Two\n");}第三章数据和C编程练习1.通过试验的方法(即编写带有此类问题的程序)观察系统如何处理整数上溢、浮点数上溢和浮点数下溢的情况。
#include<>int main(void){unsigned int a=95;float b=;float c=b*10;float d=;printf("%u+1=%u\n",a,a+1);printf("%e*10=%e\n",b,c);printf("%f/10=%f\n",d,d/10);return(0);}2.编写一个程序,要求输入一个ASCII码值(如66),然后输出相应的字符。
#include<>int main(void){char a;scanf("%d",&a);printf("%c\n",a);return(0);}3.编写一个程序,发出警报声,并打印下列文字:Startled by the sudden sound, Sally shouted, "By the Great Pumpkin, what was that!"#include<>int main(void)printf("\aStartled by the sudden sound,Sally shouted,\"By the Great pumpkin,what was that!\"\n");return(0);}4.编写一个程序,读入一个浮点数,并分别以小数形式和指数形式打印。
输出应如同下面格式(实际显示的指数位数也许因系统而不同):The input is or +001.#include<>int main(void){float a;scanf("%f",&a);printf("The input is %f or %e\n",a,a);return(0);}5.一年约有×l07S。
编写一个程序,要求输入您的年龄,然后显示该年龄合多少秒。
#include<>int main(void){float a;printf("Please input your age:");scanf("%f",&a);printf("Your age is %e seconds\n",a*;return(0);}个水分子的质量约为×10^-23g,l夸脱水大约有950g。
编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少个水分子。
#include<>int main(void){float a;printf("Please input how much quarts the water is:");scanf("%f",&a);printf("%f quarts water has %e molecules.\n",a,a*950/3E-23);}7. 1英寸等于。
编写一个程序,要求输入您的身高(以英寸为单位),然后显示该身高值等于多少厘米。
如果您愿意,也可以要求以厘米为单位输入身高,然后以英寸为单位进行显示。
#include<>int main(void){float a;printf("Please input your height by inches:");scanf("%f",&a);printf("Your height is %fcm.\n",a*;return(0);}第4章字符串和格式化输入/输出编程练习1.编写一个程序,要求输入名字和姓氏,然后以“名字,姓氏”的格式打印。
#include<>int main(void){char surname[20],firstname[20];printf("Please input your firstname and surname:");scanf("%s",firstname);scanf("%s",surname);printf("You are %s,%s.\n",firstname,surname);return(0);}2.编写一个程序,要求输入名字,并执行以下操作:a.把名字引在双引号中打印出来。