C语言程序设计第三版习题库答案Word文档下载推荐.docx

上传人:b****1 文档编号:4189564 上传时间:2023-05-02 格式:DOCX 页数:43 大小:41.70KB
下载 相关 举报
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第1页
第1页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第2页
第2页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第3页
第3页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第4页
第4页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第5页
第5页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第6页
第6页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第7页
第7页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第8页
第8页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第9页
第9页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第10页
第10页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第11页
第11页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第12页
第12页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第13页
第13页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第14页
第14页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第15页
第15页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第16页
第16页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第17页
第17页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第18页
第18页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第19页
第19页 / 共43页
C语言程序设计第三版习题库答案Word文档下载推荐.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计第三版习题库答案Word文档下载推荐.docx

《C语言程序设计第三版习题库答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第三版习题库答案Word文档下载推荐.docx(43页珍藏版)》请在冰点文库上搜索。

C语言程序设计第三版习题库答案Word文档下载推荐.docx

intx,y;

scanf("

if(x<

1)

{y=x;

elseif(x>

=1&

&

x<

10)

{y=2*x-1;

else

{y=3*x-11;

printf("

y);

}#include"

%d\n"

}scanf("

}#include"

y=x;

y=2*x-1;

y=3*x-11;

},y);

}

4、给定一个不多于5位的正整数,要求:

①求它是几位数;

②按逆序打印出各位数字。

例如原数为321,应输出123。

main(){

longintnum,m=0;

inti=0;

%ld"

num);

while(num>

0){

i++;

/*统计长度*/

m=m*10+num%10;

num=num/10;

数字长度为:

i);

逆序数字为:

m);

5、以下程序实现的功能:

求三个数的最大值

#include<

inta,b,c,max;

scanf("

%d%d%d"

a,&

b,&

c);

if(a>

b){

c)max=a;

elsemax=c;

}else{

if(b>

c)max=b;

else

max=c;

}

printf("

max=%d"

max);

main(){

intx,y,z,t=0;

x,&

y,&

z);

if(x>

y)

{t=y;

x=t;

z)

{t=z;

z=x;

if(y>

z=y;

y=t;

z);

}

6、输入两个正整数m和n,求其最大公约数和最小公倍数。

/*枚举法*/

main(){

longm,n,i=1,j,s;

%ld,%ld"

m,&

n);

for(;

i<

=m&

=n;

i++){

if(m%i==0&

n%i==0)s=i;

if(m>

=n)j=m;

elsej=n;

!

(j%m==0&

j%n==0);

j++);

s=%ld,j=%ld\n"

s,j);

inta,b,k,temp,i,p;

%d,%d"

b);

if(a>

b)

temp=b;

temp=a;

for(i=2;

=temp;

i++)

{if(a%i==0&

b%i==0)

k=i;

k);

p=a*b/k;

p);

/*辗转相除*/

intm,n,k,j,p,r=1;

k=m>

n?

m:

n;

j=m>

n:

m;

do{

r=k%j;

k=j;

j=r;

}while(r!

=0);

k,m*n/k);

/*反复减法*/

m:

n:

p=k-j;

if(j>

p){k=j;

j=p;

elsek=p;

}while(p!

7、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

#include"

charc;

inti=0,j=0,k=0,l=0;

while((c=getchar())!

=’\n’){

if(c>

=’A’&

c<

=’Z’||c>

=’a’&

=’z’)

//英文字母统计

elseif(c>

=’0’&

=’9’)

j++;

//数字统计

elseif(c==’’)

k++;

//空格统计

elsel++;

i=%d,j=%d,k=%d,l=%d\n"

i,j,k,l);

8、求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。

例如:

2+22+222+2222+22222(n=5),n由键盘输入。

inta,n;

longb=0,sum=0;

scanf(“%d%d”,&

for(i=1;

i++){

b=b*10+a;

sum=sum+b;

printf(“%ld”,sum);

9、打印出所有"

水仙花数"

,所谓"

是指一个三位数,其各位数字立方和等于该本身。

153是一个水仙花数,因为153=13+53+33。

【程序1】

inti,m,n,k;

for(i=100;

1000;

m=__i%10__;

n=_i/10%10__;

k=i/100;

if(__m*m*m+n*n*n+k*k*k==i__)

%5d"

【程序2】

inti,a,n,s;

for(i=100;

=999;

n=i;

s=0;

while(n>

0){

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

main(){

inta,i,m;

for(a=1;

a<

=1000;

a++){

for(__i=1,m=0__;

i<

=a/2;

if(!

(a%i))__m+=i__;

if(m==a)printf(“%4d”,a);

11、利用:

/4=1-1/3+1/5-1/7+….级数求的值,直到最后一项的绝对值小于10-6为止。

求绝对值的函数为fabs()。

#__include<

__

math.h>

inti=1,flag=1;

doublesum=0.0,s;

do{

s=__1.0/(2*i-1)__;

sum+=s*flag;

__flag=-flag__;

}while(__fabs(s)>

1e-6__);

/**/

pi=%f"

__4*sum__);

11、有一分数序列:

2/1,3/2,5/3,求出这个数列的前20项之和。

#defineN20

inti=1;

doublex=1,y=2,sum=0;

while(__i<

=20__){

sum=sum+__y/x__;

y=___x+y__;

x=__y-x__;

i++;

%f\n"

sum);

12、一球从100米高度自由下落,每次落地后返回原高度的一半,再落下。

求它在第10次落地时共经过多少米?

第10次反弹多高?

 

inti,n=10;

doubleh=100,s=100;

for(i=2;

h*=__0.5__;

s=__s+h*2__;

s=%f,h=%f\n"

s,h);

13、猴子吃桃问题。

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉一半,又多吃一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘多少桃子。

#defineN10

inti=1,sum=1;

while(i++<

N)

sum=__(sum+1)*2__;

sum=%d\n"

14、用迭代法求。

求平方根的迭代公式为:

要求前后两次求出的得差的绝对值少于0.00001。

floatx0,x1,a;

a);

x1=a/2;

do{

x0=x1;

x1=__(x0+a/x0)/2__;

}while(__x1>

1e-5__);

%g\n"

x1);

15、用牛顿迭代法求方程

在1.5附近的根。

#include__<

#definef(x)2*x*x*x-4*x*x+3*x-6

doublex,y;

x=__1.5__;

y=f(x);

x=x-y/(6*x*x-8*x+3);

}while(fabs(y)>

1e-6);

x=%.3f\n"

x);

16、用二分法求方程

在(-10,10)之间的根

#definef(x)2x*x*x-4*x*x+3*x-6

doublex1=-10,x2=10,x,y;

x=(x1+x2)/2;

y=f(x);

if(y<

0)x1=x;

elsex2=x;

}while(fabs(y)>

x=%g\n"

17、以下程序的功能是:

输入一个百分制成绩,输出一个五级制成绩等级。

例如输入75,输出C。

请完成填空

intscore;

__%d__"

score);

switch(__score/10__){

case1:

case2:

case3:

case4:

case5:

printf(“gradeE\n”);

___break__;

case6:

printf(“gradeD\n”);

break;

case7:

printf(“gradeC\n”);

case8:

printf(“gradeB\n”);

case9:

printf(“gradeA\n”);

__default__:

Errorinput!

\n"

18、该程序功能:

对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大值。

#definef(x)x*x-5*x+sin(x)

voidmain(){

intx;

floatmax;

__max=f

(1)__;

for(x=2;

x<

=10;

x++)

__if(max<

f(x))max=f(x)__;

19、程序功能:

输入整数a和b的值,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。

inta,b,s;

%d%d"

s=__a*a+b*b__;

if(s>

100)printf("

__s/100__);

elseprintf("

___a+b__);

20、有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,以下程序统计卖完所需的天数。

intday,x1,x2;

day=0;

x1=1020;

while(__x1>

0__){

x2=__x1/2-2__;

x1=x2;

day++}

printf(“day=%d”,day);

21、找出整数的所有因子

inti,x;

scanf(“%d”,&

i=1;

for(;

__i<

=x/2__;

){

if(x%i==0)printf(%d”,i);

22、统计用数字0-9可以组成多少个各位上的数字没有重复的3位偶数。

intn=0,i,j,k;

for(i=1;

i<

=9;

for(k=0;

k<

=8;

__k+=2__)

if(k!

=i)

for(j=0;

j<

j++)

if(__j!

=i&

j!

=k__)n++;

printf(“n=%d\n”,n);

23、用100元换成1、2、5元的所有兑换方案。

inti,j,k,l=0;

for(i=0;

i<

=20;

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之间满足每位数的乘积大于每位数的和的数

intn,k=1,s=0,m;

for(n=1;

n<

=100;

n++){

k=1;

s=0;

__m=n__;

while(__m>

0__){

k*=m%10;

s+=m%10;

___m/=10__;

if(k>

s)printf(“%d”,n);

25、从3个红球、5个白球、6个黑球中任意取出8个球,且其中必须有白球,输出所有可能的方案。

inti,j,k;

for(i=0;

=3;

for(__j=1__;

=5;

j++){

k=8–i–j;

if(__k>

=0__)

printf(“%3d%3d%3d\n”,i,j,k);

26、以下程序的功能是:

判断一个四位数是否满足这样的条件:

它的9倍刚好是它的反序数。

反序数是指整数各个位上的数字逆序所形成的整数。

请完成程序的填空。

inti,a,b,c,d,m;

for(i=1000;

;

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"

27、以下程序完成两整数的交换。

inta,b;

printf(“请依次输入a,b的值:

”);

scanf(“%d,%d”,__&

b__);

a=a+b;

__b=a-b__;

__a=a-b__;

printf(“交换后:

a=%d,b=%d”,a,b);

28、以下程序的功能是判断输入的年份是否为闰年,若是则输出”yes”,否则输出”No”。

intyear 

scanf(“%d”,&

year);

if(__year%400==0||year%4==0&

year%100!

=0__)printf(“yes”);

elseprintf(“No”);

29、以下程序利用冒泡排序法对输入的10个数进行排序。

voidmain(){

inta[N];

inti,j,t;

printf(″input10numbers:

\n″);

N;

,__&

a[i]__);

for(j=0;

j<

N-1;

for(i=0;

__N-j-1__;

if(__a[i]>

a[i+1]__){

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

printf(″thesortednumbers:

printf(″%d″,a[i]);

printf(″\n″);

30、用筛法求100之内的素数。

筛法素数的思想是:

1、取最小的数2,并声明它是素数,同时筛去它及它的倍数。

2、取未筛去数中最小的数,并声明它是素数,同时筛去它及它的倍数。

3、重复步骤2至筛中无数,得到所有的素数。

#defineM100//范围

#defineN((M+1)/2)//奇数的个数

voidmain(){

 

inti,j,a[N];

a[0]=2;

for(i=1;

i++) 

/*初始数组实现第一步筛选*/

a[i]=2*i+1;

/*第二步筛选*/

if(__a[i]!

for(j=i+1;

if(__a[j]%a[i]==0__)/*倍数时置零筛去*/

a[j]=0;

\nTheprimerare[2-%d]:

M);

for(i=0,j=0;

i++){ 

/*显示得到素数*/

=0__) 

{

a[i]);

if((++j)%10==0) 

/*十个数换行*/

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

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2