}
假定,输入数据如卞:
Enterxy:
5V91
答:
i=5,j=9
i4j=14,i*j=45
2.
^includeo
mtmax(mt.mt);
voidmain()
{
inta.b,c;
a=5;
b=8;
c=max(a,b);cout«Mniax(,,«a«7«b«M)=,,«c«endl;
}
mtmax(iiitx.iiity)
{
returnx>yx:
v;
}
答:
max(5$)=8
^includeo
voidfl0,£2();
voidmain()
{
cout«M在北京・\1T;
fio;
f20;
cout«M再见・\1T;
}
^includeo
voidfl0
cout«"在上海All";
}
^includeo
voidf2Q
{cout«n在广州An";
}
答:
在北京。
在上海。
在广卅。
再见。
编译卜•列程序,修改所出现的错误,获得正确结呆
1.
mam()
{
cout«MInmam().\nH
}
答:
修改后如下:
#includeo
voidmain()
{
cout«HInmam().\nn;
}
2.
#includeo
voidMAIN()
{
ciii»a;
intb=a+a;cout«Mb=«b«\iiH;
}
答:
修改后如下:
#includeo
voidmain()
{
iiita;
ciii»a;
intb=a+a;
cout«Hb=>,«b«,\nH;
}
#includeovoidniam()
mtij;
1=5;
mtk=i+j;
COUT«Hi+j=n«k«endl;
}
答:
#iiicludeo
voidmain()
{
intij;
J=10;
1=5;
intk=i+j;
cout«,,i+j=,'«k«endl;
}
通过对题中3个程序的修改,回答下列问题
1.从题中第1题程序的修改中,总结出编程应该注意哪些问题。
答:
C++程序要包含,main。
函数前应加类型说明符void。
2.C卄程序中所出现的变量是否必须先说明后使用?
在函数体内说明变量时是否都要放在函数体的开头?
答:
C++程序中所出现的变屋必须先说明后使用。
在函数体内说明变量时不一定要放在函数体的开头。
3.使用cout和插入符(<<)输出字符串常量时应注意什么?
答:
可输出一个字符串常量,也可输出多个字符串常量。
每输出一个字符串常量要使用一次插入符(《)。
4.程序中定义过的变量,但没有赋值,也没有默认值,这时能否使用?
答:
不能使用。
因为它的值不确定。
5.一个程序编译通过并已生成执行文件,运行后并获得输出结果,这一结果是否一定正确?
答:
不一定正确。
可能还有算法错。
第2章变量和表达式及数组
练习题2
判断题
V1.C++语言的合法字符集与C语言的完全相同。
X2.标识符规定大小写字母没有区别。
X3.C卄程序中,不得使用没有定义或说明的变量。
V4.变量的存储类指出了变量的作用域和寿命。
V5.变量的数据类型指出了变量在内存中存放的字节数。
X6.定义变量时,变量的存储类说明符不得省略。
X7.自动类变屋与内部静态类变量的作用域和寿命都是相同的。
X8.自动类变量可以定义在函数体外,这时应加说明符autoo
X9.外部类变量与外部静态类变量的作用域是相同的。
X10.变量被定义后是否有默认值与存储类无关,与数据类型有关。
V11.C卄程序中,通常使用const来定义符号常量,定义时必须指出类型。
X12.变量被定义或说明后,它一定具有有意义的值。
x13.字符串常量与字符常量的区别仅表现在定义形式上的不同,一个用双撇号,另一个用单撇号。
X14.所有变量的可见性和存在性都是一致的。
V15.变量在它的作用域内一定是可见的,又是存在的。
V16.C卄语言中除了包含C语言的所有运算符外,还规定自身的若干个运算符。
V17.增1和减1运算符以及赋值运算符都具有副作用。
X18.增1和减1运算符不仅可以作用在变量上,也可以作用在表达式上。
X19.关系运算符可以用来比较两个字符的人小,也可以比较两个字符串的大小。
X20.移位运算符在移位操作中,无论左移还是右移,对移出的空位一律补0。
X21.变量的类型高低是指它被存放在内存的地址值大小。
X22.使用sizeof运算符可以求得某种类型和某个变量在内存中占的字节数,不能求得某个表达式的类型在内存中所占的字节数。
J23.在C卄语言中,非保值转换应用强制类型转换。
V24.表达式中各操作数计算顺序取决于运算符的优先级和结合性。
V25.在C卄程序中,变量值是可以改变的,变量的地址值是不能改变的。
J26.数组中所有元素的类型都是相同的。
X27.定义数组时必须对数组进行初始化。
V2&数组某维的大小可以用常量表达式,不可用变量名。
X29.定义一个数组没有对它进行初始化,则该数组的元素值都是无意义的。
V30.用来给数组进行初始化的初始值表内的数据项的个数必须小于等于数组元素个数。
X31.在定义一个数组时,对其部分元素进行了初始化,没有初始化的元素的值都是无意义的。
J32.数组被初始化时是判越界的。
X33.字符数组就是字符串。
J34.使用prmtf()函数输出显示字符串时使用格式符%s,输出显示字符时使用%c或%血
X35.给数组元素赋值时只可用常量表达式。
单选题
1.下列变量名中,非法的是(C)。
A・A25E・Mv_car
C・My-sti-D・abc
2.下列常量中,十六进制mt型常量是(A)。
A.0x5fE・x2a
D・7a
B.”y”
C.046
3.下列常量中,不是字符常量的是(B)。
A.3
4.
D・'\7‘
A.
C.
5.
A.
B.
C.
在函数体内定义了下述变量ma的存储类为(Diiita;
寄存器类
静态类
卞列关于变量存储类的描述中,错误的是(C
任何变量定义后都具有一个确定的存储类变量的存储类确定了变量的作用域和寿命
定义变量时没有存储类说明符者一律为自动类
)o
)o
B.外部类
D・自动类
D・
6.
A.
E・
C・
D・
7.
A.
C・
8.
A.
C・
9.
A.
C・
内部静态类变量和外部静态类变量的存储类说明符都是static下列关于变量数据类型的描述中,错误的是(A定义变量时int型数据类型可以省略
变量的数据类型可以决定该变量占内存的字节数变量的数据类型是可以被强制的变量的数据类型是有高低之分的长双精度浮点型常量的后缀是(C)。
U
L
卞列运算符中,不能用于浮点数操作的是(
-H-
*=
下列运算符中,优先级最高的是(A)。
*(双目)
»
)o
BF
D・无
)o
B.
II
优先级最低的是(B)o
B.+
D・&
(双目)
D・%=
10.下列运算符中,
A.==
c.I
11・已知:
inta(3);
A.a%2=0
C・(a・2)++
12.已知:
intb(5),
A.b="a”
C.b%
13.卜•列关于类型转换的描述中,错误的是(类型转换运算符是(<类型〉)类型转换运算符是单目运算符类型转换运算符通常用于保值转换中类型转换运算符作用于表达式左边
下列表达式中,错误的是(
下列表达式中,正确的是
)。
B.
D.
)。
E・?
:
D・2
a—+2
a»=2
E・++(b-l)
D.b=3,b+1,
)o
b+2
A.
B.
C.
D.
14.下列表达式中,其值为0的是(A)。
A.5/10
C.2>4?
0:
1
15.下列表达式中,其值不为逻辑值的是(A
A.算术表达式
C.逗号表达式
16.
A.
B.
C.
D.
17.
E・!
0
D・2&&2||0
下列关于数组概念的描述中,错误的是(数组中所有元素类型是相同的数组定义后,它的元素个数是可以改变的数组在定义时可以被初始化,也可以不被初始化数组元素的个数与定义时的每维人小有关下列关于数组维数的描述中,错误的是(C)。
E.关系表达式
D•逻辑表达式)。
A.定义数组时必须将每维的大小都明确指出
B.二维数组是指该数组的维数为2
C.数组的维数可以使用常量表达式
D.数组元素个数等于该数组的各维人小的乘枳
18.下列关于数组下标的描述中,错误的是(B)。
A.C++语言中数组元素的下标是从0开始的
B.数组元素下标是一个整常型表达式
C.数组元素可以用下标来表示
D.数组元素的某维下标值应小于该维的人小值
19.下列关于初始值表的描述中,错误的是(C)。
A.数组可以使用初始值表进行初始化
B.初始值表是用一对花括号扌舌起的若干个数据项组成的
C.初始值表中数据项的个数必须与该数组的元素个数相等
D.使用初始值表给数组初始化时,没有被初始化的元素都具有默认值
20.下列关于字符数组的描述中,错误的是(D)。
A.字符数组中的每一个元素都是字符
B.字符数组可以使用初始值表进行初始化
C.字符数组可以存放字符串
D.字符数组就是字符串
21.下列关于字符串的描述中,错误的是(C)。
A.一维字符数组可以存放一个字符串
B.二维字符数组可以存放多个字符串
C.可以使用一个字符串给二维字符数组赋值
D.可以用一个字符串给二维字符数组初始化
22.已知:
inta[5]={l,2,3,4};下列数组元素值为2的数组元素是(B)。
A.a[0]B.a[l]
C.a[2]D.a[3]
23.已知:
mtab[][3]={{l,5,6},{3},{0,2}};数组元素ab[l][l]的值为(A)。
A.0B.1
C.2
24.已知:
chais[]="abcd";输出显示字符'c,的表达式是(
A・s
C・s[2]D・s[3]
25.已知:
charss[][6]={,,while,\Mfbrf\"else11,"break11};输出显示"leak"字符串的表达式是
(B)o
A・ss[3]E・ss[3]+l
C・ss+3D・ss[3][l]
填空题
1.c卄语言中,基本数据类型包含有整型、浮点型、字符型、空值型和布尔型。
2.变量的存储类可分为自动类、寄存器类、外邹类和静态存储类。
3.浮点型常量可分为单精度、双精度和长双精度浮点型常量。
4.结合性从右至左的运算符有单目运算符、双目运算符和赋值运算符。
5.条件表达式是由三目运算符组成的,该表达式的类型是由冒号左边和右边两个操作数中类型高的操作数类型决定的。
6.己知:
doubledd[][3]={{,,},{,},{}};这里dd是一个二维数组的数组名,该数组共
有9个元素,每个元素的类型是doubleo数组元素dd[O][O]的值是,
dd[l][l]的值是,数组元素dd[2][2]的值是0。
7.己知:
charss[][6]={nwliileH,,,break,\,rfbrn,frelseH};字符数组ss是二维数组,它的第1维人小应该是4。
使用cout和《输出字符串”for”时,对应的表达式是ss+2。
使用cout和《输出字符串”break”的子串”reak”时,对应的表达式是ss[l]+l。
使用cout和《输出字符串else中的字符<时,对应的表达式是ss[3][2]。
分析下列程序
1.
#mcludeo
voidniaiii()
{
inta、b;
cout«MEnterab:
ciii»b»a;
intd=a-b;
cout«Hd=n«d«endl;
}
假定输入为5和8o
答:
d=3
2.
#mcludeo
voidmain()
{
constiiitA=8;
constcharCH='k:
constdoubleD=;
cout«MA=H«A«endl;
cout«HCH+2=H«chai(CH+2)«endl;cout«'=H««endl;
}
答:
A=8
CH=2=m
3.
#mcludeo
iiita=9;
voidniaiii()
{
intb=5;
cout«Ma-rb=H«a+b«endl;
staticiiitc;
cout«Mc+a=M«c+a«endl;
constlongintd=8;
cout<}
答:
a+b=14
c+a=9
a+d-b=12
4.
#includeo
voidmain()
{
inta=3;
cliarb=rm,;cout«,,a=H«a«V«nb=H«b«endl;
{
iiita=5;
b=b:
cout«Ha=n«a«V«Hb=,,«b«endl;
}cout«,,a=,,«a«,;«,'b=,,«b«endl;
}
答:
a=5,b=m
a=3,b=n
a=3,b=n
5.
#includeo
voidmain()
{
cout«6%4*5/3+3«endl;cout«(10&38)<cout«^4«endl;
}
答:
6
10
21
-5
6.
#includeo
voidmain()
{
inta=5;
cout«long(&a)«7«sizeof(a)«7«sizeof(int)«endl;doubleb=;
cout«sizeof«7«sizeof(b)«7«sizeof«endl:
}
答:
<地址值>,4,4
4887.
^includeAv
voidmailo
宀
huaH39T5"
courAA(avb+a=Hb—2)AA・\A(a一Hb+a八HbAcclldrcharCH5courAA(CALk・AAxA!
cTh+2)AACndr
flosT;
courAA(—f莎0.1
10
^includeAv
voidmailo
宀
一一芽Ljk
lHlilkH5;
匸<&<&++J<&p?
——k;
cour«A'Ax4ACAAkAfd「
Itr
co三・・e/V/・,」・//-
〒5-〒5R?
R?
*K
courAAAA・\5jAA・\AkAACndr莎5>5
5>5
5>5
9・
^includeAv
voidmam()
宀
inti(5)
courAA(li•i*=jAAcndrr
1H5J&
宁:
5);
COU试AA'AxAAACndr
1H5J&
cour«o+=i*丄!
5AACHdr
m:
40
13.7
23
10.
#includeo
mta=8;
voidmain()
{
mtb=6;
doubled=;
d+=a+b;
cout«d«endl;
cout«(a=Lb=2,d=,a+b+d)«endl;cout«(a<0a:
b<0a++:
b++)«endl;
}
答:
2
11・
#includeo
voidmain()
{
intm0[3]={9,8,7,6,5,4,3,2,l},s=0;
for(mti=0;i<3;i++)
s+=m[i][i];
cout«s«endl;
}
答:
15
12.
#includeo
voidmain()
{
chars[]=Mbhv543kpni345H;
fbr(iiiti=0;s[i]!
-\0';i-H-)
{
if(s[i]>=,ar&&s[i]v=Z)
continue;
cout«s[i];
}
cout«endl;
}
答:
543345
13・
#includeo
voidmain()
intb[]={5,・3,4丄・8,9,0,10};
mti=0j;fbr(j=i;i<8;i++)
if(b[i]>b[j])
冋
cout«j«7«b|j]«endl;
}
答:
7,10
14.
#includeo
voidmain()
{
mta[][3]={12,3,4,5,6,7,8,9};
mtsl(0),s2(0);
for(mti=0;i<3;i++)
for(mt尸0;j<3;j++){if(】!
=j)
sl+=a[i]|j];if(i+j==l)
s2+=a[i]|j];
}
cout«nsl=,,«sl«7«,,s2=,,«s2«endl;}
答:
sl=30,s2=6
15・
#includeo
voidmain()
{
chars[]=¥%#”;
for(mti=0;i<3;i++)
{
for(mtj=0:
j
for(mtk=0;k<3;k++)cout«s[k];
cout«endl;
}
fbr(i=2;i>0;i~)
{
for(mtj=0;jfor(mtk=0;k<3;k++)cout«s[k];
cout«endl;
}
答:
#%#
#%#
#%#
#%#
#%#
编程题
1.已知:
mta=3,b=5:
编程计算下列两个代数式的值,并比较它们是否相等。
(a+b)2
和
a2+2ab+b2
答:
编程如卜:
#iiiclude<>
voidmain()
{
mta=3,b=5;
mtdl=(a+b)*(a+b);
intd2=a*a+2*a*b+b*b;cout«Hdl=n«dl«endl«nd2=H«d2«endl;
}
从结果中可以看出dl和62值是相等的。
2.已知:
mtx=5;编程求卞列代数式的值。
f(x)=3x3+2x2+5x+2
答:
编程如下:
#includeo
voidmain()
{
iiitx=5;
iiitf=3*x*x*x+2*x*x4-5*x+2;
cout«f«endl;
}
3.从键盘上输入两个double型数,编程输出其中最小者。
答:
编程如下:
#includeo
voidmain()
{
doublea.b;
cout«"请输入两个double型数:
”;
cin»a»b;
cout«'输入的两个数中较小的是";
if(a<=b)
cout«a«endl;
else
cout«b«endl;
}
4.华氏温度转换成摄氏温度的计算公式如下:
C=(F-32)*5/9
其中,C表示摄氏温度,F表示华氏温度。
从键盘上输入一摄氏温度,编程输出对应的华氏温度。
答:
编程如下:
#includeo
voidmain()
{
doublec,f;
cout«"请输入一个摄氏温度值:
”;
cin»c;
f=*c+;
cout«"摄氏温度为”《c«”华氏温度为,,«f«endl;
}
5.从键盘上输入5个浮点数,输出它们的和以及平均值。
答:
编程如下:
#includeo
voidmain()
{
doublea,b,c,d.e;
cout«"请输入5个double型数:
”;
cin»a»b»c»d»e;
doublef=a-rb+c+d+e;
cout«"输入的5个数的和是yvfx”平均值是yVf7«eiidl;
}
6.将字符串T2345”,逆向输出为”54321”。
答:
编程如下:
#includeo
voidmain()
{
chara[]=,,12345";
cout«a[4]«a[3]«a[2]«a[1]«a[0]«endl;
}
简单回答下述问题
1.C卄语言中注释符