大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx

上传人:b****1 文档编号:2464421 上传时间:2023-05-03 格式:DOCX 页数:25 大小:35.36KB
下载 相关 举报
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第1页
第1页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第2页
第2页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第3页
第3页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第4页
第4页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第5页
第5页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第6页
第6页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第7页
第7页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第8页
第8页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第9页
第9页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第10页
第10页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第11页
第11页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第12页
第12页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第13页
第13页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第14页
第14页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第15页
第15页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第16页
第16页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第17页
第17页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第18页
第18页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第19页
第19页 / 共25页
大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx

《大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx》由会员分享,可在线阅读,更多相关《大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx(25页珍藏版)》请在冰点文库上搜索。

大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编.docx

大学CC++语言程序设计课后习题答案18电子工业出版社阳小华马淑萍主编

习题答案

习题1(参考答案)

1.程序与算法的概念及二者的区别是什么?

程序:

为了实现特定目标或解决特定问题而用计算机语言偏写的指令序列,它由算法和数据结构组成。

算法:

(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。

通俗地讲,就是计算机解题的步骤。

算法与程序的区别:

计算机程序是算法的一个实例,同一个算法可以用不同的计算机语言来表达。

2.简述程序设计语言发展的过程

程序设计语言经过最初的机器代码到今天接近自然语言的表达,经过了四代的演变。

一般认为机器语言是第一代,符号语言即汇编语言为第二代,面向过程的高级语言为第三代,面对象的编程语言为第四代。

3.简述高级程序设计语言中面向过程与面向对象的概念。

“面向过程”是一种以过程为中心的编程思想。

首先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步地实现,使用的时候依次调用函数即可。

一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。

“面向对象”是一种以事物为中心的编程思想。

面向对象的方法主要是将事物对象化,对象包括属性与行为。

面向过程与面向对象的区别:

在面向过程的程序设计中,程序员把精力放在计算机具体执行操作的过程上,编程关注的是如何使用函数去实现既定的功能;而在面向对象的程序设计中,技术人员将注意力集中在对象上,把对象看做程序运行时的基本成分。

编程关注的是如何把相关的功能(包括函数和数据)有组织地捆绑到一个对象身上。

4.C语言程序的特点是什么?

(1)C语言非常紧凑、简洁,使用方便、灵活,有32个关键字,有9种流程控制语句。

(2)C语言运算符丰富,共有45个标准运算符,具有很强的表达式功能,同一功能表达式往往可以采用多种形式来实现。

(3)数据类型丰富。

C语言的数据类型有整型、实型、字符型、数组类型、结构类型、共用类型和指针类型,而且还可以用它们来组成更复杂的数据结构,加之C语言提供了功能强大的控制结构,因而使用C语言能非常方便地进行结构化和模块化程序设计,适合于大型程序的编写、调试。

(4)用C语言可直接访问物理地址,能进行二进制位运算等操作,即可直接同机器硬件打交道。

它具有“高级语言”和“低级语言”的双重特征,既能用于系统软件程序设计,又能用于通用软件程序设计。

(5)C语言生成的目标代码质量高、程序执行速度快。

一般只比用汇编语言生成的目标代码的效率低20%左右。

(6)可移植性好。

5.源程序执行过程中,有哪些步骤?

C语言源程序的执行要经过:

编辑、编译、链接、运行等步骤。

6.简述MATLAB的主要应用领域有哪些?

MATLAB软件是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司开发的商业数学软件,主要包括MATLAB和Simulink两大部分。

它和Mathematica、Maple并称为三大数学软件。

MATLAB软件可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域,代表了当今国际科学计算软件的先进水平。

习题2(参考答案)

一、选择题

勘误:

3.以下定义语句中正确的是()。

A.inta=b=0;B.charA=65+1;b='b';

C.floata=1,*b=&a,*c=&b;D.doublea=0.0,b=1.1;

4.已知intx=10,y=3,表达式x/y的值是()。

15.在C语言中提供的合法的关键字是()。

A.switchB.cherC.CaseD.default

26.下列不可作为C语言赋值语句的是()。

A.x=3,y=5;B.a=b=6;C.i--;D.y=int(x);

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

D

C

B

B

C

B

A

D

11

12

13

14

15

16

17

18

19

20

C

C

D

A

D

B

C

A

D

C

21

22

23

24

25

26

27

28

29

30

B,c

D

A

D

B

D

C

C

A

D

31

32

33

34

35

36

37

38

39

40

C

D

B

C

A

D

B

C

D

A

41

42

43

44

45

46

47

48

49

50

B

D

B

B

A

C

B

A

D

D

二、填空题

1.

255

2.

a/(b*c)

3.

20

4.

1.0

5.

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

1:

0

6.

x<-5||x>5

7.

97或字符‘a’

8.

0

9.

2.5

10.

3.5

11.

3

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.

8

15.

2

 

习题3(参考答案)

1.编程实现:

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

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

#include

main( )

{charc1,c2,c3;

c1=getchar();c2=getchar();c3=getchar();

putchar(c3);putchar(c2);putchar(c1);

}

2.编程实现:

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

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

#include

main( )

{charc1,c2,c3;

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得到正确数值的原因是:

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

 

习题4答案

勘误:

6.若有以下定义:

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

选择题

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

阅读程序,写结果

7.128.139.*0**2*

10

if(s>=90)

m=4;

elseif(s>=80)

m=3;

elseif(s>=70)

m=2;

elseif(s>=60)

m=1;

else

m=0;

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

#include

main()

{inta,b,c,d,t;

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

if(a

if(a

if(a

if(b

if(b

if(c

printf("%4d%4d%4d%4d",a,b,c,d);

}

 

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

源程序:

#include

#include"math.h"

main()

{floata,b,c,s,area;

scanf("%f%f%f",&a,&b,&c);

if((a+b>c)&&(a+c>b)&&(b+c>a)&&(fabs(a-b)

{

if(a==b&&b==c)

printf("等边三角形");

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

printf("等腰三角形");

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

printf("直角三角形");

elseprintf("一般三角形");

}

elseprintf("不能组成三角形");

}

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

#include

main()

{intt,flag;

scanf("%d",&t);

if(t%3==0&&t%4==0&&t%5==0)

printf("YES");

else

printf("NO");

}

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

判别闰年的条件是:

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

#include

main()

{intyear;

printf("inputtheyear:

");

scanf("%d",&year);

if(year%4==0&&year%100!

=0||year%400==0)

printf("%disleapyear\n",year);

else

printf("%dis'tleapyear\n",year);

}

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

请分析程序填空。

x

y

x>10

3x+10

1

x(x+2)

x≤1

x2

#include

main()

{doublex,y;

scanf("%lf",&x);

if(x>10)y=3*x+10;

elseif(x>1)y=x*x+2*x;

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

printf("%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.利用公式

公式求π。

#include

#include

main()

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

printf("piis%lf",4*pi);

}

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

最大公约数:

用大数整除小数,得到余数1;再用小数整除余数1,得到余数2;再用余数1整除余数2,……直到余数为0。

最小公倍数:

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

#include

#include

main()

{intm,n,r,x,y;

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

x=m;

y=n;

if(m

while((r=m%n)!

=0)

{m=n;

n=r;

}

printf("themaxcommondivisoris%d,themincommonmultipleis%d",n,x*y/n);

}

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

#include

main()

{inti,j,k;

printf("\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)完数数目。

#include

main()

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

for(a=1;a<=1000;a++)

{m=0;

for(i=1;i<=a/2;i++)

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

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

}

printf("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.编写程序,求三个数的最小公倍数。

#include

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!

=0)

{j=j+1;

t=j%x;

m=j%y;

n=j%z;

}

returnj;

}

main()

{

intx1,x2,x3,j;

printf("Inputx1x2x3:

");

scanf("%d%d%d",&x1,&x2,&x3);

printf("x1=%d,x2=%d,x3=%d\n",x1,x2,x3);

j=fun(x1,x2,x3);

printf("Theminimalcommonmultipleis:

%d\n",j);

}

7.已知:

,编写程序,求S的值。

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

1.533852。

#include

#include

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;

}

main()

{

printf("%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中则输出**。

#include

main()

{

charc,a[10]="abcdefghi";

inttop,bot,mid;

printf("inputc:

\n");

scanf("%c",&c);

printf("c=\'%c\'\n",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项的形式输出。

#include

#include

main()

{

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);

for(i=1;i<=20;i++)

{

printf("%6d",x[i]);

if(i%4==0)printf("\n");

}

}

3.编写程序:

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

例如:

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

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

“135”。

#include

#include

voidfun(char*s,chart[])

{

inti,j=0;

for(i=1;i

if(i%2==1&&s[i]%2!

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

t[j]='\0';

}

main()

{

chars[100],t[100];

printf("\nPleaseenterstrings:

");

scanf("%s",s);

fun(s,t);

printf("\nTheresultis:

%s\n",t);

}

4.编写程序:

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

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

求出[1,700]之间的:

①最大的自同构数;②自同构数数目。

#include

main()

{

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

staticinta[50];

count=0;

for(i=1;i<700;i++)

{

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++;

printf("%5d",i);

}

}

printf("\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)中的最大值。

#include

main()

{

intn;

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

}

printf("\nmax=%.0lf",max);

}

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

598325

6.编写程序:

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

#include

main()

{

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

f

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

当前位置:首页 > 求职职场 > 简历

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

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