C++上前3章讲义及习题指导精简版.docx

上传人:b****2 文档编号:2449576 上传时间:2023-05-03 格式:DOCX 页数:63 大小:37.93KB
下载 相关 举报
C++上前3章讲义及习题指导精简版.docx_第1页
第1页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第2页
第2页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第3页
第3页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第4页
第4页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第5页
第5页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第6页
第6页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第7页
第7页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第8页
第8页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第9页
第9页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第10页
第10页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第11页
第11页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第12页
第12页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第13页
第13页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第14页
第14页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第15页
第15页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第16页
第16页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第17页
第17页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第18页
第18页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第19页
第19页 / 共63页
C++上前3章讲义及习题指导精简版.docx_第20页
第20页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++上前3章讲义及习题指导精简版.docx

《C++上前3章讲义及习题指导精简版.docx》由会员分享,可在线阅读,更多相关《C++上前3章讲义及习题指导精简版.docx(63页珍藏版)》请在冰点文库上搜索。

C++上前3章讲义及习题指导精简版.docx

C++上前3章讲义及习题指导精简版

1.11.C++概述

 

例题5:

C++的合法注释是()。

A./*ThisisaCprogram/* B.//ThisisaCprogram

C.“ThisisaCprogram”D.//ThisisaCprogram//

答案:

B

分析:

单行注释常采用“//”,多行注释采用“/*”和“*/”。

单行注释也可采用“/*”和“*/”,但答案A书写格式错误,不能选答案A。

注释和字符串的区别,双引号内的字符为字符串。

不能选答案C。

单行注释不需要结束符“//”,如果有,只能作为注释的一部分存在。

也不能选答案D。

 

例题6:

下面标识符中正确的是()。

A._abcB.3abC.intD.+ab

答案:

A 

分析:

C++的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。

答案B第一个字符为数字不能选B。

标识符不能为关键字,不能选答案C。

答案D第一个字符不是字母或下划线,也不能选。

例题7:

分析下列该程序的错误。

输入数据格式为:

2,5(回车)。

main()

{intsum=0;

inta,b;

cout<<"inputa,b:

";

cin>>a>>b;

sum=a+b;

cout<

}

本程序把输入的两个数据进行累加并输出结果。

输入数据格式为:

25。

正确程序:

#include//编译预处理命令,以“#”开头。

把系统已经定义好的输入

//输出功能包含到本程序中。

usingnamespacestd;//使用std名字空间

intmain()//程序的主函数

{//主函数开始

intsum=0;//定义一个变量sum存放累加结果,并且赋初值为0

inta,b;//定义两个变量,保存输入值

cout<<"inputa,b:

";//提示输入

cin>>a>>b;//使用基本输入设备cin输入两个变量值

sum=a+b;//进行累加,结果保存到sum变量

cout<

}

分析:

(1)没有使用编译预处理命令:

#include。

iostream是系统定义的一个头文件(h-head),设置了C++的I/O环境。

cin、cout为基本输入、输出设备,定义在iostream.h头文件中。

(2)没有main()函数的返回类型,系统提示警告。

一般main函数返回整型

(3)输入数据时没有使用空格分隔。

输入运算符“>>”要求输入的多个数据用空格分隔。

补充习题

2.下列标识符中,(B)是合法的。

(identifier能唯一标识一个单元或函数的名字)

A.gotoB.StudentC.123D.kld

4.C++语言中语句的结束符是()。

A.,B.;C.。

D.、

6.写一个程序输出Hello,C++!

7.编译下列程序,改正错误信息,分析输出结果。

#include

usingnamespacestd;

intmain()

{intx,y;

cout<<"inputx:

"<

cin>>x;

y=x*x;

cout<<"y=”<

return0;

}

10.给出下列程序的运行结果。

#include

usingnamespacestd;

intmain()

{

inta

(2),b(3),c(4);//参考变量的初始化等价于inta=2,…

cout<<"c1="<

c=a+b;

cout<<"c2="<

}

 

基本数据类型与数值表达式

例题5:

已知a=4,b=6,c=8,d=9,则“(a++,b>a++&&c>d)?

++d:

a

A.9B.6C.8D.0

答案:

D

分析:

此题是考察“++”运算符、逗号运算符、条件运算符及它们运算优先级的综合题,根据这些运算符的运算规则,得出表达式的运算结果。

例题7:

已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<’B’&&!

y)的值是()。

A.0B.语法错C.1D.“假”

分析:

根据C++语言中运算符优先级的高低,“!

”运算符最高,关系运算符高于逻辑运算符。

则上面的表达式转换为:

1&&1&&1,结果为1。

答案:

C。

 

2.

例题10:

设所有变量均为整型,则表达式(e=2,f=5,e++,f++,e+f)的值为____。

答案:

9

分析:

逗号运算符是是将两个或多个表达式组合成一个表达式的运算符。

求解时从左至右依次计算每个表达式的值,整个表达式的值就是最右边的表达式的值。

本题的答案为9。

例题11:

已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-‘4’的值为____。

答案:

e

分析:

C++语言中,对字符数据进行算术运算,实际上就是对字符的ASCII码进行运算。

以字符形式输出时,再将ASCII码转换为相应的字符输出。

本题表达式为ch=97+8-4=101,101相应的ASCII为字符e。

4.选择题

(1)下列数据类型不是C++语言基本数据类型的是()。

A.字符型B.整型C.实型D.数组

答案:

D

(3)下列字符列中,可作为C++语言程序自定义标识符是()。

A.switchB.fileC.breakD.do

答案:

B

(5)下列字符列中,可以作为“字符串常量”的是()。

A.ABCB.″xyz″C.′uvw′D.′a′

答案:

B

 

(6)设变量m,n,a,b,c,d均为0,执行(m=a==b)||(n=c==d)后,m,n的值是()。

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

答案:

C

(8)在C++语言中,自定义的标识符()。

A.能使用关键字并且不区分大小写B.不能使用关键字并且不区分大小写

C.能使用关键字并且区分大小写D.不能使用关键字并且区分大小写

答案:

D

 

(9)设有代码“inta=5;”,则执行了语句“a+=a-=a*a;”后,变量a的值是()。

A.3B.0C.-40D.–12

答案:

C

(10)设a为5,执行下列代码后,b的值不为2的是()。

A.b=a/2B.b=6-(--a)

C.b=a%2D.b=a<3?

3:

2

答案:

C

 

补充习题

1.1.      选择题

(1)C++语言中的标识符只能右字母、数字和下划线三种字符组成,且第一个字符(C)。

A.必须为字母B.必须为下划线

C.必须为字母或下划线D.可以是字母、数字和下划线中任一中字符

 

(2)下面正确的字符常量是(C)。

//字符常量的标志:

一对单引号

A.“C”B.‘\\’’C.‘W’D.‘’

(5)关于逻辑运算符的说法正确的是(CD)。

注意逻辑运算符&&与||的特别,可能会使得右边不需求解

A.它们都是双目运算符,优先级相同

B.语句“inta=0,c=1,b;b=a&&c++;”执行后,c的值为2

C.语句“inta=0,c=1,b;b=a||c++;”执行后,c的值为2

D.语句“inta=1,c=1,b;b=a&&c++;”执行后,c的值为2

(8)有如下程序段:

注意x的类型为int

inta=14,b=15,x;

charc=’A’;

x=(a&&b)&&(c<’B’);

执行该程序后,x的值为(D)。

A.tureB.flaseC.0D.1

(11)以下叙述中不正确的是(D)。

A.在C++程序中,name和NAME是两个不同的变量

B.在C++程序中,逗号运算符的优先级最低

C.若变量m,n为int型,则m=n后,n中的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。

(12)sizeof(float)是(B)。

考查sizeof()运算符

A.一个双精度型表达式B.一个整型表达式

C.一种函数调用D.一个不合法的表达式

(13)下面不正确的字符串常量是(A)。

字符串标志----一对双引号

A.‘rst’B.“14‘14”C.“0”D.“”

(16)设a是整型变量,则表达式(a=4*5,a*2),a+6的值是(B)。

考查逗号表达式与赋值的优先级,注意逗号的优先级最低

A.20B.26C.40D.46

 (17)设有:

inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c

A.1B.2C.3D.4

(18)用C++的语言表达式表示|x3+log10x|的正确是()。

A.fabs(x*3+log(x))B.abs(pow(x,3)+log(x))

C.fabs(pow(x,3.0)+log(x))D.abs(pow(x,3.0)+log(x))

(19)设intk=7,x=12;则能使值为3的表达式是_____。

A.x%=(k%=5)B.x%=(k-k%5)

C.x%=k-k%5D.(x%=k)-(k%=5)

(21)设有语句intx=3,y=4,z=5;则下面表达式中值为0的是(D)。

A.’x’&&’y’B.x<=y

C.x||y+z&&y-zD.!

((x

z||1)

(23)判断char型变量n是否为小写字母的正确表达式为(D)。

A.’a’<=n<=’z’B.(n>=a)&&(n<=z)

C.(’a’>=n)||(’z’<=n)D.(n>=’a’)&&(n<=’z’)

基本编程语句:

控制结构

典型例题分析与解答

例题2:

以下不正确的语句是()。

A.if(x>y);

B.if(x=y)&&(x!

=0)x+=y;

C.if(x!

=y)cin>>x;elsecin>>y;

D.if(x

答案:

B

分析:

if语句后面的表达式必须放在括号内“()”,且不能使用赋之值运算符。

在if和else后面用花括号“{}”括起来的多个语句成为了一个复合语句。

例题3:

下面程序的输出结果是()。

#include

usingnamespacestd;

intmain()

{inta=6,b=6;

if(a>5)

a-=1;

b+=1;

else

a+=1;

b-=1;

cout<<”a=”<

cout<<”b=”<

}

A.5B.a=5C.a=5D.编译时出错

7b=7b=6

答案:

D

分析:

在if…else语句的中间应为单条语句或复合语句,不能为多条语句。

例题4:

对while、do…while循环结构,下面说法正确的是()。

A.只是表达形式不同

B.do…while结构中的语句至少执行一次

C.while结构中的语句至少执行一次

D.条件成立时,它们有可能一次也不执行

答案:

B

分析:

要知道while、do…while两种循环结构的区别在于:

while循环是先判断条件是否成立,成立时才执行,而do…while是先执行再判断,它至少执行一次。

 

例题5:

以下不正确的是()。

A.语句for(i=0;;i++)表示无限循环B.for(;;)表示无限循环

C.for()也表示无限循环D.while

(1)表示无限循环

答案:

C

分析:

for循环语句中的表达式可以省略,但分号不可省略。

 

例题6:

下面循环体的执行次数为()。

#include

usingnamespacestd;

intmain()

{inta,b;

for(a=0,b=5;a<=b+1;a+=2,b--)cout<

}

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

答案:

A

分析:

在for语句的表达式中使用了逗号运算符对变量a和b进行赋初值,每次循环后改变变量a和b的值,直到a>=b.

例题7:

对中断语句的说法下面不正确的是()。

A.用户可以指定中断的位置B.用户可以指定转移的位置

C.break语句可以跳出本循环D.continue语句可以结束本次循环

答案:

B

分析:

不论break语句还是continue语句转移的位置是根据程序默认的,不用人为的设置。

 

例题8:

下列函数的功能是()。

#include

usingnamespacestd;

intmain()

{chara;inti;

cin>>a;

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

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

a=a-i;

cout<

}}

A.把a中的小写字母变成大写字母B.把a中的小写字母变成大写字母

C.把a中的所有字母变成小写字母D.把a中的字母变成它前面i个的字母

答案:

D

分析:

本题要求判断程序的功能,可以用列举法判断其gon功能,例设a=’f’,则程序结果为edcba^^^^^,本程序仅对在小写字母a~z之间的字母起作用。

 

1.2. 填空题

例题9:

下面的程序实现输出x,y,z三个数中的最大值,请填入正确的内容。

#include

usingnamespacestd;

intmain()

{intx=5,y=8,z=9,u,v;

if(

(1))u=x;

elseu=y;

if(

(2))v=u;

elsev=z;

cout<<”v=”<

}

答案:

(1)x>y

(2)u>z

分析:

本程序首先找出x和y中较大的数放入变量u中,再将u与z做比较,其中较大者放入变量v中,为三个数中的最大值。

例题10:

有以下程序段:

intn=0;

while(n=1)n++;

while循环执行次数是_____。

答案:

为无限次。

分析:

要注意”=”和”==”的区别,”=”是赋值运算符,”==”是关系运算符“等于”。

这里while(n=1)永远为1,为真值,则答案为无限次。

 

例题11:

计算1~20之间偶数之和,请填充:

#include

usingnamespacestd;

intmain()

{inta,b,i;

a=0;b=0;

for(i=0;

(1);i+=2)

{a+=i;

(2);

(3);

cout<<”偶数之和为:

”<

}

答案:

(1)i<=20或i<21

(2)b+=i+1(3)}

 

例题12:

下面程序运行结束后,k的值为_____。

#include

usingnamespacestd;

intmain()

{inti,j,k;

for(i=0,j=10;i<=j;i++,j--)

k=i+j;

count<

}

答案:

10。

分析:

在程序中每循环一次,变量i+1,而变量j-1,i+j之和保持不变为10,直到循环结束。

 

例题13:

下面程序是输出100以内能被7整除且个位数是4的所有整数,请填空:

#include

usingnamespacestd;

intmain()

{inti,j;

for(i=0;

(1);i++)

{j=i*10+4;

if(

(2))

continue;

(3)

cout<

}}

答案:

(1)i<=9或i<10

(2)j%7!

=0(3)else

分析:

由题目可知判断100以内的数,故i变量的终值应为:

i<=9或i<10。

要满足不被7整除的条件为:

j%7!

=0;反之不满足该条件的则要输出。

 

 

2.4. 看程序写结果

例题16:

#include

usingnamespacestd;

intmain()

{inta,b,c,d,x;

a=c=0;b=1;d=20;

if(a)d=d-10;

elseif(!

b)

if(!

c);

elsex=25;

cout<<”d=”<

cout<<”x=”<

}

运行结果:

d=20

x=25

分析:

这是一个if语句的嵌套结构,判断三个if语句的条件表达式都“假”,则执行最后一个else后面的语句“x=25”。

 

例题17#include

usingnamespacestd;

intmain()

{intx=6,y=8;

if(x++<6)

cout<<++y<

if(x>6)

cout<<--y<

else

cout<

}

运行结果:

7

分析:

程序在判断第一个条件if(x++<6)时,由于此时x的值为6所以不成立,故不做语句cout<<++y<

接着判断第二个条件if(x>6),因x值为7,条件成立,故执行语句cout<<--y<

例题18:

#include

usingnamespacestd;

intmain()

{inta;

cout<<”pleaseinputanumber:

”;

cin>>a;

switch(a%2)

{case0:

cout<<”a是偶数”<

default:

cout<<”a是奇数”<

}

}

如果输入数为6,则输出结果为什么?

运行结果:

a是偶数

a是奇数

分析:

本题主要是要掌握多分支语句switch语句和break语句的应用。

当符合条件的分支执行完毕后,如果没有遇到break语句,则继续执行下面的分支语句,而不管条件是否符合,直到遇到break语句或switch语句结束。

 

例题19:

写出下列程序运行结果:

#include

usingnamespacestd;

intmain()

{inti,j,m=0,n=0;

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

for(j=0;j<2;j++)

if(j>=i)m=1;n++;

cout<

cout<

}

对待结果:

1

1

分析:

本题中二重循环的循环体语句为:

if(j>=i)m=1;n++;,由于内外循环变量的变化,该语句并不被二重循环所控制,它仅执行了一次,即不论循环多少次m、n的值总为1。

 

例题20:

写出下列程序运行结果:

#include

usingnamespacestd;

intmain()

{inta,b;

for(a=1,b=1;a<=100;a++)

{if(b>=10)break;

if(b%3==1)

{b+=3;continue;}

}

cout<

cout<

}

运行结果:

4

10

分析:

本题是一个单循环语句,在循环体中有break和continue语句,当变量b=10时,循环结束,输出相应的变量a、b的值。

 

例题21:

写出下列程序运行结果:

#include

usingnamespacestd;

intmain()

{inty,a;

y=2;a=-1;

while(y--!

=-1)

{do

{a*=y;a++;}while(y--);

}

cout<<"a="<

}

运行结果:

a=1y=-2

分析:

y--返回2,y=1,whi1e条件为真,进入do-whilee循环;a*=y之后,a=1,a++之后,a=2;y--返问1,,y=0;再执行一次do-while循环,a*=y之后,a=0,a++之后,a=1,y--返回0,y=-1,退出do-while循环;(y--!

=-1)为假,且y=-2,退出外层的while循环。

这时a=1,y=-2。

 

3.5. 编写程序

例题23:

计算1至70中是7的倍数的数值之和。

分析:

采用单循环语句结构,在循环内判断数值是否能被7整除,满足条件的值累加到求和变量sum中。

程序为:

#include

usingnamespacestd;

intmain()

{inti,sum=0;

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

if(i%7)sum+=i;

cout<

}

 

例题24:

求下面分数序列的前13项之和。

2/1,3/2,5/3,8/5,13/8,21/13,…

分析:

采用循环结构来实现累加,循环变量表示当前的数列项数,在循环体内计算数列的第i项的值,以及前i项的累加值。

数列的规律为:

从第2项开始,每一项的分母是前一项的分子,分子是前一项的分子和分母之和。

程序如下:

(1)用for语句实现:

#include

usingnamespacestd;

intmain()

{floata,b,t,sum;

inti;

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

{a=a+b;b=a-b;

t=a/b;sum+=t;

}

cout<<”sum=”<

}

(2)用while语句实现:

#include

usingnamespacestd;

intmain()

{floata,b,t,sum;inti;

a=2;b=1;i=2;t=a/b;sum=t;

while(i<=13)

{a=a+b;b=a-b;

t=a/b;sum+=t;

i++;

}

cout<<”sum=”<

}

(3)用do-while语句实现:

#include

usingnamespacestd;

intmain()

{floata,b,t,sum;inti=1;

a=b=1;sum=0;

do

{a=a+b;b=a-b;

t=a/b

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

当前位置:首页 > 解决方案 > 学习计划

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

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