资源描述
(完整版)C Primer Plus第6版编程练习答案(已下载)
Chapter 2 Programming Exercises
PE 2—。‐1
/* 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;
}
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 = 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); 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—。‐6
/* Programming Exercise 2-6 */
#include 〈stdio.h〉 int main(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〉 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");
}
Chapter 3 Programming Exercises
PE 3—.‐2
/* Programming Exercise 3-2 */
#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;
}
PE 3-.‐4
/* Programming Exercise 3-4 */
#include 〈stdio。h> int main(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(”p notation: %a\n”, num); 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;
}
Chapter 4 Programming Exercises
PE 4—。‐1
/* Programming Exercise 4—1 */
#include 〈stdio.h> int main(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〉 int main(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; 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 Exercises
PE 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 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> int main(void)
{ const int daysperweek = 7; int days, weeks, day_rem;
printf(”Enter the number of days: "); scanf(”%d", &days); while (days 〉 0)
{ weeks = days / daysperweek; day_rem = days % daysperweek;
printf("%d days are %d weeks and %d days。\n”, days, weeks, day_rem);
printf("Enter the number of days (0 or less to end): "); scanf("%d", &days);
}
printf(”Done!\n”); return 0;
}
PE 5-‐5
/* Programming Exercise 5-5 */ #include 〈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〉 void showCube(double x);
int main(void) /* finds cube of entered number */
{ double val;
printf("Enter a floating—point value: ”); scanf(”%lf”, &val); showCube(val); return 0; }
void showCube(double x)
{
printf("The cube of %e is %e。\n", x, x*x*x );
}
Chapter 6 Programming Exercises
PE 6—‐1
/* pe6-1.c */
/* this implementation assumes the character codes */
/* are sequential, as they are in ASCII。 */
#include <stdio。h> #define SIZE 26 int main( void ) { char lcase[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> int main( void )
{ char let = ’F’; char start; char end;
for (end = let; end 〉= 'A'; end——)
{
for (start = let; start 〉= end; start--) printf("%c”, start); printf("\n”);
} return 0;
}
PE 6-。‐6
/* pe6—6.c */ #include 〈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 %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〉 #define SIZE 8 int main( void )
{ int vals[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> #define SIZE 8 int main( 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 int main(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]); /* 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 int main( void )
{
double daphne = INIT_AMT; double deidre = INIT_AMT; int years = 0;
while (deidre 〈= daphne)
{ daphne += RATE_SIMP * INIT_AMT; deidre += RATE_COMP * deidre;
++years; }
printf("Investment values after %d years:\n", years); printf("Daphne: $%。2f\n”, daphne); printf(”Deidre: $%。2f\n", deidre); return 0;
}
Chapter 7 Programming Exercises
PE 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〉 int main(void)
{ int n; double sumeven = 0。0; int ct_even = 0; double sumodd = 0.0; int ct_odd = 0;
while (scanf("%d", &n) == 1 && n != 0)
{
if (n % 2 == 0)
{
sumeven += n;
++ct_even;
}
else // n % 2 is either 1 or —1
{
sumodd += n;
++ct_odd;
} }
printf("Number of evens: %d”, ct_even); if (ct_even > 0)
printf(" average: %g", sumeven / ct_even); putchar('\n’);
printf("Number of odds: %d", ct_odd); if (ct_odd > 0)
printf(” average: %g", sumodd / ct_odd); putchar(’\n'); printf(”\ndone\n");
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 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 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: $%。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; int num; int div;
bool numIsPrime; // use int if stdbool.h not available
printf(”Enter a positive integer: ”); while (scanf("%d", &limit) == 1 && limit 〉 0)
{
if (limit > 1)
printf(”Here are the prime numbers up through %d\n", limit); else
printf(”No primes。\n"); for (num = 2; num <= limit; num++)
{
for (div = 2, numIsPrime = true; (div * div) 〈= num; div++) if (num % div == 0) numIsPrime = false; if (numIsPrime)
printf("%d is prime.\n”, num);
}
printf("Enter a positive integer (q to quit): ");
}
printf("Done!\n”); return 0;
}
PE 7—。‐11
/* pe7—11.c */
/* Programming Exercise 7-11 */
#include 〈stdio。h〉 #include <ctype.h> int main(void)
{
const double price_artichokes = 2。05; const double price_beets = 1.15; const double price_carrots = 1。09; const double DISCOUNT_RATE = 0.05; const double under5 = 6。50; const double under20 = 14.00; const double base20 = 14。00; const double extralb = 0.50;
char ch;
double lb_artichokes = 0; double lb_beets = 0; double lb_carrots = 0; double lb_temp; double lb_total;
double cost_artichokes; double cost_beets; double cost_carrots; double cost_total; double final_total; double discount; double shipping;
pr
展开阅读全文