C C++程序设计课后答案.docx

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

C C++程序设计课后答案.docx

《C C++程序设计课后答案.docx》由会员分享,可在线阅读,更多相关《C C++程序设计课后答案.docx(85页珍藏版)》请在冰点文库上搜索。

C C++程序设计课后答案.docx

CC++程序设计课后答案

第一章

一、选择题

1.C/C++规定,在一个源程序中,main()函数的位置()。

C

A.必须在最开始B.必须在最后

C.可以任意D.必须在系统调用的库函数的后面

2.以下()是C/C++合法的标识符。

A

A.char2B.@xC.intD.7Bw

3.下面的程序,对于输入:

2915,输出的结果是()。

B

#include"iostream.h"

voidmain()

{inta;

floatb;

cout<<"inputa,b:

"<

cin>>a>>b;

cout<<"a+b="<

}

A.2B.11C.26D.24

4.在VisualC++中,打开一个项目只需要打开对应的项目工作区文件即可,项目工作区文件的扩展名为()。

C

A.objB.dspC.dswD.cpp

5.下面关于C语言与C++关系的说法中,()是正确的。

D

A.C语言是C++的子集B.C++对C语言进行了改进

C.C++和C语言都是面向对象的D.C++继承了C语言的众多优点

6.设置一个断点的方法是将光标移到需要设置断点的行上,然后按()键。

A

A.F9B.F10C.F11D.F12

7.下面关于编译预处理命令的说法中,正确的是()。

C

A.一条文件包含命令能包含多个文件

B.文件包含命令不可以嵌套使用

C.编译预处理命令是在编译之前被处理的命令

D.编译预处理命令中的“#”可以省略

8.使用()可以设置数据输出的宽度。

B

A.setbase(intn)B.setw(intn)C.setfill(intn)D.setprecision(intn)

二、填空题

1.C/C++程序是由一个或多个函数组成的,但必须要有一个()函数,程序从这个函数开始运行的。

main()

2.C/C++字符集包括大、小写英文字母、()、()和包括运算符在内的特殊字符,程序中出现字符集以外的字符就是一个语法错误。

数字0-9、下划线

3.在VisualC++中编写程序时,除了注释中可以出现汉字,还能在()中使用汉字。

字符串

4.文件包含命令是以()开始的预处理命令,而宏定义命令是以()开始的预处理命令。

#include#define

5.在cout命令中,使用()格式控制符可以把一个数据以十六进制的形式输出。

hex

6.在C/C++中,头文件的扩展名一般为()。

.h

7.程序的错误一般分两种:

()和()。

前者是编译器可以发现的,而后者编译器则无法发现。

语法错误和逻辑错误

8.在VisualC++中调试程序时,可以使用快捷菜单中的()命令来插入断点和清除断点。

Insert/RemoveBreakpoint

9.C++源程序的扩展名为()。

.cpp

10.在VisualC++中,浏览当前项目中的所有源程序文件应在工作区的()选项卡。

Fileview

三、简答题

1.C++与C语言的主要区别是什么?

C++是C语言的超集。

C++中的类和对象部分,C语言没有,C++是面向对象的程序设计。

见教材P3。

2.C/C++程序由哪些部分组成?

C/C++程序是由一个或多个函数组成,其中必须要有一个main()函数。

在一个函数内,语句的执行是从上到下的。

3.判断下列符号中哪些不能作为C/C++的标识符:

a?

3a,a-b,f(x),AD,a.txt,D$,∏,double

能作为C/C++的标识符:

abc,b,s_2,Int

4.C/C++语言的书写格式有哪些特点?

C/C++程序书写形式自由。

一行可以写多条语句,一条语句也可以分别写在不同行上。

区别大小写字母。

5.何时在#include中使用尖括号,何时使用双引号?

用尖括号时,预处理程序在系统指定的文件夹中寻找文件;用双引号时,预处理程序首先在当前文件所在的文件目录中寻找文件,若找不到再到系统指定的文件夹中查找。

6.如果程序顺利地通过编译、连接,但是程序运行时结果有错误,最好的调试手段是什么?

最好的调试手段是设置断点,并让程序运行到该断点,然后在Debug窗口观察各变量的值,从中发现错误。

第二章

一、选择题

1.下列选项中可以作为C/C++的合法整型常量的是()。

B

A.1011BB.047C.x23D.20H

2.下列不合法的常量是()。

C

A.2.7B.1.0E+3C.3.5E-3.0D.3.4e-5

3.下列常量中不是字符型常量的是()。

D

A.'\x44'B.'\t'C.'\\'D."m"

4.下列选项中合法的变量名为()。

C

A.#defineB.floatC.a12_3D.sqrt(x)

5.下列不正确的变量定义方法是()。

D

A.inta,&b=a;B.floata,*b=&a;C.inta(4),b(0);D.inta=b=5;

6.下列运算符优先级按由高到低的顺序排列正确的是()。

C

A.*=、&&、!

=、%B.*=、%、&&、!

=C.%、!

=、&&、*=D.&&、!

=、%、=

7.已知x、y为整型,z为实型,ch为字符型,下列表达式中合法的是()。

C

A.z=(y+x)++B.x+y=zC.y=ch+xD.y=z%x

8.若有定义"intx;",则经过表达式"x=(float)7/3"运算后,x的值为()。

C

A.0B.2.3C.2D.1

9.若有定义"intx=13,y=5;",则表达式"x++,y+=2,x/y"的值为()。

B

10.设整型变量m、n、a、b、c、d均为数值1,表达式(m=a>b)&&(n=c>d)运算后,m、n的值分别是()。

B

A.0,0B.0,1C.1,0D.1,1

二、把下列数学表达式写成C/C++表达式。

1.x+y≠a+b :

(x+y)!

=(a+b).

2.(ln10+xy)3 :

pow(log(10)+x*y),3)

3.

sin(w*u)/(cos(45*180/3.14)+3*pow(x,y))

4.

exp(3)+sqrt(2*x+3*y)

5.

fabs(x-y)+(x+y)/(3*x)

6.

1/(1/r1+1/r2+1/r3)

三、根据下列条件写一个C/C++表达式。

1.a和b中有一个大于d:

a>d||b>d

2.将x、y中较大的值送给z:

z=x>y?

x:

y

3.将直角坐标系中点(x,y)表示在第3象限内:

x<0&&y<0

4.3个数据x、y、z能组成三角形:

x+y>z||y+z>z||x+z>y

5.将含有3位小数的实型变量x的值,四舍五入到百分位:

(int)(x*100+0.5)/100.

6.d是不大于100的偶数:

d>0&&d<=100&&d%2==0

7.x、y中至少有一个是5的倍数:

x%5==0||y%5==0

8.对n(>0)个人进行分班,每班k(>0)个人,最后不足k人也编一个班,问要编几个班:

n%k==0?

n/k:

n/k+1

四、编程题:

1编程序求半径为r、高为h的圆柱体的体积。

#include"iostream.h"

voidmain()

{floatr,h,v;

cin>>r>>h;

v=3.1416*r*r*h;

cout<

}

2.任意输入3个数据,输出它们的平均值和最小的一个数。

#include"iostream.h"

voidmain()

{

floata,b,c,ave,min;

cin>>a>>b>>c;

ave=(a+b+c)/3;

min=(a

a:

b;

min=(c

c:

min;

cout<<"ave="<

}

3.将字符串“12”转换为整数12并输出。

#include"iostream.h"

voidmain()

{

charc1='1',c2='2';

intx;

x=10*(c1-'0')+c2-'0';

cout<

}

4.编写程序,输入一个三位整数,反向输出该三位整数。

#include"iostream.h"

voidmain()

{intx;

intc1,c2,c3;

cin>>x;

c1=x/100;

c2=x/10%10;

c3=x%10;

x=100*c3+10*c2+c1;

cout<

}

5.输入一个年份,判断是否为闰年。

解1:

#include"iostream.h"

voidmain()

{intyear,x;

cin>>year;

x=year%400==0||year%4==0&&year%100!

=0;

x!

=0?

cout<

":

cout<

";

}

解2:

#include"iostream.h"

voidmain()

{intyear;

charx;

cin>>year;

x=(year%400==0||year%4==0&&year%100!

=0)?

'y':

'n';

cout<

}

6.编写程序,求函数

的值,要求输入x,程序就输入y的值

#include"iostream.h"

#include"math.h"

voidmain()

{doublex,y;

cin>>x;

y=log(x*x+3)/log(10)+3.14/2*cos(40*3.14/180);

cout<

}

第三章

一、选择题

1.为了避免嵌套的ifelse语句的二义性,C/C++语言规定else总是与()组成配对关系。

C

A.缩排位置相同的ifB.在其之前未配对的if

C.在其之前未配对的最近的ifD.同一行上的if

2.设有函数关系为

,下面()选项不能正确表示上述关系。

D

A.if(x<=0)B.y=1;

if(x<0)y=-1;if(x<=0)

elsey=0;if(x<0)y=-1;

elsey=1;elsey=0;

C.y=-1;D.y=-1;

if(x>=0)if(x!

=0)

if(x==0)y=0;if(x>0)y=1;

elsey=1;elsey=0;

3.若有变量定义“inta=7;”,则下列语句组对应的输出结果是()。

D(该答案后还应附“其他值”)

switch(a%5)

{case0:

cout<

case1:

cout<<++a;

case2:

cout<

case3:

cout<<--a;

default:

cout<<”其他值”;

}

A.其他值B.5C.7D.75其他值

4.以下程序段中循环体语句“k++”执行的次数为()。

C

for(k=0,m=4;m;m-=2)

for(n=1;n<4;n++)

k++;

A.16B.12C.6D.8

5.执行下面程序段后,变量k的值为()。

B

for(k=0,m=1;m<4;m++)

{

for(n=1;n<5;n++)

if(m*n%3==0)continue;

k++;

}

A.1B.3C.6D.12

6.下面叙述中正确的是()。

C

A.for循环只能用于循环次数已经确定的情况

B.for循环同do-while语句一样,先执行循环体再判断

C.不管哪种形式的循环语句,都可以从循环体内转到循环体外

D.for循环体内不可以出现while语句

7.下面语句中不是死循环的是().A

A.inti=100;B.inti,sum(0);

while

(1)for(i=1;;i++)sum++;

{

i=i%100+1;

if(i==20)break;

}

C.intk=0;D.ints=3379

do{while(s++%2+3%2)s++

++k;

}while(k>=0);

8.若输入字符串“ABC”,下面程序段的输出为()。

C

charc;

while(cin>>c,c!

=’\n’)

cou<

A.222B.CDEC.676869D.333

9.以下程序段的输出结果是()。

B

A.45B.457810C.69D.678910

二、阅读程序,写出程序运行结果。

(1)试说明下列语句组的功能:

while

(1)

{

cin>>m>>n;

if(m>0&&n>0)break;

}

功能:

输入两个正整数给m和n。

(2)若有变量定于“intcount=0,m=1;”,试写出下列语句组对应的输出结果。

do

{

if(m%5)continue;

count++;

while(++m<=100);

}

结果:

20

(3)#include”iostream.h”

voidmain()

{

intm,n(4),k;

longintt,s=0;

for(m=1;m<=n;m++)

{

for(t=1,k=1;k<=m;k++)

t*=m;

s+=t ;

}

cout<<”s=”<

}

输出为:

s=288

(4)若输入:

“AB20dfz5”,则下列程序输出结果是什么?

#include”iostream.h”

voidmain()

{

charc;

while(cin>>c,c!

=’.’)

{

if(c>=’a’&&c<’z’)

c+=1;

if(c==’z’)c=’a’;

cout<

}

}

输出为:

AB20ega5

(5)#include”iostream.h”

#include”iomanip.h”

voidmain()

{

inti,j;

for(i=4;i>=1;i--)

{

cout<

for(j=1;j<=4-i;j++)

cout<<’*’<<’‘;

cout<

}

}

输出:

*

**

***

三、程序填空题:

(1)下面的程序是检查输入的算术表达式中括号是否配对,并显示相应的结果。

本程序边输入,边统计,以输入‘?

’作为表达式输入结束,然后显示结果。

#include”iostream.h”

voidmain()

{

intcount(0);

charc;

cout<<”请输入表达式,以输入?

表示结束”<

while(cin>>c,c!

=’?

’)

{

if(c==’(‘)

count++;

elseif()

count--;

}

if()

cout<<”左右括号配对”<

elseif()

cout<<”左括号多于右括号”<

else

cout<<”右括号多于左括号”<

}

填空结果:

c==')'

count==0

count>0

count

(2)用辗转相减法求两个正整数m和n的最大公约数。

#include”iostream.h”

voidmain()

{

intm,n;;

while(m-n!

=0)

if(m>n);

else;

cout<<”gcd(m,n)=”<

}

填空结果:

cin>>m>>n

m=m-n

n=n-m

(3)求100的阶乘的末尾包含多少个0?

程序通过找出1-100之间的所有整数中包含5这个因子的个数来求解。

如100=5*5*4含5的因子个数为2,在求阶乘过程中会在末尾产生2个0。

#include"iostream.h"

voidmain()

{

intm,n,k=0;

for(m=5;m<100;)

{;

while(n%5==0)

{

k++;

;

}

;

}

cout<<”100!

include”<

}

填空结果:

n=m

n=n/5

m=m+5

四、编程题:

1.编一程序,实现下列分段函数的求值:

#include"iostream.h"

#include"math.h"

voidmain()

{floatx,y;

cout<<"inputx:

"<

cin>>x;

if(x<5)

y=fabs(x);

elseif(x<20)

y=3*x*x-2*x+1;

else

y=x/5;

cout<<"x="<

}

2.按工资的高低纳税,已知不同工资s的税率p如下:

s<1000p=0%

1000≤s<2000p=5%

2000≤s<3000p=8%

3000≤s<5000p=10%

5000≤sp=15%

编一程序,输入工资数,求纳税款和实得工资数。

#include"iostream.h"

voidmain()

{

floats,p,t,w;

cout<<"inputs:

"<

cin>>s;

switch(int(s)/1000)

{case0:

p=0;break;

case1:

p=0.05;break;

case2:

p=0.08;break;

case3:

case4:

p=0.1;break;

default:

p=0.15;break;

}

t=s*p;

w=s-t;

cout<<"纳税款="<

}

3.编一程序,求100~1000之间有多少个整数,其各个数位数字之和等于5?

#include"iostream.h"

voidmain()

{intm,count=0;

for(m=100;m<1000;m++)

{if(m%10+m/10%10+m/100==5)

count++;

}

cout<<"count="<

}

4.鸡兔共笼有30个头,90只脚,求鸡兔各有多少?

#include"iostream.h"

voidmain()

{intm,n;

for(m=0;m<=30;m++)

for(n=0;n<=30;n++)

if(m*2+n*4==90&&m+n==30)

cout<<"鸡:

"<

"<

}

5.利用格里高利公式求

的近似值,公式为:

/4≈1-1/3+1/5-1/7+....,要求直到最后一项小于10-4为止。

#include"iostream.h"

voidmain()

{doublepi=1.0;

intn,t=1;

for(n=1;1.0/(2*n+1)>1e-6;n++)

{t=(-1)*t;

pi=pi+t/(2.0*n+1.0);

}

pi=4*pi;

cout<<"pi="<

}

法二:

#include"iostream.h"

voidmain()

{floatpi=0.0;

intn,t=-1;

for(n=1;1.0/n>1e-6;n=n+2)

{t=(-1)*t;

pi=pi+1.0*t/n;

}

pi=4*pi;

cout<<"pi="<

}

6.编一程序,求出方程x2+2x=y3(其中1≤x≤100,1≤y≤100)的所有整数解。

#include"iostream.h"

voidmain()

{intx,y;

for(x=1;x<=100;x++)

for(y=1;y<=100;y++)

if(x*x+2*x==y*y*y)

cout<<"x="<

}

7.输入一个英文句子(以句号结束),要求将句中单词分行打印,试编写符合上述要求的程序。

#include"iostream.h"

#include"stdio.h"

voidmain()

{charch;

while((ch=getchar())!

='.')

if(ch=='')

cout<

else

cout<

}

8.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,求1000以内满足该条件的数。

#include"iostream.h"

#include"math.h"

voidmain()

{intm,k1,k2;

for(m=0;m<=1000;m++)

{k1=sqrt(m+100);

k2=sqrt(m+100+168);

if(k1*k1==m+100&&k2*k2==m+100+168)

cout<

}

}

9.用二分法求x9-4x5-5x3-270000=0在(0,10)之间的根,要求精度达到0.00001

二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,

依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。

#include"iostream.h"

#include"math.h"

voidmain()

{floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;

do{x=(x1+x2)/2;

y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;

y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;

if(y1*y>0)

x1=x;

else

x2=x;

}while(fabs(x2-x1)>eps);

cout<

}

第四章

一、选择题

1.下列数组定义语句中,正确的是()。

C

A.inta[3,4];B.intn=3,m=4,inta[n][m];

C.inta[3][4];D.inta(3)(4);

2.以下不能对二维数组a初始化的语句是()。

A

A.inta[2][]={{1},{2}};B.inta[2][3]={1,2,3,4,5,6};

C.inta[2][3]={1};D.inta[2][3]={{1},{2}};

3.要使字符数组str中存放串”Lucky”并能正确处理,下列正确的定义语句是()。

C

A.charstr[]={‘L’,’u’,’c’,’k’,’y’};B.charstr[5]={‘L’,’

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

当前位置:首页 > 自然科学 > 物理

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

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