CPrimerPlus第六版中文版习题答案_第1页
CPrimerPlus第六版中文版习题答案_第2页
CPrimerPlus第六版中文版习题答案_第3页
CPrimerPlus第六版中文版习题答案_第4页
CPrimerPlus第六版中文版习题答案_第5页
已阅读5页,还剩198页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C Primer Plus第六版中文版习题答案Github: HYPERLINK /zhayujie/C-Primer-Plus /zhayujie/C-Primer-PlusEmail: 第一章1.#include int main(void) double inch, cm; printf(Please input the inches: ); scanf(%lf, &inch); cm = inch * 2.54; printf(%g cmn, cm); return 0;第二章3.#includeint main(void) int days,years=21; days=years*

2、365; printf(我的年龄是%d岁,%d天n,years,days); return 0;4.#includevoid jolly(void);void deny(void);int main(void) jolly(); jolly(); deny(); return 0;void jolly(void) printf(For hes a jolly good fellow!n);void deny(void) printf(Which nobody can deny!n);5.#includevoid br(void);void ic(void);int main(void) br(

3、); printf(,); ic(); printf(n); ic(); printf(n); br(); printf(n); return 0;void br(void) printf(Brazil,Russia);void ic(void) printf(India,China);6.#includeint main(void) int toes=10; int toes_2,toes2; toes_2=2*toes; toes2=toes*toes; printf(toes是%d,toes的两倍是%d,toes的平方是%dn,toes,toes_2,toes2); return 0;8

4、.#includevoid one_three(void);void two(void);int main(void) printf(starting nown); one_three();void one_three(void) printf(onen); two(); printf(threen); printf(done!n);void two(void) printf(twon);第三章2.#includeint main(void) char ch; printf(please input a number:); scanf(%d,&ch); printf(%cn,ch); retu

5、rn 0;4.#includeint main(void) float a; printf(Enter a floating-point value: ); scanf(%f,&a); printf(fixed-point notation: %fn,a); printf(exponential notation: %en,a); return 0;5.#includeint main(void) int age; double seconds; printf(please input your age: ); scanf(%d,&age); seconds=age*3.156e7; prin

6、tf(the corresponding seconds are: %en,seconds); return 0;7.#includeint main(void) float inches,cms; printf(input your height(inch): ); scanf(%f,&inches); cms=inches*2.54; printf(your height(cm): %fn,cms); return 0;8.#includeint main(void) float pint,ounce,soupspoon,teaspoon,cup; printf(input the num

7、ber of cups: ); scanf(%f,&cup); pint=cup/2; ounce=cup*8; soupspoon=ounce*2; teaspoon=soupspoon*3; printf(they are equivalent of:n%f pintn%f ouncen%f soupspoonsn%f teaspoonsn,pint,ounce,soupspoon,teaspoon); return 0;第四章1.#includeint main(void) char firstname40,lastname40; printf(Input your firstname:

8、 ); scanf(%s,firstname); printf(Input your lastname: ); scanf(%s,lastname); printf(Your name is %s,%sn,firstname,lastname); return 0;2.#include#includeint main(void) char name40; int width; printf(Input your name: ); scanf(%s,name); width=strlen(name)+3; printf(%*sn,width,name); /输入的名和姓中间不能分隔 return

9、 0;4.#includeint main(void) float height; char name40; printf(Input your height(cm) and name: ); scanf(%f%s,&height,name); height=height/100; printf(%s, you are %.3fm talln,name,height); return 0;5.#includeint main(void) float speed,size,time; printf(Input the download speed(Mb/s) and the file size(

10、MB):n); scanf(%f%f,&speed,&size); time=size/speed*8.0; printf(At %.2f megabits per second, a file of %.2f megabytesn,speed,size); printf(downloads in %.2f seconds.n,time); return 0;6.#include#includeint main(void) char firstname40,lastname40; printf(Input your firstname: ); scanf(%s,firstname); prin

11、tf(Input your lastname: ); scanf(%s,lastname); printf(%s %sn,firstname,lastname); printf(%*d %*dn, strlen(firstname),strlen(firstname),strlen(lastname),strlen(lastname); printf(%s %sn,firstname,lastname); printf(%*d %*dn, -strlen(firstname),strlen(firstname),-strlen(lastname),strlen(lastname); retur

12、n 0;7.#include#includeint main(void) double a=1.0/3.0; float b=1.0/3.0; printf(%.6f %.6fn,a,b); /左侧double型 右侧float型 printf(%.12f, %.12fn,a,b); printf(%.16f, %.16fn,a,b); printf(DBL_DIG: %dn,DBL_DIG); printf(FLT_DIG: %dn,FLT_DIG); return 0;8.#include#define GALLON 3.758 /1 gallon=3.785 liters#define

13、MILE 1.609 /1 mile=1.609 kilometersint main(void) float gallon,mile; printf(Input miles and gallons: ); scanf(%f%f,&mile,&gallon); printf(Miles per gallon: %.1fn,mile/gallon); printf(Litre per 100 kilometers: %.1fn, gallon*GALLON/(mile*MILE)*100); return 0;第五章1.#include#define H_P_M 60 /1h=60minint

14、main(void) int hour,min,left; printf(Enter the number of minutes: ); scanf(%d,&min); while(min0) hour=min/H_P_M; left=min%H_P_M; printf(%d minutes is %d hours and %d minutes.n,min,hour,left); printf(Enter your next value: ); scanf(%d,&min); printf(Good bye!n); return 0;2.#includeint main(void) int n

15、um,count; printf(Input a integer: ); scanf(%d,&num); count=0; while(count+11) printf(%d ,num); num+; printf(n); return 0;3.#include#define DAYS_PER_WEEK 7 /一周7天int main(void) int day,week,left; printf(Input the number of days: ); scanf(%d,&day); while(day0) week=day/DAYS_PER_WEEK; left=day%DAYS_PER_

16、WEEK; printf(%d days are %d weeks, %d days.n,day,week,left); printf(Next input: ); scanf(%d,&day); return 0;4.#include#define CM_PER_FEET 30.48 /1feet=30.48cm#define CM_PER_INCH 2.54 /1inch=2.54cmint main(void) int feet; float cm,inch; printf(Enter a height in centimeters: ); scanf(%f,&cm); while(cm

17、0) feet=(int)(cm/CM_PER_FEET); inch=(cm-feet*CM_PER_FEET)/CM_PER_INCH; printf(%.1f cm = %d feet, %.1f inchesn,cm,feet,inch); printf(Enter a height in centimeters (=0 to quit): ); scanf(%f,&cm); printf(byen); return 0; 5.#includeint main(void) int count,sum,days; printf(Input the number of days: ); s

18、canf(%d,&days); count=sum=0; while(count+days) sum=sum+count; printf(The money you earned: %dn,sum); return 0;6.#includeint main(void) int count,sum,days; printf(Input the number of days: ); scanf(%d,&days); count=sum=0; while(count+days) sum=sum+count*count; printf(The money you earned: %dn,sum); r

19、eturn 0;7.#includevoid cube(double n);int main(void) double num; printf(Input a number: ); scanf(%lf,&num); cube(num);void cube(double n) printf(The cube of %f is %fn,n,n*n*n);8.#includeint main(void) int num1,num2; printf(This program computes moduli.n); printf(Enter an integer to serve as the seco

20、nd operand: ); scanf(%d,&num1); printf(Now enter the first operand: ); scanf(%d,&num2); while(num20) printf(%d % %d is %dn,num2,num1,num2%num1); printf(Enter next number for first operand (= 0 to quit): ); scanf(%d,&num2); printf(Donen);9.#includevoid Temperatures(double fah);int main(void) double f

21、ah,cel,kel;/华氏温度,摄氏温度,开氏温度 printf(Input the Fahrenheit temperature: ); while(scanf(%lf,&fah)=1) Temperatures(fah); printf(Next input: ); printf(Done.n);void Temperatures(double fah) const double a=5.0,b=9.0,c=32.0,d=276.13; printf(%.2f is %.2f , %.2f K.n, fah,a/b*(fah-c),a/b*(fah-c)+d);第六章1.#include

22、#define SIZE 26int main(void) char chSIZE; int index; for(index=0;indexSIZE;index+) chindex=a+index; printf(%c ,chindex); printf(n); return 0; 2.#includeint main(void) int i,j; for(i=1;i=5;i+) for(j=1;j=i;j+) printf($); printf(n); return 0;3.#includeint main(void) int i,j; for(i=1;i=6;i+) for(j=0;ji

23、;j+) printf(%c,F-j); printf(n); return 0;4.#include#define ROWS 6int main(void) char ch; int i,j; for(ch=A,i=0;iROWS;i+) for(j=0;j=i;j+) printf(%c,ch+); printf(n); return 0;5.#include#define ROWS 5int main(void) char ch=A; int i,j; for(i=1;i=ROWS;i+) for(j=1;j=ROWS-i;j+) printf( ); for(j=0;j=0;j-) p

24、rintf(%c,ch+j); printf(n); return 0;6.#includeint main(void) int max,min,num; printf(Input the min and max: ); scanf(%d%d,&min,&max); printf(%10s%10s%10sn,number,square,cube); for(num=min;num=max;num+) printf(%10d%10d%10dn,num,num*num,num*num*num); return 0;7./与题目不同 打印的是句子#include#include#define SIZ

25、E 40int main(void) int i,index=-1; char chSIZE; printf(Input a word: ); do index+; scanf(%c,&chindex); while(chindex!=n); for(i=index+1;i=0;index-) printf(%c,chindex); printf(n); return 0;8.#includeint main(void) double n1,n2; printf(Input two numbers: ); while(2=scanf(%lf%lf,&n1,&n2) printf(%fn,(n1

26、-n2)/n1*n2); printf(Input your next pair of numbers: ); printf(Bye!n); return 0;9.#includedouble calculate(double n1, double n2);int main(void) double num1, num2; printf(Input two numbers: ); while (2 = scanf(%lf%lf, &num1, &num2) /输入两个浮点数 printf(%fn, calculate(num1, num2); /函数调用 printf(Input your n

27、ext pair of numbers: ); printf(Bye!n); return 0;double calculate(double n1, double n2) return (n1 - n2) / (n1 * n2); /返回运算结果10.#include int main(void) int lower, upper; int num, sum; printf(Enter lower and upper integer limits: ); scanf(%d%d, &lower, &upper); while (lower upper) for (sum=0, num=lowe

28、r; num = upper; num+) sum = sum + num * num; /计算平方和 printf(The sums of the squares from %d to %d is %dn, lower * lower, upper * upper, sum); /输出结果 printf(Enter next set of limits: ); scanf(%d%d, &lower, &upper); /下一次输入 printf(Donen); return 0; 11.#include #define SIZE 8int main(void) int numSIZE; in

29、t index; printf(Enter 8 integers: ); for (index=0; index= 0; index-) /倒序输出 printf(%d , numindex); printf(n); return 0;12.#include int main(void) double sum1=0, sum2=0; int count, items, sign; printf(Enter the items: ); scanf(%d, &items); /输入序列的项数 for (count=1, sign=1; count = items; count+, sign *=

30、-1) sum1 += 1.0 / count; sum2 += 1.0 * sign / count; /分别计算两序列的和 printf(1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 + . = %fn, sum1); printf(1.0 - 1.0/2.0 + 1.0/3.0 - 1.0/4.0 + . = %fn, sum2); return 0;13.#include #define SIZE 8int main(void) int index, count, numSIZE; for (index = 0, count = 1; index SIZE; in

31、dex+) count *= 2; numindex = count; /for循环将数组元素设为2的前8次幂 index=0; /初始化index的值 do printf(%d , numindex+); while (index SIZE); /do while循环显示数组元素的值 printf(n); return 0;14.#include #define SIZE 8int main() double num1SIZE, num2SIZE; int index1, index2, index; printf(Enter 8 numbers to the first array:n);

32、 for (index1 = 0; index1 SIZE; index1+) scanf(%lf, &num1index1);/向第一个数组输入8个数 num20 = num10; for (index1 = 1, index2 = 1; index1 SIZE; index1+, index2+) num2index2 = num2index2-1 + num1index1; /为第二个数组赋值(是第一个数组对应的元素之和) printf(The first array: ); for (index=0; index SIZE; index+) printf(%6.2f, num1inde

33、x); /输出第一个数组的内容 printf(nThe second array: ); for (index=0; index SIZE; index+) printf(%6.2f, num2index);/输出第二个数组的内容 printf(n); return 0;15.#include #include #define SIZE 255int main(void) int index; char chSIZE; printf(Enter a line: ); for(index = 0, scanf(%c, &ch0); chindex != n;) index+; scanf(%c,

34、 &chindex); /输入内容到字符数组中,回车时结束 for(index += 1; index =0; index-) printf(%c, chindex);/倒序输出内容 printf(n); return 0;16.#include #define RATE_DAPHNE 0.1#define RATE_DEIRDRE 0.05/两人的利率#defineMONEY 100int main(void) int year; double daphne = MONEY, deirdre = MONEY;/两人的初始投资额相同 for (year = 1; daphne = deirdr

35、e; year+) daphne += MONEY * RATE_DAPHNE; deirdre += deirdre * RATE_DEIRDRE; /计算Deirdre投资额超过Daphne需要的年数和当时的金额 printf(After %d year, Deirdres investment will be more than Daphnes,n Daphnes investment will be $%lf,nand Deirdres investment will be $%lf.n, year, daphne, deirdre);/输出结果 return 0; 17.#inclu

36、de #define INITIAL_MONEY 100/账户初始金额为100万元#define ANNUAL_RATE 0.08/年利率为8%int main(void) int year; double money; for(year = 1, money=INITIAL_MONEY; money0; year+) money += money * ANNUAL_RATE - 10;/计算每年年终的账户余额 printf(After %d years, Chuckie will draw all money from his account.n, year); return 0;18.#i

37、nclude #defineINITIAL_NUMBER 5 /初始朋友数为5人#define DUNBAR_NUMBER 150 /邓巴数int main(void) int week; int number = INITIAL_NUMBER; for (week = 1; number = DUNBAR_NUMBER; week+) number = (number - week) * 2;/计算每周的朋友数量 printf(After %d week, the number of Rabnuds friends is %dn, week, number); return 0; 第七章1.

38、#include int main(void) char ch; int n_space = 0;/空格数 int n_newline = 0;/换行数 int n_others = 0;/其他字符数 printf(Enter some text; Enter # to quit.n); while (ch = getchar() != #) if (ch = ) n_space+; else if (ch = n) n_newline+; else n_others+; printf(Spaces: %d, newlines: %d, others: %dn, n_space, n_newl

39、ine, n_others); return 0;2.#include #define CHARS_PER_LINE 8/每行字符数int main(void) char ch; int n_chars = 1;/字符数 printf(Enter some characters(# to quit):n); while (ch = getchar() != #) printf(%3c(%3d) , ch, ch); if (n_chars+ % CHARS_PER_LINE = 0) printf(n); printf(n); return 0;3.#include int main(void

40、) int num; int n_even = 0, n_odd = 0;/偶数和奇数个数 int sum_even = 0, sum_odd = 0;/偶数和奇数和 printf(Enter some integers(0 to quit):n); scanf(%d, &num); while (num != 0) if (num % 2 = 0) n_even+; sum_even += num; /计算偶数个数和偶数和 else n_odd+; sum_odd +=num; /计算奇数个数和奇数和 scanf(%d,&num); printf(The number of even num

41、bers is %d, and the everage of even numbers is %.2fn, n_even, (n_even = 0) ? 0 : (float)sum_even / n_even); printf(The number of odd numbers is %d, and the everrage of odd numers is %.2fn, n_odd, (n_odd = 0) ? 0 : (float)sum_odd / n_odd); return 0;4.#include int main(void) char ch; int n_repl = 0; /

42、替换次数 printf(Enter some texts(# to quit):n); while (ch = getchar() != #) if (ch = .) ch = !; n_repl+; /替换句号 else if (ch = !) printf(!); n_repl+; /替换感叹号 printf(%c, ch); printf(n%d substitutions were made.n, n_repl); return 0;5.#include int main(void) char ch; int n_repl = 0;/替换次数 printf(Enter some tex

43、ts(# to quit):n); while (ch = getchar() != #) switch (ch) case .: ch = !; n_repl+; break; case !: printf(!); n_repl+; break; default: break; /利用switch语句进行替换 printf(%c,ch); printf(n%d substitutions were made.n, n_repl); return 0;6.#include int main(void) char ch; char last_ch = 0; /前一个字符 int count=0;

44、 printf(Enter some texts(# to quit):n); while (ch = getchar() != #) if (ch = i) & (last_ch = e) count+; last_ch = ch;/出现ei时,计数+1 printf(ei appeared %d times.n, count); return 0;7.#include #define BASE 1000/基本工资 100美元/h#define TIME 40/超过40h为加班#defineMUL1.5/加班时间算作平时的1.5倍#defineRATE1 0.15/前300美元的税率#def

45、ine RATE2 0.2/300-450美元的税率#define RATE3 0.25/大于450美元的税率#define BREAK1 300/税率的第一个分界点#define BREAK2 450/税率的第二个分界点int main(void) double hour, tax, gross; printf(Input your work hours in a week: ); scanf(%lf, &hour); if (hour = TIME) gross = hour * BASE; else gross = TIME * BASE + (hour - TIME) * MUL *

46、BASE; /计算总收入 if (gross = BREAK1) tax = gross * RATE1; else if (gross = BREAK2) tax = BREAK1 * RATE1 + (gross - BREAK1) * RATE2; else tax = BREAK1 * RATE1 + (BREAK2 - BREAK1) * RATE2 + (gross - BREAK2) * RATE3; /计算税金 printf(Your gross income is $%.2lfnYour tax is $%.2lfn Your net income is $%.2lfn, g

47、ross, tax, (gross - tax); return 0;8.#include #define BASE1 8.75#define BASE2 9.33#define BASE3 10.00#define BASE4 11.20/四种等级的基本工资#define TIME 40/超过40h为加班#defineMUL1.5/加班时间算作平时的1.5倍#defineRATE1 0.15/前300美元的税率#define RATE2 0.2/300-450美元的税率#define RATE3 0.25/大于450美元的税率#define BREAK1 300/税率的第一个分界点#defi

48、ne BREAK2 450/税率的第二个分界点int main(void) double base, hour, tax, gross; int count, num; const int LENGTH = 65;/*的长度 printpart: for (count = 0; count LENGTH; count+) printf(*); printf(nEnter the number corresponding to the desired pay rate or action:n); printf(%-36s%s,1) $8.75/hr, 2) $9.33/hrn); printf(

49、%-36s%s,3) $10.00/hr, 4) $11.20/hrn); printf(%sn, 5) quit); for (count = 0; count LENGTH; count+) printf(*); printf(n); /打印表格 while (scanf(%d, &num) = 1) switch (num) case 1:base = BASE1; break; case 2: base = BASE2; break; case 3: base = BASE3; break; case 4: base = BASE4; break; case 5: printf(qui

50、t.n); return 0; default: printf(Please input the right option.n); goto printpart; /选择基本工资等级 printf(Input your work hours in a week: ); scanf(%lf, &hour); if (hour = TIME) gross = hour * base; else gross = TIME * base + (hour - TIME) * MUL * base; /计算总收入 if (gross = BREAK1) tax = gross * RATE1; else

51、if (gross = BREAK2) tax = BREAK1 * RATE1 + (gross - BREAK1) * RATE2; else tax = BREAK1 * RATE1 + (BREAK2 - BREAK1) * RATE2 + (gross - BREAK2) * RATE3; /计算税金 printf(Your gross income is $%.2lfnYour tax is $%.2lfn Your net income is $%.2lfn, gross, tax, (gross - tax); printf(nYour next choice:n); retu

52、rn 0;9.#include int main(void) int div, prime; int num, count; int flag; printf(Input a positive integer: ); scanf(%d, &num); printf(The prime numbers in range:n); for (prime = 2; prime = num; prime+)/外层循环显示所有素数 flag = 1; for (div = 2; (div * div) = prime; div+) if (prime % div = 0) flag = 0; /内层循环检

53、验是否为素数 if (flag)/利用标记flag判断 printf(%d ,prime); printf(n); return 0;10.#include #define RATE1 0.15#define RATE2 0.28#define SINGLE 17850/单身人群的税率分界点#define HOST 23900/户主人群的税率分界点#define MAR_SHA29750/已婚共有人群的分界点#define MAR_DEV14875/已婚离异人群的分界点int main(void) int num; double income, tax_break, tax; printpar

54、t: printf(Please enter Corresponding figures to select the typen); printf(1 single, 2 host, 3 married and shared, 4 married but devoced and 5 to quit.n); scanf(%d, &num); switch (num) case 1: tax_break = SINGLE; break; case 2: tax_break = HOST; break; case 3: tax_break = MAR_SHA; break; case 4: tax_

55、break = MAR_DEV; break; case 5:printf(quit.n); return 0; default: printf(Please input right number.); goto printpart;/回到输入阶段 printf(Enter your income: );/指定种类和收入 while (scanf(%lf, &income) = 1) if (income = tax_break) tax = income * RATE1; else tax = tax_break * RATE1 + (income - tax_break) * RATE2;

56、 /计算税金 printf(The tax is $%.2lf.n, tax); printf(Your next input: n); goto printpart;/回到输入阶段 return 0; 11.#include #include #define ARTICHOKE 2.05/洋蓟2.05美元/磅#define BEET 1.15/甜菜1.15美元/磅#define CARROT 1.09/胡萝卜1.09美元/磅#defineDISCOUNT_LIMIT 100/包装费和运费打折要求订单100美元#define DISCOUNT_RATE 0.05/折扣为%5#define BR

57、EAK1 5#define BREAK2 20/装运费的分界点#defineFEE1 6.5#defineFEE2 14#define FEE3_RATE 0.5/不同重量区间的装运费,其中超过20磅的每续重一磅/增加0.5元int main(void) double weight; double weight_artichoke = 0; double weight_beet = 0; double weight_carrot = 0;/购买三种蔬菜的重量 double total_weight;/总重量 double veg_cost;/三种蔬菜总共花费 double order_cost

58、;/订单总额 double total_cost;/费用总额 double pack_tran_fee;/装运费 double discount; int count = 0; char ch; printf(Please select the vegetables you want to buy:n); printf(a: artichoke $%.2f/lbn, ARTICHOKE); printf(b: beet $%.2f/lbn, BEET); printf(c: carrot $%.2f/lbn, CARROT); printf(q: quit.n); /打印选择信息 while

59、(ch = tolower(getchar() != q) /if (ch = n) /continue;/滤掉回车 switch (ch) case a: printf(Input the weight of artichoke in pound: ); scanf(%lf, &weight); weight_artichoke += weight; count+; printf(Continue entering a, b, c or q: ); break; case b: printf(Input the weight of beet in pound: ); scanf(%lf, &

60、weight); weight_beet += weight; count+; printf(Continue entering a, b, c or q: ); break; case c: printf(Input the weight of carrot in pound: ); scanf(%lf, &weight); weight_carrot += weight; count+; printf(Continue entering a, b, c or q: ); break; default: printf(Please enter the right character.); w

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论