ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:36.30KB ,
资源ID:8032138      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8032138.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计第三版习题库答案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计第三版习题库答案.docx

1、C 语言程序设计第三版习题库答案语言程序设计第三版习题库答案 C 语言程序设计(第三版)习题库 1、设圆半径 r=1.5,圆柱高 h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用 scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。#include main()float r,h,C1,Sa,Sb,Va,Vb;scanf(_”%f”_,&r);scanf(”%d”,_&h_);;C1=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf(_”Cl=%.2fSa=%.2fSb=%.2

2、fVa=%.2fVb=%.2f”,Cl,Sa,Sb,Va,Vb);2、输入一个华氏温度,要求输出摄氏温度。公式为 c=5(F-32)/9 输出要求有文字说明,取位 2小数。#include main()float F,c;scanf(%f,&F);_c=5*(F-32)/9_;printf(c=%.2f,c);3、有一函数:写一程序,输入 x 值,输出 y值。#include main()int x,y;printf(输入 x:);scanf(%d,&x);if(x1)/*x1*/y=x;printf(x=%3d,y=x=%dn,x,y);else if(_x10_)/*1x-10*/_y=2

3、*x-1_;printf(x=%3d,y=2*x-1=%dn,x,y);else/*x10*/y=3*x-11;printf(x=%3d,y=3*x-11=%dn,x#include stdio.h main()int x,y;scanf(%d,&x);if(x=1&x10)y=2*x-1;else y=3*x-11;printf(%d,y);#include stdio.h main()int x,y;scanf(%d,&x);if(x=1&x10)y=2*x-1;else y=3*x-11;printf(%dn,y);#include stdio.h main()int x,y;scanf

4、(%d,&x);if(x=1&x10)y=2*x-1;else y=3*x-11;printf(%d,y);scanf(%d,&x);if(x=1&x10)y=2*x-1;else y=3*x-11;#include stdio.h main()int x,y;scanf(%d,&x);if(x=1&x10)y=2*x-1;else y=3*x-11;printf(%d,y);,y);4、给定一个不多于 5位的正整数,要求:求它是几位数;按逆序打印出各位数字。例如原数为 321,应输出 123。#include main()long int num,m=0;int i=0;scanf(%ld,

5、&num);while(num0)i+;/*统计长度*/m=m*10+num%10;num=num/10;printf(数字长度为:%d,i);printf(逆序数字为:%dn,m);5、以下程序实现的功能:求三个数的最大值#include main()int a,b,c,max;scanf(%d%d%d,&a,&b,&c);if(ab)if(ac)max=a;else max=c;else if(bc)max=b;else max=c;printf(max=%d,max);#include main()int x,y,z,t=0;scanf(%d%d%d,&x,&y,&z);if(xy)t=

6、y;y=x;x=t;if(xz)t=z;z=x;x=t;if(yz)t=z;z=y;y=t;printf(%dn,z);6、输入两个正整数 m 和 n,求其最大公约数和最小公倍数。/*枚举法*/#include main()long m,n,i=1,j,s;scanf(%ld,%ld,&m,&n);for(;i=m&i=n)j=m;else j=n;for(;!(j%m=0&j%n=0);j+);printf(s=%ld,j=%ldn,s,j);#include main()int a,b,k,temp,i,p;scanf(%d,%d,&a,&b);if(ab)temp=b;else temp

7、=a;for(i=2;i=temp;i+)if(a%i=0&b%i=0)k=i;printf(%dn,k);p=a*b/k;printf(%dn,p);/*辗转相除*/#include main()int m,n,k,j,p,r=1;scanf(%d,%d,&m,&n);k=mn?m:n;j=mn?n:m;do r=k%j;k=j;j=r;while(r!=0);printf(%d,%d,k,m*n/k);/*反复减法*/#include main()int m,n,k,j,p,r=1;scanf(%d,%d,&m,&n);k=mn?m:n;j=mn?n:m;do p=k-j;if(jp)k=

8、j;j=p;else k=p;while(p!=0);printf(%d,%d,k,m*n/k);7、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#includestdio.h main()char c;int i=0,j=0,k=0,l=0;while(c=getchar()!=n)if(c=A&c=a&c=0&c=9)j+;/数字统计 else if(c=)k+;/空格统计 else l+;printf(i=%d,j=%d,k=%d,l=%dn,i,j,k,l);8、求 Sn=a+aa+aaa+aaaaa(有 n个 a)之值,其中 a是一个数字。例如:2+22+222

9、+2222+22222(n=5),n 由键盘输入。#include main()int a,n;long b=0,sum=0;scanf(“%d%d”,&a,&n);for(i=1;i=n;i+)b=b*10+a;sum=sum+b;printf(“%ld”,sum);9、打印出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该本身。例如:153 是一个水仙花数,因为 153=13+53+33。【程序 1】#include main()int i,m,n,k;for(i=100;i1000;i+)m=_i%10_;n=_ i/10%10_;k=i/100;if(_m*m*m+n*

10、n*n+k*k*k=i_)printf(%5d,i);【程序 2】#include main()int i,a,n,s;for(i=100;i0)a=_n%10_;s+=a*a*a;n/=_10_;if(_s=i_)printf(“%d”,i);10、一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6 的因子为1、2、3,而 6=1+2+3,因此 6是完数。编程序找出 1000之内的所有完数,并按下面格式输出其因子:6 its factors are 1、2、3#include main()int a,i,m;for(a=1;a=1000;a+)for(_i=1,m=0_;i=a/2;

11、i+)if(!(a%i)_m+=i_;if(m=a)printf(“%4d”,a);11、利用:/4=1-1/3+1/5-1/7+.级数求 的值,直到最后一项的绝对值小于 10-6为止。求绝对值的函数为 fabs()。#_include_#include main()int i=1,flag=1;double sum=0.0,s;do s=_1.0/(2*i-1)_;sum+=s*flag;i+;_flag=-flag_;while(_fabs(s)1e-6_);/*/printf(pi=%f,_4*sum_);11、有一分数序列:2/1,3/2,5/3,求出这个数列的前 20项之和。#inc

12、lude#define N 20 main()int i=1;double x=1,y=2,sum=0;while(_i=20_)sum=sum+_y/x_;y=_x+y_;x=_y-x_;i+;printf(%fn,sum);12、一球从 100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第 10次落地时共经过多少米?第 10次反弹多高?#include main()int i,n=10;double h=100,s=100;for(i=2;i=n;i+)h*=_0.5_;s=_s+h*2_;printf(s=%f,h=%fn,s,h);13、猴子吃桃问题。猴子第一天摘下若干个

13、桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。#include#define N 10 main()int i=1,sum=1;while(i+N)sum=_(sum+1)*2_;printf(sum=%dn,sum);14、用迭代法求。求平方根的迭代公式为:要求前后两次求出的得差的绝对值少于 0.00001。#include#include main()float x0,x1,a;scanf(%f,&a);x1=a/2;do x0=x1;x

14、1=_(x0+a/x0)/2_;while(_x11e-5_);printf(%gn,x1);15、用牛顿迭代法求方程 在 1.5附近的根。#include#include _#define f(x)2*x*x*x-4*x*x+3*x-6 main()double x,y;x=_1.5_;do y=f(x);x=x-y/(6*x*x-8*x+3);while(fabs(y)1e-6);printf(x=%.3fn,x);16、用二分法求方程 在(-10,10)之间的根#include#include#define f(x)2x*x*x-4*x*x+3*x-6 main()double x1=-

15、10,x2=10,x,y;do x=(x1+x2)/2;y=f(x);if(y1e-6);printf(x=%gn,x);17、以下程序的功能是:输入一个百分制成绩,输出一个五级制成绩等级。例如 输入 75,输出 C。请完成填空#include main()int score;scanf(_%d_,&score);switch(_score/10_)case 1:case 2:case 3:case 4:case 5:printf(“grade En”);_break_;case 6:printf(“grade Dn”);break;case 7:printf(“grade Cn”);brea

16、k;case 8:printf(“grade Bn”);break;case 9:printf(“grade An”);break;_default_:printf(Error input!n);18、该程序功能:对 x=1,2,.,10,求 f(x)=x*x-5*x+sin(x)的最大值。#include#include#define f(x)x*x-5*x+sin(x)void main()int x;float max;_max=f(1)_;for(x=2;x=10;x+)_if(maxf(x)max=f(x)_;printf(%fn,max);19、程序功能:输入整数 a和 b的值,若

17、 a2+b2 大于 100,则输出 a2+b2 百位以上的数字,否则输出两数之和。#include main()int a,b,s;scanf(%d%d,&a,&b);s=_a*a+b*b_;if(s100)printf(%d,_s/100_);else printf(%d,_a+b_);20、有 1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,以下程序统计卖完所需的天数。#include main()int day,x1,x2;day=0;x1=1020;while(_x10_)x2=_x1/2-2_;x1=x2;day+printf(“day=%d”,day);21、找出整

18、数的所有因子#include main()int i,x;scanf(“%d”,&x);i=1;for(;_i=x/2_;)if(x%i=0)printf(%d”,i);i+;22、统计用数字 0-9 可以组成多少个各位上的数字没有重复的 3位偶数。#include main()int n=0,i,j,k;for(i=1;i=9;i+)for(k=0;k=8;_k+=2_)if(k!=i)for(j=0;j=9;j+)if(_j!=i&j!=k_)n+;printf(“n=%dn”,n);23、用 100元换成 1、2、5 元的所有兑换方案。#include main()int i,j,k,l

19、=0;for(i=0;i=20;i+)for(j=0;j=50;j+)k=_(100-i-2*j)/5_;if(_i+j*2+k*5=100_)printf(“%2d%2d%2d”,i,j,k);l=l+1;if(l%5=0)printf(“n”);24、输出 1-100 之间满足每位数的乘积大于每位数的和的数#include main()int n,k=1,s=0,m;for(n=1;n0_)k*=m%10;s+=m%10;_m/=10_;if(ks)printf(“%d”,n);25、从 3个红球、5 个白球、6个黑球中任意取出 8个球,且其中必须有白球,输出所有可能的方案。#includ

20、e main()int i,j,k;for(i=0;i=3;i+)for(_j=1_;j=0_)printf(“%3d%3d%3dn”,i,j,k);26、以下程序的功能是:判断一个四位数是否满足这样的条件:它的 9 倍刚好是它的反序数。反序数是指整数各个位上的数字逆序所形成的整数。请完成程序的填空。#include main()int i,a,b,c,d,m;for(i=1000;i+)a=_i%10_;b=i/10%10;c=i/100%10;d=i/1000;m=_a*1000+b*100+c*10+d_;if(_m=i*9_)_break_;printf(i=%d,i);27、以下程序

21、完成两整数的交换。#include main()int a,b;printf(“请依次输入 a,b 的值:”);scanf(“%d,%d”,_&a,&b_);a=a+b;_b=a-b_;_a=a-b_;printf(“交换后:a=%d,b=%d”,a,b);28、以下程序的功能是判断输入的年份是否为闰年,若是则输出”yes”,否则输出”No”。#include main()int year;scanf(“%d”,&year);if(_year%400=0|year%4=0&year%100!=0_)printf(“yes”);else printf(“No”);29、以下程序利用冒泡排序法对输

22、入的 10 个数进行排序。#include#define N 10 void main()int aN;int i,j,t;printf(input 10 numbers:n);for(i=0;iN;i+)scanf(%d,_&ai_);printf(n);for(j=0;jN-1;j+)for(i=0;iai+1_)t=ai;ai=ai+1;ai+1=t;printf(the sorted numbers:n);for(i=0;iN;i+)printf(%d,ai);printf(n);30、用筛法求 100 之内的素数。筛法素数的思想是:1、取最小的数 2,并声明它是素数,同时筛去它及它的

23、倍数。2、取未筛去数中最小的数,并声明它是素数,同时筛去它及它的倍数。3、重复步骤 2至筛中无数,得到所有的素数。#include#define M 100/范围#define N(M+1)/2)/奇数的个数 void main()int i,j,aN;a0=2;for(i=1;iN-1;i+)/*初始数组实现第一步筛选*/ai=2*i+1;for(i=1;iN-1;i+)/*第二步筛选*/if(_ai!=0_)for(j=i+1;jN;j+)if(_aj%ai=0_)/*倍数时置零筛去*/aj=0;printf(nThe primer are 2-%d:n,M);for(i=0,j=0;iN

24、;i+)/*显示得到素数*/if(_ai!=0_)printf(%5d,ai);if(+j)%10=0)/*十个数换行*/printf(n);getch();31、用选择法对 10 个整数从小到大排序。#include#define N 10 main()int aN,i,j,k,t;for(i=0;iN;i+)scanf(“%d”,&ai);for(i=0;iN-1;i+)k=_i_;for(j=i+1;jN;j+)if(ajak_)t=ak;ak=ai;ai=t;for(i=0;iN;i+)printf(“%d”,ai);32、求一个 N N矩阵主对角线元素、次对角线之和。#define

25、N 3#include main()int i=0,j=0,aNN,s1=0,s2=0;for(i=0;iN;i+)for(j=0;jN;j+)scanf(%d,&aij);for(i=0;iN;i+)for(j=0;jN;j+)if(_i=j_)s1+=aij;/主对角线 if(_i+j=N-1_)s2+=aij;/次对角线 printf(s1=%d,s2=%dn,s1,s2);33、已有一个已排好的数组今输入一个数要求按原来排序的规律将它插入数组中。#define N 10#include main()int i,t,aN=1,7,8,17,23,24,59,62,101;scanf(%d

26、,&t);for(i=N-2;i0;i-)if(tai)_ai=ai-1_;else break;ai+1=_t_;for(i=0;i10;i+)printf(%5d,ai);34、将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。#include#define N 11 main()int i,aN,tmp;for(i=0;iN;i+)scanf(%d,&ai);for(i=0;_iN/2_;i+)tmp=ai;ai=_aN-i-1_;_aN-i-1_=tmp;for(i=0;iN;i+)printf(%5d,ai);35、打印“魔方阵”,所谓

27、魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为 8 1 6 3 5 7 4 9 2 要求打印出由 1n2 的自然数构成的魔方阵。#define N 3#include main()int i,j,k,aNN;/*初始化魔方阵置为 0,作为有无数字的判断*/for(i=0;iN;i+)for(j=0;jN;j+)aij=_0_;j=N/2;a0j=1;/*存放第一个数字*/*存放 2n*n*/for(k=2;k=N*N;k+)i-;/数存放前一数行数减 1、列数加 1 _j+=1_;if(i N-1)/到达右上角的位置 i=i+2;j-;else if(iN-1)

28、j=0;/上一数的列数为 n-1 时,下一数的列数为 0 if(_aij!=0_)/若下一数的位置上已经有数字,/则下一数存到上一个数行数加 1的位置 i=(i+2)%N;j=(j-1+N)%N;aij=_k_;/填数 for(i=0;iN;i+)/输出魔方阵 printf();for(j=0;jN;j+)printf(%4d,aij);printf(nn);36、找出一个二位数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍点。#include#define M 5#define N 4 main()int aMN,i,j,x,y,k,max,min;/x,y分别是用来记

29、录鞍点的位置 int flag=0;/用于指示是否存在鞍点 for(i=0;iM;i+)for(j=0;jN;j+)scanf(%d,&aij);for(i=0;iM;i+)max=ai0;y=0;/先默认第一个数是最大值 for(k=1;kN;k+)if(maxaik)y=k;_max=aik_;min=aiy;x=i;/先默认第一个数是最小值 for(k=0;kaky)x=k;_min=aky_;if(_i=k_)printf(a%d%d=%d 是鞍点n,x,y,axy);flag=1;if(flag=0)printf(“不存在鞍点n”);37、有个 15数按由小到大顺序存放在一个数组中,

30、输入一个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则打印出无此数#include#define N 15 main()int low,high,mid,x;int aN=1,4,9,13,21,34,55,89,144,233,377,570,671,703,812;low=0,high=N-1;scanf(%d,&x);do mid=_(low+high)/2_;if(amid=x)break;else if(amidx)low=_mid+1_;else high=_mid-1_;while(low=high);if(low=high)printf(x is the

31、%dth numbern,mid+1);else printf(x not exist in the arrayn);38、输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。#include void main()char string81;int i,num=0,word=0;char c;gets(string);for(i=0;(c=stringi)_!=0_;i+)if(c=)word=0;else if(word=0)word=_1_;num+;printf(There are%d words in the line.n,num);39、输出 10行的杨辉三角形。1 1 1

32、1 2 1 1 3 3 1#include#define N 10 main()int i,n,k,aN=1;printf(“%5dn”,a0);for(i=1;i=1;j-)aj=_aj+aj-1_;for(j=0;_j=i_;j+)printf(“%5d”,aj);printf(“n”);40、以下程序的功能是:从键盘输入一个整数 n(n10)和 n个整数,存入数组 a中,先依次输出各个数组元素的值,然后找出最大值,并输出。#include main()int a10,n,i,j,_max_;printf(输入 n=);scanf(%d,&n);printf(输入各数组元素:);for(i

33、=0;in;i+)scanf(%d,_&ai_);printf(输出各数组元素:);for(_i=0;in;i+_)printf(%d,_ai_);printf(n);max=_a0_;for(j=1;jmax)_max=ai_;printf(最大值:%dn,max);41、以下程序实现的功能是:将字符串 s 中所有的字符 c删除。请完成程序填充#include#include main()char s80;int i,j;gets(s);for(i=j=0;_si!=0_;i+)if(si!=c)sj=si;_j+_;sj=0;puts(s);42、以下程序的功能是:按顺序读入 10名学生 4门课程的成绩,计算出每位学生的平均分并输出,请完成程序填充。#include#define N 10 main()int n,k;float score,sum,ave;for(n=1;n=N;n+

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1