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

上传人:b****8 文档编号:30446144 上传时间:2023-08-15 格式:DOCX 页数:46 大小:42.25KB
下载 相关 举报
C语言程序设计第三版习题库答案.docx_第1页
第1页 / 共46页
C语言程序设计第三版习题库答案.docx_第2页
第2页 / 共46页
C语言程序设计第三版习题库答案.docx_第3页
第3页 / 共46页
C语言程序设计第三版习题库答案.docx_第4页
第4页 / 共46页
C语言程序设计第三版习题库答案.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

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

《C语言程序设计第三版习题库答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第三版习题库答案.docx(46页珍藏版)》请在冰豆网上搜索。

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

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

C语言程序设计(第三版)习题库

1、设圆半径r=1、5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。

请编程序。

#include <stdio、h>

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=%、2fVa=%、2fVb=%、2f”,Cl,Sa,Sb,Va,Vb);

}

2、输入一个华氏温度,要求输出摄氏温度。

公式为 c=5(F-32)/9 

输出要求有文字说明,取位2小数。

#include

main(){

floatF,c; 

scanf("%f",&F);

____c=5*(F-32)/9______;

printf(”c=%、2f",c);

3、有一函数:

写一程序,输入x值,输出y值。

 

#include 

main(){

intx,y;

printf("输入x:

”);

scanf("%d”,&x);  

if(x<1) {    /*x<1*/

y=x;

printf(”x=%3d,y=x=%d\n”,x,y);

}elseif(____x〈10_______){ /*1≤x—10*/

_____y=2*x—1_______;

printf("x=%3d,y=2*x—1=%d\n",x,y); 

} else{   /* x≥10*/

y=3*x-11; 

printf(”x=%3d, y=3*x-11=%d\n",x#include"stdio、h"

main()

int x,y;

scanf(”%d”,&x);

 if(x<1)

{y=x;}

 elseif(x>=1 &&x<10)

ﻩ{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)

ﻩ{ y=x;}

 elseif(x>=1&& x〈10)

{ y=2*x-1;}

else

ﻩ{ y=3*x-11;}

 printf(”%d\n",y);

}#include”stdio、h"

main()

{

 int x,y;

scanf("%d",&x);

if(x〈1)

{ y=x;}

elseif(x>=1 &&x〈10)

{ y=2*x-1;}

else

ﻩ{y=3*x—11;}

printf(”%d",y);

}scanf("%d”,&x);

if(x〈1)

{y=x;}

elseif(x〉=1&& x〈10)

{y=2*x—1;}

 else

ﻩ{y=3*x-11;}#include"stdio、h"

main()

intx,y;

scanf(”%d”,&x);

if(x<1)

y=x;

else if(x〉=1&&x<10)

y=2*x-1;

else

ﻩy=3*x-11;

printf(”%d”,y);

},y);

} 

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

①求它就是几位数;②按逆序打印出各位数字。

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

 

#include

main(){ 

longint num,m=0;

int i=0;    

  scanf(”%ld",&num);

 while(num>0){

   i++; /*统计长度*/

m=m*10+num%10;

num =num/10;

printf("数字长度为:

%d",i); 

printf("逆序数字为:

%d\n",m);

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

求三个数得最大值

#include<stdio、h>

main(){

 ﻩinta,b,c,max;

 ﻩscanf("%d%d %d”,&a,&b,&c);

  ﻩif(a>b){

  if(a>c)  max=a;

  ﻩelse max=c;

 }else{

 ﻩif(b>c) 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(x>y)

ﻩ{t=y;y=x;x=t;}

 if(x>z)

{t=z;z=x;x=t;}

ﻩ if(y>z)

ﻩ{t=z;z=y;y=t;}

printf(”%d\n",z);

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

/*枚举法*/

#include<stdio、h〉

main(){

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

scanf(”%ld,%ld",&m,&n); 

for(;i〈=m&&i<=n;i++){

if(m%i==0&&n%i==0) s=i;

} 

if(m>=n)j=m;

elsej=n;

for(;!

(j%m==0&&j%n==0);j++); 

printf("s=%ld,j=%ld\n",s,j);

} 

#include〈stdio、h〉

main(){

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

ﻩscanf(”%d,%d",&a,&b);

 if(a>b)

ﻩtemp=b;

ﻩelse

ﻩtemp=a;

for(i=2;i<=temp;i++)

ﻩ{if(a%i==0&&b%i==0)

    k=i;

ﻩ }

printf(”%d\n",k);

p=a*b/k;

printf(”%d\n”,p);

 }

/*辗转相除*/

#include〈stdio、h〉

main(){

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

scanf("%d,%d”,&m,&n);

k=m>n?

m:

n;

j=m>n?

n:

m;

do{

r=k%j;

k=j;

j=r;

}while(r!

=0);

printf(”%d,%d”,k,m*n/k);

/*反复减法*/

#include<stdio、h〉

main(){

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

scanf(”%d,%d”,&m,&n);

k=m>n?

m:

n;

j=m〉n?

n:

m;

do{

p=k-j;

if(j>p){k=j;j=p;}

elsek=p;

}while(p!

=0);

printf("%d,%d",k,m*n/k);

}

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

#include"stdio、h” 

main(){

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

while((c=getchar())!

=’\n'){ 

if(c>=’A'&&c<=’Z’||c>=’a’&&c<=’z’)

i++; //英文字母统计

elseif(c>=’0’&&c<=’9’)

j++;//数字统计

elseif(c==’ ’)

k++;//空格统计

elsel++;

} 

printf("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由键盘输入。

#include<stdio、h>

main(){

  inta,n;

longb=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〈stdio、h>

main(){

int i,m,n,k;

for(i=100;i<1000;i++){

m=__i%10__;

n=_i/10%10__;

ﻩk=i/100;

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

 ﻩprintf("%5d",i);

}

}

【程序2】

#include〈stdio、h>

main(){

inti,a,n,s;

for(i=100;i<=999;i++){

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 factorsare 1、2、3

#include〈stdio、h〉

main(){

inta,i,m;

for(a=1;a〈=1000;a++){

  for(__i=1,m=0__; i〈= a/2;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<math、h〉

main(){

inti=1,flag=1;

 doublesum=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项之与。

#include<stdio、h>

#defineN20

main(){

inti=1;

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

while(__i〈=20__){

sum=sum+__y/x__;

y = ___x+y__;

x = __y-x__;

i++;

printf("%f\n”,sum);

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

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

第10次反弹多高?

 

#include 〈stdio、h〉

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=%f\n",s,h);

13、猴子吃桃问题。

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

第二天早上又将剩下得桃子吃掉一半,又多吃一个.以后每天早上都吃了前一天剩下得一半零一个.到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘多少桃子.

#include <stdio、h>

#defineN10

main(){

inti=1,sum=1;

while(i++<N)

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

printf("sum=%d\n”,sum);

}

14、用迭代法求.求平方根得迭代公式为:

  

 要求前后两次求出得得差得绝对值少于0、00001. 

#include

#include〈math、h> 

main(){  

floatx0,x1,a; 

scanf("%f”,&a);

x1=a/2;

do{

x0=x1;

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

}while(__x1>1e-5__);

printf("%g\n",x1);

}

15、用牛顿迭代法求方程在1、5附近得根。

 

#include<stdio、h〉

#include__<math、h〉__

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

main(){

doublex,y;x=__1、5__;

do{

y =f(x);

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

}while(fabs(y)〉1e—6);

printf(”x=%、3f\n",x); 

16、用二分法求方程在(—10,10)之间得根

#include

#include

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

main(){ 

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

do{

 x=(x1+x2)/2;

  y=f(x);

  if(y<0)x1=x;

  elsex2=x;

}while(fabs(y)>1e-6);

printf("x=%g\n",x);

17、以下程序得功能就是:

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

例如输入75,输出C。

请完成填空

#include〈stdio、h〉

main(){

int score;

scanf("__%d__”,&score);

switch(__score/10__){

 ﻩcase1:

case2:

case3:

case4:

case 5:

printf(“gradeE\n”);___break__;

 case6:

printf(“gradeD\n”);break;

ﻩcase7:

printf(“gradeC\n”);break;

ﻩcase8:

 printf(“gradeB\n”);break;

case9:

printf(“grade A\n”);break;

__default__:

printf("Errorinput!

\n”);

18、该程序功能:

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

#include<stdio、h>

#include〈math、h〉

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

voidmain(){ 

  int x; floatmax;

 __max=f

(1)__;

for(x=2;x<=10;x++)

ﻩ __if(max

  printf("%f\n",max);

19、程序功能:

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

#include〈stdio、h>

main(){

inta,b,s;

 scanf("%d%d”,&a,&b);

s=__a*a+b*b__;

 if(s〉100) printf(”%d”,__s/100__);

 else printf(”%d”,___a+b__);

}

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

#include

main(){

 intday,x1,x2;

 day=0;x1=1020;

while(__x1〉0__){

x2=__x1/2-2__; x1=x2;day++}

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

21、找出整数得所有因子

#include

main(){

inti,x;

scanf(“%d",&x);

i=1;

for( ;__i<=x/2__;){

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

 i++;

}

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

#include 

main(){

 intn=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=%d\n",n);

}

23、用100元换成1、2、5元得所有兑换方案.

#include 〈stdio、h〉

main() {

inti,j,k,l=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() {

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个球,且其中必须有白球,输出所有可能得方案。

#include

main(){

  int i,j,k;

for(i=0;i〈=3;i++)

  for(__j=1__;j〈=5;j++){

    k=8 – i– j;

 if (__k〉=0__)

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

 }

26、以下程序得功能就是:

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

它得9倍刚好就是它得反序数.反序数就是指整数各个位上得数字逆序所形成得整数。

请完成程序得填空。

#include

main(){

ﻩinti,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、以下程序完成两整数得交换。

#include〈stdio、h〉

main(){

inta,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〈stdio、h〉

main(){

int year ;

scanf(“%d”,&year);

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

=0__)printf(“yes");

 else printf(“No”);

}

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

#include<stdio、h>

#define N10

voidmain(){

int a[N];

 inti,j,t;

 printf(″input10numbers:

\n″); 

for (i=0;i<N;i++)

 scanf("%d”,__&a[i]__);

  printf("\n”);

for(j=0;j〈N-1;j++)

 for(i=0;i<__N—j-1__;i++)

 if(__a[i]>a[i+1]__)  {

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

 a[i+1]=t;

 }

printf(″thesortednumbers:

\n″);

for(i=0;i〈N;i++)

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

   printf(″\n″);

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

筛法素数得思想就是:

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

2、取未筛去数中最小得数,并声明它就是素数,同时筛去它及它得倍数.3、重复步骤2至筛中无数,得到所有得素数.

#include 

#defineM 100//范围

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

void main(){

     inti,j,a[N];ﻫ    a[0]= 2;ﻫ    for(i=1;i

         a[i]=2*i+1;ﻫ    for(i=1;i<N-1;i++) /*第二步筛选 */

    

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

当前位置:首页 > 表格模板 > 合同协议

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

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