大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx

上传人:b****6 文档编号:21879807 上传时间:2023-02-01 格式:DOCX 页数:37 大小:43.28KB
下载 相关 举报
大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx_第1页
第1页 / 共37页
大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx_第2页
第2页 / 共37页
大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx_第3页
第3页 / 共37页
大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx_第4页
第4页 / 共37页
大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx

《大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。

大学cc++语言程序设计课后答案 阳小华主编Word格式文档下载.docx

40.下列变量定义中合法的是()。

A.float_a=1-.1e-1;

B.doubleb=1+5e2.5;

C.longdo=0xfdaL;

D.float2_and=1-e-3;

44.以下选项中不属于字符常量的是()。

A.'

C'

B."

C"

C.'

\xCC0'

D.'

\072'

46题与17题重了

47题A项选择:

a==1后面加分号就合法了,所以只有“B”项合法

1

2

3

4

5

6

7

8

9

10

C

A

BD

B

D

11

12

13

14

15

16

17

18

19

20

AD

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

BC

二、填空题

1.

255

2.

a/(b*c)

3.

4.

1.0

5.

x==0或(x==0)?

1:

6.

x<

-5||x>

7.

97或字符‘a’

8.

9.

2.5

10.

3.5

11.

12.

9,11,9,10

13.

a+=a;

24,a-=2;

10,a*=2+3;

60,a%=(n%=2);

0,a/=a+a;

0,a+=a-=a*=a;

0

14.

15.

 

习题3(参考答案)

1.编程实现:

用字符输入/输出函数输入3个字符,将它们反向输出。

参考代码(尽量运用本章所学知识)

#include<

stdio.h>

main( 

{charc1,c2,c3;

c1=getchar();

c2=getchar();

c3=getchar();

putchar(c3);

putchar(c2);

putchar(c1);

}

2.编程实现:

用格式输入/输出函数输入3个字符,将它们反向输出并输出它们的ASCII值。

scanf("

%c%c%c"

&

c1,&

c2,&

c3) 

printf("

%c%d,%c%d,%c%d"

c3,c3,c2,c2,c1,c1) 

3.变量k为float类型,调用函数:

scanf("

%d"

k);

不能使变量k得到正确数值的原因是:

中的格式控制类型与变量k的定义类型不匹配,应将%d改为%f.

习题4答案

6.若有以下定义:

中B答案的switch((int)x)

选择题

1.B2.A3.B4.B5.C6.B

阅读程序,写结果

7.128.139.*0**2*

if(s>

=90)

m=4;

elseif(s>

=80)

m=3;

=70)

m=2;

=60)

m=1;

else

m=0;

11有4个整数a,b,c,d,编写程序按大小输出

#include<

main()

{inta,b,c,d,t;

%d%d%d%d"

&

a,&

b,&

c,&

d);

if(a<

b){t=a;

a=b;

b=t;

c){t=a;

a=c;

c=t;

d){t=a;

a=d;

d=t;

if(b<

c){t=b;

b=c;

d){t=b;

b=d;

if(c<

d){t=c;

c=d;

printf("

%4d%4d%4d%4d"

a,b,c,d);

12据所输入的3条边长值,判断它们能否构成三角形,如能构成,再判断是等腰三角形、直角三角形还是一般三角形。

源程序:

#include"

math.h"

{floata,b,c,s,area;

%f%f%f"

c);

if((a+b>

c)&

&

(a+c>

b)&

(b+c>

a)&

(fabs(a-b)<

(fabs(a-c)<

(fabs(b-c)<

a))

{

if(a==b&

b==c)

等边三角形"

);

elseif(a==b||b==c||a==c)

等腰三角形"

elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))

直角三角形"

elseprintf("

一般三角形"

}

elseprintf("

不能组成三角形"

13输入一个整数,如果能被3,4,5同时整除,则输出“YES”,否则输出“NO”。

{intt,flag;

scanf("

%d"

t);

if(t%3==0&

t%4==0&

t%5==0)

YES"

else

NO"

14年号,判断是否为闰年。

判别闰年的条件是:

能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。

{intyear;

inputtheyear:

"

year);

if(year%4==0&

year%100!

=0||year%400==0)

%disleapyear\n"

year);

%dis'

tleapyear\n"

15下面程序根据以下函数关系,对输入的每个x值,计算出y值。

请分析程序填空。

x

y

x>

3x+10

1<

x≤10

x(x+2)

x≤1

x2

{doublex,y;

%lf"

x);

if(x>

10)y=3*x+10;

elseif(x>

1)y=x*x+2*x;

elsey=x*x-3*x+10;

%lf\n"

y);

习题5答案

1.A2.A3.D4.C5.D

6.A7.D8.D9.B10.C

11.1-212.2013.***14.2,4,6,8,10,

15.46.00000016.852

17.利用公式

公式求π。

math.h>

{doublepi=0,i=1,j=1,k;

do{

k=i/j;

pi=pi+k;

i=-i;

j=j+2;

}while(fabs(k)>

1.0e-6);

piis%lf"

4*pi);

18.求两个数的最大公约数和最小公倍数。

最大公约数:

用大数整除小数,得到余数1;

再用小数整除余数1,得到余数2;

再用余数1整除余数2,……直到余数为0。

最小公倍数:

两数相乘再除以最大公约数。

{intm,n,r,x,y;

%d%d"

m,&

n);

x=m;

y=n;

if(m<

n){r=m;

m=n;

n=r;

while((r=m%n)!

=0)

{m=n;

n=r;

themaxcommondivisoris%d,themincommonmultipleis%d"

n,x*y/n);

19.从三个红球、五个白球、六个黑球中任意取出六个球,且其中必须有白球,编程输出所有可能的组合。

{inti,j,k;

\nhongbaihei\n"

for(i=0;

i<

=3;

i++)

for(j=1;

j<

=5;

j++)

{k=6-i-j;

if(k>

=0)printf("

%3d%3d%3d\n"

i,j,k);

20.如果一个数等于其所有真因子(不包括该数本身)之和,则该数为完数。

例如:

6的真因子有1、2、3,且6=1+2+3,故6为完数。

求[2,1000]内的:

(1)最大的完数;

(2)完数数目。

{inta,i,m,number=0,max=0;

for(a=1;

a<

=1000;

a++)

{m=0;

for(i=1;

=a/2;

if(a%i==0)m=m+i;

if(m==a){number++,max=m;

numberis%d,maxis%d\n"

number,max);

第6章函数与编译预处理

1.C2.A3.A4.D5.A6.A7.C

8.B9.B10.C11.B12.B13.A14.D

15.C16.C17.C18.C19.A20.D21.B

22.B23.C24.A25.C26.D27.C28.D

二、写出下列程序的运行结果

1.72.123.94.8,175.56

6.8,87.369128.109.7

5

10.645411.30012.613.2

三、编程题(以下各题均用函数实现)

1.超级素数:

一个素数依次从低位去掉一位、两位……若所得的数依然是素数,如239就是超级素数。

试求100~9999之内:

(1)超级素数的个数;

(2)所有超级素数之和;

(3)最大的超级素数。

解:

(1)spn=30

(2)sps=10012(3)spm=7393

2.其平方等于某两个整数平方和的正整数称为弦数,例如因52=32+42,故5是弦数,求(121,130)这间的弦数个数以及最大和最小的弦数。

n=4max=130min=122

3.有一个8层灯塔,每层所点灯数都等于该层上一层的两倍,一共有765盏灯,求塔底的灯数。

384

4.编写程序,求

的结果。

4037913

5.已知y=

,其中,f(x,n)=1-x2/2!

+x4/4!

-…(-1)nx2n/(2n)!

(n≥0),当x=5.6,n=7时,求y的值。

-0.074521

6.编写程序,求三个数的最小公倍数。

intfun(intx,inty,intz)

{intj,t,m,n;

j=1;

t=j%x;

m=j%y;

n=j%z;

while(t!

=0||m!

=0||n!

{j=j+1;

m=j%y;

n=j%z;

returnj;

{

intx1,x2,x3,j;

Inputx1x2x3:

"

%d%d%d"

x1,&

x2,&

x3);

x1=%d,x2=%d,x3=%d\n"

x1,x2,x3);

j=fun(x1,x2,x3);

Theminimalcommonmultipleis:

%d\n"

j);

7.已知:

,编写程序,求S的值。

例如,当k为10时,S的值应为:

1.533852。

doublefun(intk)

{

intn;

doubles,w,p,q;

n=1;

s=1.0;

while(n<

=k)

{w=2.0*n;

p=w-1.0;

q=w+1.0;

s=s*w*w/p/q;

n++;

returns;

%f\n"

fun(10));

第7章数组

1.C2.A3.C4.D5.D6.C7.A

8.A9.A10.B11.A12.D13.D14.C

15.C16.D17.D18.D19.B20.A21.B

22.B23.B24.C25.D26.D27.D28.D29.C

1.abcdabcdabcdabcdbcdabcdabcdcdabcdd2.4

3.1,2,3,8,7,6,5,4,9,10,4.9,8

三、程序填空

1.

(1)k

(2)-1

2.

(1)n%base

(2)[d]

3.

(1)x[i++]或y[i++]

(2)i++

4.

(1)‘a’+h-10

(2)s[i]=(n<

9)?

n+’0’:

’a’+n-10

5.

(1)s[i]!

=’\0’

(2)s[j++]=s[i]

6.

(1)s[j]!

=’\0’&

t[k]!

=’\0’

(2)t[k]==’\0’

四、编程题(每个程序的数据结构均用数组)

1.编写程序:

从键盘上输入一个字符,用折半查找法找出该字符在已排序的字符串a中的位置。

若该字符不在a中则输出**。

charc,a[10]="

abcdefghi"

inttop,bot,mid;

inputc:

\n"

%c"

c=\'

%c\'

c);

for(top=0,bot=10;

top<

=bot;

mid=(top+bot)/2;

if(c==a[mid])

{

printf("

Thepositionis%d\n"

mid+1);

break;

}

elseif(c>

a[mid])top=mid+1;

elsebot=mid-1;

if(top>

bot)printf("

*"

\n);

2.编写程序:

输出某数列的前20项,该数列第1、2项分别为0和1,以后每个奇数编号的项是前两项之和,每个偶数编号的项是前两项之差的绝对值。

生成的20个数存在一维数组x中,并按每行4项的形式输出。

intx[21],i;

x[1]=0,x[2]=1;

i=3;

do

x[i]=x[i-2]+x[i-1];

x[i+1]=fabs((double)(x[i-1]-x[i]));

i=i+2;

}while(i<

=20);

=20;

printf("

%6d"

x[i]);

if(i%4==0)printf("

3.编写程序:

将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

若s所指字符串中的内容为:

“ABCDEFG12345”,则最后t所指的数组中的内容应是:

“135”。

string.h>

voidfun(char*s,chart[])

inti,j=0;

strlen(s);

i+=2)

if(i%2==1&

s[i]%2!

=0)t[j++]=s[i];

t[j]='

\0'

chars[100],t[100];

\nPleaseenterstrings:

%s"

s);

fun(s,t);

\nTheresultis:

%s\n"

t);

4.编写程序:

一个自然数平方的末几位与该数相同时,称此数为自同构数。

例如,因252=625,故25为自同构数。

求出[1,700]之间的:

①最大的自同构数;

②自同构数数目。

inti,n,ns,flag,count,r,rs;

staticinta[50];

count=0;

700;

n=i;

ns=i*i;

flag=1;

while(n>

0&

flag)

r=n%10;

n=n/10;

rs=ns%10;

ns=ns/10;

if(rs!

=r)flag=0;

if(flag)

a[count]=i;

count++;

%5d"

i);

\ncount=%d,max=%d\n"

count,a[count-1]);

(1)最大的自同构数:

625

(2)自同构数数目:

7个(1、5、6、25、76、376、625)

5.已知:

f(0)=f

(1)=1

f

(2)=0

f(n)=f(n-1)-2*f(n-2)+f(n-3)(n>

2)

编写程序:

求f(0)~f(50)中的最大值。

doublef[181],max=0;

f[0]=f[1]=1;

f[2]=0;

for(n=3;

n<

=50;

n++)

f[n]=f[n-1]-2*f[n-2]+f[n-3];

if(max<

f[n])max=f[n];

\nmax=%.0lf"

max);

f(0)到f(50)中的最大值:

598325

6.编写程序:

自然数1~1000按顺时针围成一圈,首先取出1,然后顺时针方向按步长L=50取数(已取出的数不再参加计数),直至所有的数均取完为止,最后一个取出的数是多少?

inta[1001],i,s=0,n=1;

i+

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

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

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

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