收藏 分享(赏)

C-primer-plus(第五版)(完整).doc

上传人:weiwoduzun 文档编号:5739184 上传时间:2019-03-15 格式:DOC 页数:195 大小:466.05KB
下载 相关 举报
C-primer-plus(第五版)(完整).doc_第1页
第1页 / 共195页
C-primer-plus(第五版)(完整).doc_第2页
第2页 / 共195页
C-primer-plus(第五版)(完整).doc_第3页
第3页 / 共195页
C-primer-plus(第五版)(完整).doc_第4页
第4页 / 共195页
C-primer-plus(第五版)(完整).doc_第5页
第5页 / 共195页
点击查看更多>>
资源描述

1、C_primer_plus(第五版)(完整)第一章 概览编程练习1您刚刚被 MacroMuscle 有限公司(Software for Hard Bodies)聘用。该公司要进入欧洲市场,需要一个将英寸转换为厘米(1 英寸=2.54 cm)的程序。他们希望建立的该程序可提示用户输入英寸值。您的工作是定义程序目标并设计该程序(编程过程的第 1 步和第 2 步) 。1.将英寸值转化为厘米值2.显示“输入英寸值”-得到该值-转换为厘米值-存储-告知用户已结束第二章 C 语言概述编程练习1编写一个程序,调用 printf()函数在一行上输出您的名和姓,再调用一次 printf()函数在两个单独的行上输

2、出您的名和姓,然后调用一对 printf()函数在一行上输出您的名和姓。输出应如下所示(当然里面要换成您的姓名):Anton BrucknerAntonBrucknerAnton Bruckner第一个输出语句第二个输出语句仍然是第二个输出语句第三个和第四个输出语句#includeint main(void)printf(“He Jinn“);printf(“Hen“);printf(“Jinn“);printf(“He Jinn“);return(0);2编写一个程序输出您的姓名及地址。#includeint main(void) /此处不可加;printf(“Name:He Jinn“);

3、printf(“Address:CAUCn“);return(0);3编写一个程序,把您的年龄转换成天数并显示二者的值。不用考虑平年( fractional year)和闰年(leapyear)的问题。#includeint main(void)int age=22;printf(“Age:%dn“,age);printf(“Day:%dn“,age*356);return(0);4编写一个能够产生下面输出的程序:For hes a jolly good fellow!For hes a jolly good fellow!For hes a jolly good fellow!Which n

4、obody can deny!程序中除了 main()函数之外,要使用两个用户定义的函数:一个用于把上面的夸奖消息输出一次:另一个用于把最后一行输出一次。#includevoid printf1(void);void printf2(void);int main(void)printf1();printf1();printf1();printf2();return(0);void printf1(void)printf(“For hes a jolly good fellow!n“);void printf2(void)printf(“Which nobody can deny!n“);5编写

5、一个程序,创建一个名为 toes 的整数变量。让程序把 toes 设置为 10。再让程序计算两个toes 的和以及 toes 的平方。程序应该输出所有的 3 个值,并分别标识它们。#includeint main(void)int toes=10;int toes_add;int toes_square;toes_add=toes+toes;toes_square=toes*toes;printf(“toes=%dntoes_add=%dntoes_square=%dn“,toes,toes_add,toes_square);return(0);6编写一个能够产生下列输出的程序:Smile !

6、 Smile ! SmileSmile ! Smile !Smile !在程序中定义一个能显示字符串 smile 卜一次的函数,并在需要时使用该函数。#includevoid 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()的函数。该函数要在一行中显示单

7、词“one“,再调用 two()函数,然后再在另一行中显示单词“three“。函数 two()应该能在一行中显示单词“two“。main()函数应该在调用 one_three()函数之前显示短语“starting now:“,函数调用之后要显示“done!“o 这样,最后的输出结果应如下所示:starting nowonetwothreedone !#includevoid one_three(void);void two(void);int main(void)printf(“starting now:n“);one_three();printf(“done!n“);return(0);vo

8、id one_three(void)printf(“Onen“);two();printf(“Threen“);void two(void)printf(“Twon“);第三章 数据和 C编程练习1通过试验的方法(即编写带有此类问题的程序)观察系统如何处理整数上溢、浮点数上溢和浮点数下溢的情况。#includeint main(void)unsigned int a=4294967295;float b=3.4E38;float c=b*10;float d=0.1234E-2;printf(“%u+1=%un“,a,a+1);printf(“%e*10=%en“,b,c);printf(“%

9、f/10=%fn“,d,d/10);return(0);2编写一个程序,要求输入一个 ASCII 码值(如 66),然后输出相应的字符。#includeint main(void)char a;scanf(“%d“,printf(“%cn“,a);return(0);3编写一个程序,发出警报声,并打印下列文字:Startled by the sudden sound, Sally shouted, “By the Great Pumpkin, what was that!“#includeint main(void)printf(“aStartled by the sudden sound,S

10、ally shouted,“By the Great pumpkin,what was that!“n“);return(0);4编写一个程序,读入一个浮点数,并分别以小数形式和指数形式打印。输出应如同下面格式(实际显示的指数位数也许因系统而不同):The input is 21.290000 or 2.129000e+001.#includeint main(void)float a;scanf(“%f“,printf(“The input is %f or %en“,a,a);return(0);5一年约有 3.156l07S。编写一个程序,要求输入您的年龄,然后显示该年龄合多少秒。#in

11、cludeint main(void)float a;printf(“Please input your age:“);scanf(“%f“,printf(“Your age is %e secondsn“,a*3.156E7);return(0);6.1 个水分子的质量约为 3.010-23g,l 夸脱水大约有 950g。编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少个水分子。#includeint main(void)float a;printf(“Please input how much quarts the water is:“);scanf(“%f“,printf(“

12、%f quarts water has %e molecules.n“,a,a*950/3E-23);return(0);7. 1 英寸等于 2.54cm。编写一个程序,要求输入您的身高(以英寸为单位) ,然后显示该身高值等于多少厘米。如果您愿意,也可以要求以厘米为单位输入身高,然后以英寸为单位进行显示。#includeint main(void)float a;printf(“Please input your height by inches:“);scanf(“%f“,printf(“Your height is %fcm.n“,a*2.54);return(0);第 4 章 字符串和格

13、式化输入/输出编程练习1编写一个程序,要求输入名字和姓氏,然后以“名字,姓氏”的格式打印。#includeint main(void)char surname20,firstname20;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把名字引在双引号中打印出来。b在宽度为 20 个字符的字段内打印名字,

14、并且整个字段引在引号内。c. 在宽度为 20 个字符的字段的左端打印名字,并且整个字段引在引号内。d在比名字宽 3 个字符的字段内打印它。#include#includeint main(void)char name20;int width;printf(“Please input your name:“);scanf(“%s“,name);printf(“A:“%s“n“,name);printf(“B:“%20s“n“,name);printf(“C:“%-20s“n“,name);width=strlen(name)+3;printf(“D:“%*s“n“,width,name);/*对

15、应 widthreturn(0);3编写一个程序,读取一个浮点数,并且首先以小数点记数法,然后以指数记数法打印之。输出使用下列形式(在指数位置显示的数字的位数可能会随系统而不同):a. The input is 21.3 or 2.1e+001.b. The input is +21.290 or 2.129E+001.#includeint main(void)float a;printf(“Please input a float:“);scanf(“%f“,printf(“a.The input is %.1f or %.1en“,a,a);printf(“b.The input is

16、%+.3f or %.3En“,a,a);return(0);4编写个程序,要求输入身高(以英寸为单位)和名字,然后以如下形式显示:Dabney, you are 6.208 feet tall使用 float 类型,使用/作为除号。如果您愿意,可以要求以厘米为单位输入身高,并以米为单位进行显示。#includeint main(void)float height;char name20;printf(“Please input your height by inches:“);scanf(“%f“,printf(“Please input your name:“);scanf(“%s“,na

17、me);printf(“%s,you are %f feet talln“,name,height/12);return(0);5.编写一个程序,首先要求用户输入名字,然后要求用户输入姓氏。在一行打印输入的姓名,在下行打印每个名字中字母的个数。把字母个数与相应名字的结尾对齐,如下所示:Melissa Honeybee7 8然后打印相同的信息,但是字母个数与相应单词的开始对齐。#include#includeint main(void)char surname20,firstname20;printf(“Please input your firstname and surname:“);sca

18、nf(“%s“,firstname);scanf(“%s“,surname);printf(“%s %s.n“,firstname,surname);printf(“%*d %*dn“,strlen(firstname),strlen(firstname),strlen(surname),strlen(surname);/*对应宽度变量printf(“%s %s.n“,firstname,surname);printf(“%-*d %-*dn“,strlen(firstname),strlen(firstname),strlen(surname),strlen(surname);/*对应宽度变

19、量return(0);6编写一个程序,设置一个值为 1.0/3.0 的 double 类型变量和一个值为 1.0/3.0 的 float 类型变量。每个变量的值显示三次:一次在小数点右侧显示 4 个数字,一次在小数点右侧显示 12 个数字,另一次在小数点右侧显示 16 个数字。同时要让程序包括 float.h 文件,并显示 FLTDIG 和 DBL_DIG 的值。1.0/3.0 的显示值与这些值一致吗?#include#includeint main(void)double a=1.0/3.0;float b=1.0/3.0;printf(“double a=1.0/3.0:n“);print

20、f(“%.4en“,a);printf(“%.12en“,a);printf(“%.16enn“,a);printf(“float b=1.0/3.0:n“);printf(“%.4fn“,b);printf(“%.12fn“,b);printf(“%.16fnn“,b);printf(“FLT_DIG:%dn“,FLT_DIG);printf(“DBL_DIG:%dn“,DBL_DIG);return(0);7编写一个程序,要求用户输入行驶的英里数和消耗汽油的加仑数。接着应该计算和显示消耗每加仑汽油行驶的英里数,显示方式是在小数点右侧显示一个数字。然后,根据 l 加仑约等于 3.785 升,

21、l英里约等于 1.609 公里的规则,它应该把每加仑英里数转换成每 100 公里的升数(欧洲通用的燃料消耗表示法) ,并显示结果,显示方式是在小数点右侧显示一个数字(请注意,美国方案测量每单位距离消耗的燃料数,而欧洲方案测量每单位燃料的行驶距离) 。用符号常量表示两个转换系数(使用 const 或#define) 。#include#define GALLON 3.785 /1 gallon = 2.785 litre#define MILE 1.609 /1 mile = 1.609 kilometerint main(void)float mile,gallon;printf(“Pleas

22、e input miles and gallons:“);scanf(“%f %f“,printf(“Miles per gallon:%.1fn“,mile/gallon);printf(“Litres per 100 kilometre:%.1fn“,gallon*GALLON/(100*mile*MILE);return(0);第 5 章 运算符、表达式和语句编程练习1编写一个程序。将用分钟表示的时间转换成以小时和分钟表示的时间。使用#define 或者const 来创建一个代表 60 的符号常量。使用 while 循环来允许用户重复键入值,并且当键入一个小于等于 0 的时间时终止循环。

23、#include#define HOUR 60int main(void)int minutes;printf(“Please input the minutes:“);scanf(“%d“,while(minutes0)printf(“%d hours and %d minutesn“,minutes/HOUR,minutes%HOUR);printf(“Please input the minutes:“);scanf(“%d“,return(0);2编写一个程序,此程序要求输入一整数,然后打印出从(包括)输入的值到(包括)比输入的值大 10 的所有整数值(也就是说,如果输入为 5,那么输

24、出就从 5 到 15) 。要求在各个输出值之间用空格、制表符或换行符分开。#includeint main(void)int num,i=0;printf(“Please input the number:“);scanf(“%d“,while(i+#define WEEK 7int main(void)int days;printf(“Please input the days:“);scanf(“%d“,while(days0)printf(“%d days are %d weeks,%d days.n“,days,days/WEEK,days%WEEK);printf(“Please i

25、nput the days:“);scanf(“%d“,return(0);4编写一个程序让用户按厘米输入一个高度值,然后,程序按照厘米和英尺英寸显示这个高度值。允许厘米和英寸的值出现小数部分。程序允许用户继续输入,直到用户输入一个非正的数值。程序运行的示例如下面所示:Enter a height in centimeters: 182182.0 cm = 5 feet, 11.7 inchesEnter a height in centimeters(#define INCH 2.54 / 1 inch = 2.54cmint main(void)float cm;printf(“Enter

26、 a height in centimeters:“);scanf(“%f“,while(cm0)printf(“%.1f cm = %d feet, %.1f inchesn“,cm,int(cm/INCH/12),cm/INCH-int(cm/INCH/12)*12);printf(“Enter a height in centimeters(int main(void)int count,sum,max;count=0;sum=0;printf(“Please input the max:“);scanf(“%d“,while(count+ int main(void)int count

27、,sum,max;count=0;sum=0;printf(“Please input the max:“);scanf(“%d“,while(count+float cube(float);int main(void)float number;printf(“Please input the number:“);scanf(“%f“,printf(“The cube of %f is %fn“,number,cube(number);return(0);float cube(float num)return(num * num * num);8编写一个程序,该程序要求用户输入一个华氏温度。程

28、序以 double 类型读入温度值,并将它作为一个参数传递给用户提供的函数 Temperatures()。该函数将计算相应的摄氏温度和绝对温度,并以小数点右边有两位数字的精度显示这三种温度。它应该用每个值所代表的温度刻度来标识这 3 个值。下面是将华氏温度转换成摄氏温度的方程:通常用在科学上的绝对温度的刻度是 0 代表绝对零,是可能温度的下界。下面是将摄氏温度转换为绝对温度的方程:Kelvin=Celsius+273.16Temperatures()函数使用 const 来创建代表该转换里的 3 个常量的符号。main()函数将使用一个循环来允许用户重复地输入温度,当用户输入 q 或其他非数字

29、值时,循环结束。#includevoid Temperatures(double);int main(void)double Fahrenheit;printf(“Please input the Fahrenheit:“);while(scanf(“%lf“,printf(“Please input the Fahrenheit:“);printf(“endn“);return(0);void Temperatures(double Fahrenheit)const double a=1.8,b=32.0,c=273.16;printf(“Fahrenheit = %lft“,Fahrenh

30、eit);printf(“Celsius = %lft“,a * Fahrenheit + b);printf(“Kelvin = %lfn“,a * Fahrenheit + b + c);第 6 章 C 控制语句:循环编程练习1编写一个程序,创建一个具有 26 个元素的数组,并在其中存储 26 个小写字母。并让该程序显示该数组的内容。#includeint main(void)char ABC26;int i;for(i=0;iint main(void)int i,j;for(i=0;iint main(void)int i,j;for(i=0;iint main(void)int i,

31、j,k;char letter;printf(“Please input a capital:“);scanf(“%c“,k=letter-A+1;for(i=0;i=0;j-) printf(“%c“,A+j);printf(“n“);return(0);5编写一个程序打印一个表,表的每一行都给出一个整数、它的平方以及它的立方。要求用户输入表的上限与下限。使用一个 for 循环。#includeint main(void)int i,min,max;printf(“Please input the min and max:“);scanf(“%d %d“,printf(“%10s%10s%1

32、0sn“,“num“,“square“,“cube“);for(i=min;i#includeint main(void)char word20;int i;printf(“Please input a word:“);scanf(“%s“,for(i=strlen(word)-1;i=0;i-)printf(“%c“,wordi);printf(“n“);return(0);7编写一个程序,要求输入两个浮点数,然后打印出用二者的差值除以二者的乘积所得的结果。在用户键入非数字的输入之前程序循环处理每对输入值。#includeint main(void)float a,b;printf(“Ple

33、ase input two floats:“);while(scanf(“%f%f“,printf(“Please input two floats:“);printf(“endn“);return(0);8对练习 7 进行修改,让它使用一个函数来返回计算值。#includefloat calculate(float,float);int main(void)float a,b;printf(“Please input two floats:“);while(scanf(“%f%f“,printf(“Please input two floats:“);printf(“endn“);retur

34、n(0);float calculate(float x,float y)return( (x-y) / (x*y) );9编写一个程序,要求用户输入下限整数和一个上限整数,然后,依次计算从下限到上限的每一个整数的平方的加和,最后显示结果。程序将不断提示用户输入下限整数和上限整数并显示出答案,直到用户输入的上限整数等于或小于下限整数为止。程序运行的结果示例应该如下所示:Enter lower and upper integer limits: 5 9The sums of the squares from 25 t0 81 is 255Enter next set of limits:3 25

35、The sums of the squares from 9 t0 625 iS 5520Enter next set of limits:5 5Done#includeint main(void)int lower,upper,sum,i;printf(“Enter lower and upper integer limits:“);scanf(“%d%d“,while(lowerint main(void)int num8,i;printf(“Enter 8 numbers:“);for(i=0;i=0;i-)printf(“%dt“,numi);printf(“n“);return(0)

36、;11.考虑这两个无限序列:1.0+1.0/2.0+1.0/3.0+1.0/4.0+1.0 - 1.0/2.0+1.0/3.0 - 1.0/4.0+编写一个程序来计算这两个序列不断变化的总和,直到达到某个次数。让用户交互地输入这个次数。看看在 20 次、100 次和 500 次之后的总和。是否每个序列都看上去要收敛于某个值?提示:奇数个-1 相乘的值为-1,而偶数个-1 相乘的值为 1。#includeint main(void)double i,sum1,sum2;int sign,count;printf(“Enter the count:“);scanf(“%d“,for(i=1.0,s

37、ign=1,sum1=0,sum2=0;i#includeint main(void)int num8,i;for(i=0;iint main(void)double num8,sum8;int i,j;printf(“Enter 8 numbers:“);for(i=0;i#define LENGTH 20int main(void)char a255;int i;for(i=0;i=0;i-)printf(“%c“,ai);printf(“n“);return(0);15. Daphne 以 10%的单利息投资了 100 美元(也就是说,每年投资赢得的利息等于原始投资的 10%)。Deir

38、dre 则以每年 5%的复合利息投资了 10O 美元(也就是说,利息是当前结余的 5%,其中包括以前的利息) 。编写一个程序,计算需要多少年 Deirdre 的投资额才会超过 Daphne,并且显示出到那时两个人的投资额。#includeint main(void)double Daphne=100,Deirdre=100;int i=0;while(Daphne=Deirdre)Daphne += 100 * 0.1;Deirdre += Deirdre * 0.05;i+;printf(“After %d years,Deirdres investment is %lf,Daphnes i

39、nvestment is %lfn“,i,Deirdre,Daphne);return(0);16. Chuckie Lucky 赢了 100 万美元,他把它存入一个每年赢得 8%的帐户。在每年的最后一天,Chuckie 取出 10 万美元。编写一个程序,计算需要多少年 Chuckie 就会清空他的帐户。#includeint main(void)double investment = 100;int i=0;while(investment 0)investment += investment * 0.08;investment -= 10;i+;printf(“After %d years

40、,Chuckie Luckys investment is outn“,i,investment);return(0);第七章 C 控制语句:分支和跳转编程练习1编写一个程序。该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行符数目以及读取的所有其他字符数目。#includeint main(void)int space=0,newline=0,others=0;char a;printf(“Please input a string end by #:“);while(a=getchar() != #)if(a = ) space+;else if (a = n) newlin

41、e+;else others+;printf(“space: %d,newline: %d,others: %dn“,space,newline,others);return(0);2编写一个程序,该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及它的十进制ASCII 码。每行打印 8 个字符,编码对。建议:利用字符计数和模运算符(%)在每 8 个循环周期时打印一个换行符。#includeint main(void)char a;int i;printf(“Please input a string end by #:“);for(i = 1; (a = getchar() != #;

42、 i+)printf(“%c-%dt“,a,a);if(i%8 = 0) printf(“n“);printf(“n“);return(0);3编写一个程序。该程序读取整数,直到输入 0。输入终止后,程序应该报告输入的偶数(不包括 0)总个数、偶数的平均值,输入的奇数总个数以及奇数的平均值。#includeint main(void)int i_even = 0, sum_even = 0, i_odd = 0, sum_odd = 0, num;printf(“Please input numbers (0 to quit):“);while(1)scanf(“%d“,if (num = 0

43、) break;if (num % 2 = 0) i_even+; sum_even += num;else i_odd+; sum_odd += num;printf(“even numbers count: %dn“,i_even);printf(“even numbers sum : %dn“,sum_even);printf(“odd numbers count: %dn“,i_odd);printf(“odd numbers sum : %dn“,sum_odd);return(0);4利用 if else 语句编写程序读取输入,直到#。用一个感叹号代替每个句号,将原有的每个感叹号用

44、两个感叹号代替,最后报告进行了多少次替代。#includeint main(void)int a=0,b=0;char ch;printf(“Please input a string end by #:“);while(ch = getchar() != #)if(ch = .) putchar(!); a+;else if(ch = !) putchar(!);putchar(!); b+;else putchar(ch);printf(“nthe times of . replaced by !: %dn“,a);printf(“the times of ! replaced by !:

45、 %dn“,b);return(0);5用 switch 重做练习 3。#includeint main(void)int i_even = 0, sum_even = 0, i_odd = 0, sum_odd = 0, num;printf(“Please input numbers (0 to quit):“);while(1)scanf(“%d“,if (num = 0) break;switch(num % 2)case 0: i_even+;sum_even += num;break;case 1: i_odd+;sum_odd += num;printf(“even numbers count: %dn“,i_even);printf(“even numbers sum : %dn“,sum_even);printf(“odd numbers count: %dn“,i_odd);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报