失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C Primer Plus 第六版 章节课后编程练习答案(下)(缘更)

C Primer Plus 第六版 章节课后编程练习答案(下)(缘更)

时间:2019-05-24 07:37:46

相关推荐

C Primer Plus 第六版 章节课后编程练习答案(下)(缘更)

接上次写的前五章的答案,这次更新后面章节的

PS:目录在左边袄┗|`O′|┛ ~~

第六章

6.1

#include <stdio.h>int main(void){char letters[26];int i;for(i=0;i<26;i++){letters[i]='a'+i;printf("%c ",letters[i]);}printf("\n");return 0;}

另一种(我觉得这种没有上面的代码好)

#include <stdio.h>int main(void){char letters[26];char num_letters;int i;num_letters='a';for(i=0;i<26;i++){letters[i]=num_letters;num_letters=num_letters+1;printf("%c ",letters[i]);} return 0;}

6.2

#include <stdio.h>int main(void){int i,j;for(i=1;i<6;i++){for(j=1;j<i+1;j++)printf("$");printf("\n");}}

6.3

#include <stdio.h>int main(void){int i,j;char c;for(i=1;i<7;i++){c='F';for(j=0;j<i;j++)printf("%c",c--);printf("\n");}return 0;}

6.4

#include <stdio.h>int main(void){int i,j;char c;c='A' ;for(i=0;i<6;i++){for(j=0;j<i+1;j++){printf("%c",c);c=c+1;} printf("\n");}return 0; }

6.5

#include <stdio.h>int main(void){int i,j,num;char c;printf("Please enter a letter:\n");scanf("%c",&c);num=c-65;for(i=0;i<num+1;i++){for(j=0;j<num-i;j++){printf(" ");} c='A'; for(j=0;j<i+1;j++){printf("%c",c++);} c=c-1;for(j=0;j<i;j++){printf("%c",--c);} printf("\n");}return 0; }

6.6

#include <stdio.h>int main(void){int num,low,hig;long square,cube;printf("Please enter the low number\n");scanf("%d",&low);printf("Now,please enter the higher number:\n");scanf("%d",&hig);if(low>hig)printf("Oh!Shit,mather f**k,you can't enter those number!");else{printf(" integer squarecube\n");for(;low<=hig;low++)printf("%9d%9d%9d\n",low,low*low,low*low*low);}return 0;}

6.7

#include <stdio.h>#include <string.h>int main(void){char word[20];int num;printf("Please enter a word:\n");scanf("%s",word);for(num=strlen(word)-1;num>=0;num--) printf("%c",word[num]);return 0;}

6.8

#include <stdio.h>int main(void){int jud;float num1,num2,ans;printf("please enter two numbers:\n");jud=scanf("%f %f",&num1,&num2);while(jud){printf("(%f-%f)/(%f*%f)=%f\n",num1,num2,num1,num2,(num1-num2)/(num1*num2));printf("please enter two numbers:(q to quit)\n");jud=scanf("%f %f",&num1,&num2);}return 0;}

6.9

#include <stdio.h>float fun(float a,float b);int main(void){float num1,num2;printf("Please enter two numbers:\n");while(scanf("%f %f",&num1,&num2)){printf("%f\n",fun(num1,num2));printf("Please enter two numbers:(q to quit)\n");}return 0;}float fun(float a,float b){float ans;ans=(a-b)/(a*b);return ans;}

6.10

#include <stdio.h>int main(void){int low,upp;int low1;unsigned long s_sum=0;printf("Enter lower and upper integer limits:");scanf("%d %d",&low,&upp);if(low>=upp);else{low1=low;for(;low<=upp;low++)s_sum+=(low*low);printf("The sums of the squares from %d to %d is %ld\n",low1*low1,upp*upp,s_sum);printf("Enter next set of limits:");scanf("%d %d",&low,&upp);while(low<upp){s_sum=0;low1=low;for(;low<=upp;low++)s_sum+=(low*low);printf("The sums of the squares from %d to %d is %ld\n",low1*low1,upp*upp,s_sum);printf("Enter next set of limits:");scanf("%d %d",&low,&upp);}}return 0;}

6.11

#include <stdio.h>int main(void){int i,num[8];for(i=0;i<8;i++){printf("please enter a num:");scanf("%d",&num[i]);}for(;i>0;i--)printf("%d ",num[i-1]);return 0;}

6.12.1

#include <stdio.h>int main(void){int num,i;float sum=0;printf("please enter a num:");scanf("%d",&num);for(i=1;i<=num;i++){sum+=(float)1/i;}printf("ans=%f",sum);return 0;}

6.12.2

#include <stdio.h>int main(void){int num,i,j;float sum=0;printf("please enter a num:");scanf("%d",&num);for(i=1,j=-1;i<=num;i++){j=-j;sum+=(float)j/i;}printf("ans=%f",sum);return 0;}

6.13

#include <stdio.h>int fun(int a);int main(void){int i,num[8];for (i=0;i<8;i++){printf("Please enter a num:");scanf("%d",&num[i]);}i=0;do {printf("%ld ",fun(num[i++]));}while(i<8)return 0;}int fun(int a){unsigned mult=2;for(;a>1;a--)mult*=2;return mult;}

6.14

#include <stdio.h>int main(void){double num1[8],num2[8];int i;for(i=0;i<8;i++){printf("Please enter a num:");scanf("%lf",&num1[i]);}for(i=0;i<8;i++){printf("%f ",num1[i]);}num2[0]=num1[0];printf("\n%f\n",num2[0]);for(i=1;i<8;i++){num2[i]=num2[i-1]+num1[i];printf("%f\n",num2[i]);}return 0;}

6.15

#include <stdio.h>int main(void){char ch,c[255];int i=0;printf("please enter something:\n");ch=getchar();while(ch!='\n'){c[i]=ch;ch=getchar();i++;}while(i-->=1){printf("%c",c[i]);}return 0;}

6.16

#include <stdio.h>#define fuli 1.05int main(void){float fina1=100.0,fina2=100.0;int i=0;do {fina1+=10;fina2*=fuli;i++;}while(fina2<fina1);printf("%d",i);return 0;}

6.17

#include <stdio.h>#define rate 1.08int main(void){int i=0;float fina=100.0;do {fina=fina*rate-10;i++;}while(fina>=0);printf("%d",i);}

6.18

#include <stdio.h>int main(void){int fnum=5,i=1;while(fnum<=150){fnum=2*(fnum-(i++));}printf("%d",i);}

第七章

7.1

#include <stdio.h>#include <ctype.h>int main(void){char ch;int num1,num2,num3;num1=num2=num3=0;printf("please enter something:\n");while((ch=getchar())!='#'){if(ch==' '){num1++;}else{if(ch=='\n')num2++;elsenum3++;}}printf("space:%d\n",num1);printf("return:%d\n",num2);printf("others:%d\n",num3);return 0;}

7.2

#include <stdio.h>int main(void){const int n=8;int ch=0,i=0;while((ch=getchar())!='#'){printf("%c-%d ",ch,ch);i++;if((i%n)==0)printf("\n");}return 0;}

7.3

#include <stdio.h>int main(void){int i=0,j=0,num;float sum1,sum2;sum1=sum2=0;printf("Please enter some number,0 to quit\n");while(scanf("%d",&num)==1&&num!=0){if(num%2==0){i++;sum1+=num;}else{j++;sum2+=num;}}printf("奇数的个数:%d\n",j);printf("奇数的平均值:%.2f\n",sum2);printf("偶数的个数:%d\n",i);printf("偶数的平均值:%.2f\n",sum1);}

7.4

#include <stdio.h>int main(void){char ch;int i;while((ch=getchar())!='#'){if(ch=='.'){printf("!");}else{if(ch=='!'){printf("!!");}else{putchar(ch);}}}return 0;}

7.5

#include <stdio.h>int main(void){char ch;while((ch=getchar())!='#'){switch(ch){case '.':printf("!");break;case '!':printf("!!");break;default:putchar(ch);}}return 0;}

7.6

#include <stdio.h>int main(void){char ch;int i=0;printf("please enter something(# to quit):\n");while((ch=getchar())!='#'){if(ch='e'){ch=getchar();if(ch='i'){i++;}}}printf("%d",i);return 0;}

7.7

#include <stdio.h>#define LIM1 300#define LIM2 150#define SALA 10.0int main(void){float hours,salary,tax;printf("Please enter you work hours per week:\n");scanf("%f",&hours);if(hours>40){hours=(hours-40)*1.5+40;}salary=hours*SALA;if(salary>LIM1){if(salary>LIM1+LIM2){tax=(salary-LIM1-LIM2)*0.25+75;}else{tax=(salary-LIM1)*0.2+45;}}else{tax=salary*0.15;}printf("The sum of salary is %.1f,tax is %.1f,available is %.1f",salary,tax,salary-tax);}

7.8

#include <stdio.h>#define ONE 8.75#define TWO 9.33#define THREE 10.00#define FOUR 11.20#define LIM1 300#define LIM2 150int main(void){int i,num,jud;float SALA,salary,tax,hours; for(i=0;i<61;i++)printf("*");printf("\n\nEnter the number corresponding to desired pay rate or action:\n");printf("1) $%.2f/hr 2) $%.2f/hr\n",ONE,TWO); printf("3) $%.2f/hr 4) $%.2f/hr\n",THREE,FOUR); printf("5) quit\n");for(i=0;i<61;i++)printf("*");printf("\n");scanf("%d",&num);while(num!=5){switch(num){case 1:SALA=ONE;break;case 2:SALA=TWO;break;case 3:SALA=THREE;break;case 4:SALA=FOUR;break;default :printf("Please enter 1-5 numbers thank u!!!\n");}if(num==1||num==2||num==3||num==4){printf("Please enter you work hours per week:\n");scanf("%f",&hours);if(hours>40){hours=(hours-40)*1.5+40;}salary=hours*SALA;if(salary>LIM1){if(salary>LIM1+LIM2){tax=(salary-LIM1-LIM2)*0.25+75;}else{tax=(salary-LIM1)*0.2+45;}}else{tax=salary*0.15;}printf("The sum of salary is %.1f,tax is %.1f,available is %.1f",salary,tax,salary-tax);}printf("\nplease enter the number corresponding to desired pay rate or action:\n");scanf("%d",&num);}return 0;}

7.9

#include <stdio.h>#include <math.h>int sushu(int x);int main(void){int x,y,i;printf("Please enter a number you want(positive number):");scanf("%d",&x);for(i=2;i<=x;i++){if(sushu(i)){printf("%d ",i);}}return 0; } int sushu(int x){int i,n=1;double half;half=sqrt(x);for(i=2;i<=half;i++){if(x%i!=0){continue;}else{n=0;break;}}return n;}

7.10

#include <stdio.h>#define ONE 17850#define TWO 23900#define THREE 29750#define FOUR 14875#define RATE1 0.15#define RATE2 0.28 float fun(float a);int main(void){float salary,level=0,r_salary;int i,num; for(i=0;i<50;i++)printf("*");printf("\n\n");printf("1) 单身 2) 户主\n",ONE,TWO); printf("3) 已婚,共有 4) 已婚,离异\n",THREE,FOUR); printf("5) 退出\n");for(i=0;i<50;i++)printf("*");printf("\n\n");printf("请选择您的类别:");scanf("%d",&num);while(num!=5){switch(num){case 1:level=ONE;break;case 2:level=TWO;break;case 3:level=THREE;break;case 4:level=FOUR;break;default:printf("请输入1~5的数字,靴靴\n");break; }fun(level);printf("请选择您的类别:");scanf("%d",&num);level=0;} printf("Bye哟\n"); return 0;}float fun(float level){float salary,tax;if(level){printf("请把你的收入输入一下靴靴:");scanf("%f",&salary);if(salary>level){tax=level*RATE1;tax=(salary-level)*RATE2+tax;}else{tax=salary*RATE1;}printf("所以你需要缴纳的税金是:%.1f$\n",tax);}}

7.11

#include <stdio.h>#define A 2.05#define B 1.15#define C 1.09 #define LIM1 5#define LIM2 20#define FEE1 6.5#define FEE2 14#define DISCOUNT 0.95 void fun(int a,int b,int c);int main(void){int i,weight,a,b,c,d,e,f; char ch;a=b=c=d=e=f=0;for(i=0;i<70;i++)printf("*");printf("\n"); printf("ABC邮购杂货店\n");printf("a) 洋蓟 $%.2f每磅 b) 甜菜 $%.2f每磅\n",A,B); printf("c) 胡萝卜 $%.2f每磅 d) 邮费、包装费及折扣详情\n",C); printf("e) 结账付款f) 溜了溜了,买不起买不起\n"); for(i=0;i<70;i++)printf("*");printf("\na、b、c可以反复添加\n请输入相关选项:");while((ch=getchar())!='e'){switch(ch){case 'a':if(d==0){printf("请问您想要购买多少磅的洋蓟呢?");scanf("%d",&weight);a=weight;d++;}else{printf("请问您还想要再添加多少磅洋蓟呢?");scanf("%d",&weight);a+=weight;}printf("请继续输入:") ;break; case 'b':if(e==0){printf("请问您想要购买多少磅甜菜呢?");scanf("%d",&weight);b=weight;e++;}else{printf("请问您还想要再添加多少磅甜菜呢?");scanf("%d",&weight);b+=weight;}printf("请继续输入:") ;break; case 'c':if(f==0){printf("请问您想要购买多少磅胡萝卜呢?");scanf("%d",&weight);c=weight;f++;}else{printf("请问您还想要再添加多少磅胡萝卜呢?");scanf("%d",&weight);c+=weight;}printf("请继续输入:") ;break;case 'd':printf("总订单少于或等于5磅收取6.5美元的运费和包装费。\n");printf("总订单在5-20磅收取14美元的运费和包装费。\n");printf("总订单超过20磅在14美元的基础上运费和包装费续重0.5美元每磅。\n");printf("当订单超过100美元将享受95%的折扣\n") ; printf("您还可以继续输入:") ;break;case 'f':printf("逗你玩呢,本店强制购买谢谢合作。请继续输入:") ;break;default:printf("输入错误,请重新输入:");break; }getchar();} printf("您现在的购物车里一共有%d磅的洋蓟,%d磅甜菜,%d磅胡萝卜\n\n\n",a,b,c);fun(a,b,c);return 0; } void fun(int a,int b,int c){float price,delivery;price=a*A+b*B+c*C;printf("商品的总价是%.1f\n",price);if(price>=100){price*=DISCOUNT;printf(" 您的订单超过了100美元,您折后的总价是%.1f",price);} if(a+b+c>=LIM1){if(a+b+c>=LIM2){delivery=FEE2+(a+b+c-LIM2);}else{delivery=FEE2;}}else{delivery=FEE1;}printf("您需要支付的运费和包装费为:%.1f\n",delivery);}

第十章

10.1

#include <stdio.h>#define MONTHS 12 //一年的月份数#define YEARS 5//年数int main(void){//用-的降水量数据初始化数组const float rain[YEARS][MONTHS] ={{ 4.3f, 4.3f, 4.3f, 3.0f, 2.0f, 1.2f, 0.2f, 0.2f, 0.4f, 2.4f, 3.5f, 6.6f },{ 8.5f, 8.2f, 1.2f, 1.6f, 2.4f, 0.0f, 5.2f, 0.9f, 0.3f, 0.9f, 1.4f, 7.3f },{ 9.1f, 8.5f, 6.7f, 4.3f, 2.1f, 0.8f, 0.2f, 0.2f, 1.1f, 2.3f, 6.1f, 8.4f },{ 7.2f, 9.9f, 8.4f, 3.3f, 1.2f, 0.8f, 0.4f, 0.0f, 0.6f, 1.7f, 4.3f, 6.2f },{ 7.6f, 5.6f, 3.8f, 2.8f, 3.8f, 0.2f, 0.0f, 0.0f, 0.0f, 1.3f, 2.6f, 5.2f }};int year, month;float subtot, total;const float (*pt)[12];pt = rain;printf(" YEARRAINFALL (inches)\n");for (year = 0, total = 0; year < YEARS; year++){for (month = 0, subtot = 0; month < MONTHS; month++)subtot += *(*(pt + year) + month);printf("%5d %15.1f\n", + year, subtot);total += subtot;}printf("\nThe yearly average is %.1f inches.\n\n", total / YEARS);printf("MONTHLY AVERAGES:\n\n");printf(" Jan Feb Mar Apr May Jun Jui Aug Swp Oct ");printf(" Nov Dec\n");for (month = 0; month < MONTHS; month++){for (year = 0, subtot = 0; year < YEARS; year++)subtot += *(*(pt + year) + month);printf("%4.1f ", subtot / YEARS);}printf("\n\n");return 0;}

10.2

#include <stdio.h>#define SIZE 5void copy_arr(double target[], double source[], int num);void copy_ptr(double * target, double * source, int num);void copy_ptrs(double * target, double * source0, double * source1);void print_array(double arr[], int num);int main(void){double source[SIZE] = { 1.1, 2.2, 3.3, 4.4, 5.5 };double target1[SIZE];double target2[SIZE];double target3[SIZE];copy_arr(target1, source, SIZE);copy_ptr(target2, source, SIZE);copy_ptrs(target3, source, source + SIZE);print_array(target1,SIZE);print_array(target2,SIZE);print_array(target3,SIZE);return 0;}void copy_arr(double target[], double source[], int num){int i;for (i = 0; i < num; i++){target[i] = source[i];}}void copy_ptr(double * target, double * source, int num){int i;for (i = 0; i < num; i++){*(target++) = *(source++);}}void copy_ptrs(double * target, double * source0, double * source1){int i;for (i=0;source0<source1;i++){*(target++) = *(source0++);}}void print_array(double arr[], int num){int i;for (i = 0; i < num; i ++ ){printf(" %1.1f", arr[i]);}printf("\n");}

如果觉得《C Primer Plus 第六版 章节课后编程练习答案(下)(缘更)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。