您的当前位置:首页正文

C++练习题1

2022-08-03 来源:易榕旅网
习题一

一、选择题

1.C++语言是从早期的C语言逐渐发展演变而来的。与C语言相比,它在求解问题方法上进行的最大改进是___________。 A.面向过程 B.面向对象 C.安全性 D.复用性 2.以下说法中正确的是_____________。

A.C++程序运行时,总是从第一个定义的函数开始执行 B.C++程序运行时,总是从main()函数开始执行

C.C++源程序中的main()函数必须放在程序的开始部分 D.一个C++函数中只允许一对花括号

3.下列标识符中错误的一组是_____________。 A.Name,char,a_bc,A-B B.abc_c,x5y,_USA,print C.read,Const,type,define D.include,integer,Double,short_int 4.下面的单词中属于C++语言关键字的是___________。 A.inlcude B.define C.ENUM D.union 5.下面属于C++语句的是_______________。 A.cout< 6.在一个C++程序文件中,main()函数的位置______________。 A.必须在开始 B.必须在最后 C. 可以任意 D.必须在系统调用库函数之后 7.C++源程序的基本结构是______________。 A.过程和块 B.函数和类 C.程序段和过程 D.子程序和主程序 8.下列四个叙述中,错误的是_____________。 A.C++语言中的标识符必须全部由字母组成 B.C++语言不提供输入输出语句 C.C++程序中的注释可以出现在程序的任何位置 D.C++语言中的关键字必须小写

二、填空题

1.C++程序的开发过程包括_______________、_____________和__________________三个阶段。 2.在编辑阶段,C++源程序的扩展名是_________________。

3.C++源程序经过编译后生成的文件的扩展名是___________________。 4.C++源程序经过编译和连接后生成的文件的扩展名是________________。

5.在Visual Studio 2005环境下,按程序运行界面划分,用C++开发的应用程序有_____________、____________和______________________三种类型。

6.在C++程序中,一条语句的结束符是______________________。

7.用于输出表达式值的标准输出流对象是____________,用于从键盘上为变量输入值的标准输入流对象是_____________。

8.下面的程序用cin从键盘接收一个整数并存放在变量a中,用cout输出a的值,请将程序填完整。

#include using namespace std; int main()

{________________ cin>>a;

cout_________\"a=\"__________a__________endl; system(\"pause\"); return 0; }

三、编程题

编程序计算立方体的表面积和体积,设一个立方体的三条边分别为a,b,c,若从键盘输入这三条边长,就可以计算立方体的表面积和体积。

习题二

一、选择题

1.设char型占1字节,则unsigned char 所能表示的数据范围是___________。 A.0~255 B.-128~127 C.1~256 D.-128~128 2.将小写字母n赋值给字符变量one_char,正确的操作是____________。 A.one_char='\\n' B. one_char=“\\n” C. one_char=110 D.one_char='N' 3.整型变量i定义后赋初值的结果是____________。

int i=2.8*6;

A.12 B.16 C.17 D.18 4.下列四组整型常量中,错误的一组是__________。 A.xcdf 017 0xe 123 B.160 0xffff 011 0L C.01 32768u 0617 0x163 D.0x48a 0205 0x0 -256 5.下列属于C++合法的字符常量是__________。 A.‘\\97’ B.\"A\" C.'\' D.\"\\0\" 6.若整型变量x=2,则表达式x<<2的结果是_________。 A.2 B.4 C.6 D.8 7.设int a=1,b=2;,则表达式(a++)+b与a++ +b的值分别为___________。 A.3,3 B.3,4 C.4,3 D.4,4 8.在C++中,合法的长整型常量是__________。 A.0L B.4962710 C.04312765 D.0xa34b7fe 9.当用#define X 23.6f定义后,下列叙述正确的是__________。 A.X是实型常量 B.X是实型变量 C.X是一串字符 D.语法错误 10.当用const int B=9;定义后,下列叙述错误的是_________。 A.B是整型变量 B.B是整型常量 C.B不能在程序中再赋值 D.B可以用作数组元素的下标 11.要求运算量必须是整型的运算符是____________。 A.+ B./ C.% D.-

12.在C++中,不同类型的数据混合运算时,先要转换成同一类型,然后进行计算。设一表达式中含有int、short、unsigned和char类型的常量和变量。这四种类型的转换顺序是__________。 A.short→unsigned→int→char B.char→int→short→unsigned C.char→short→int→unsigned D.char→unsigned→short→int 13.a、b均为int型且b≠0,则表达式a/b*b+a%b的值为_________。 A.a B.b C.a被b除的整数部分 D.a被b除商的整数部分 14.a、b均为int型且b≠0,则表达式a-a/b*b的值为_________。 A.0 B.a C.a被b除的余数部分 D.a被b除商的整数部分 15.下列表达式中,值为0的是__________。 A.3%5 B.3/5.0 C.3/5 D.3<5 16.下列语句中符合C++语法的语句是___________。 A.a=7+b+c=a+7 B.a=7+b++=a+7 C.a=7+b,b++,a+7 D.a=7=b,c=a+7 17.若变量已正确定义且k的值是4,执行表达式j=k—后,j、k的值是__________。 A.j=4,k=4 B.j=4,k=3 C.j=3,k=4 D.j=3,k=3 18.设int x=10,x+=3+x%(-3),则x=_____________。 A.14 B.15 C.11 D.12 19.表达式(int)(3.0/2.0)的值是____________。 A.1.5 B.1.0 C.1 D.0 20.设a为int型变量,则执行以下语句后,x的值为_____________。

a=10;a+=a-=a-a;

A.10 B.20 C.40 D.30 21.设变量t为int型,下列选项中,不正确的赋值语句是____________。 A.++t B.n1=(n2=(n3=0)) C.k=i==1 D.a=b+c=1

22.设float m=4.0,n=4.0;使m为10.0的表达式是_____________。 A.m-=n*2.5 B.m/=n+9 C.m*=n-6 D.m+=n+2 23.C++语句中x*=y+2;还可以写成_______________。 A.x=x*y+2 B.x=2+y*x C.x=x*(y+2) D.x=y+2*x

24.若变量已正确定义,要将a和b中的数进行交换,则下列不正确的语句组是____________。 A.a=a+b;b=a-b;a=a-b; B.t=a;a=b;b=t; C.a=t;t=b;b=a; D. t=b;b=a;a=t; 25.设已定义int k=7,x=12;,下列表达式中,计算结果为0的是_________________。 A.x%=(k%=5) B.x%=(k-k%5) C.x%=k-k%5 D.(x%=k)-(k%=5) 26.设int a=7,b=8;,则cout<<(a+b,a)<<”,”<<(b,a+b)输出的是_____________。 A.7,15 B.8,15 C.15,7 D.出错 27.下列表达式的值为false的是_______________。 A.1<3&&5<7 B.!(2>4) C.3&0&&1 D.!(5<8)||(2<8) 28.设int a=10,b=11,c=12;,表达式(a+b)10||x<20 C.x>10&x<20 D.!(x<=10||x>=20) 30.设int a=3;,则表达式a<1&&--a>1的运算结果和a的值分别是______________。 A.0和2 B.0和3 C.1和2 D.1和3 31.为表示关系x≥y≥z,应使用的C++表达式是____________。 A.(x>=y)&&(y>=z) B.(x>=y)AND(y>=z) C.x>=y>=z D.(x>=y)&(y>=z) 32.已知int x=43,y=0;char ch=’A’;,则表达式(x>=y&&ch<’B’&&!y)的值是__________。 A.0 B.语法错 C.1 D.-1 33.为表示“a和b都大于0”,应使用的C++表达式是____________。 A.(a>0)&&(b>0) B.a&&b C.(a>0)||(b>0) D.(a>0)|(b>0)

34.当c的值不为0时,下列选项中能正确将c的值既赋给变量a又赋给变量b的是______________。 A.c=b=a B.(a=c)||(b=c) C.(a=c)&&(b=c) D.a=c=b

35.设a为整型变量,下列不能正确表达数学关系:1010&&a<15 D.!(a<=10)&&!(a>=15) 36.设a、b和c都是int型变量,且a=3,b=4,c=5;,则以下表达式中,值为0的是____________。 A.a&&b B.a<=b C.a||b+c&&b-c D.!((a#include using namespace std; int main() {

int a=-1,b=4,k;

k=(a++<=0)&&(!(b--<=0));

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

38.整型变量x和y的值相等且为非0值,则以下选项中,结果为0的表达式是______________。 A.a||y B.a|y C.x&y D.x^y 39.设int a=4,float x=7.5,y=4.8;,则表达式a+(int)((int)(x)+y)>>(int)(x-y)的值为________。 A.2 B.4 C.1 D.3 40.设int b=2;,表达式(b<<2)/(b>>1)的值是_____________。 A.0 B.2 C.4 D.8 41.sizeof(double)是______________。

A.一种函数调用 B.一个双精度表达式 C.一个整型表达式 42.若有以下定义和语句

int u=010,v=0x10,w=10;

cout<则输出结果是______________。 A.8,16,10 B.10,10,10 C.8,8,10

D.一个不合法的表达式

D.8,10,10

二、填空题

1.无符号整型的类型关键字为_____________________,双精度实型的关键字为_____________,字符型的类型关键字为__________________。

2.在C++中,整数可用__________进制、_________进制和___________进制三种进位计数制表示。 3.字符串常量的结束符为_________________。 4.设有以下定义,并已赋确定的值

char ch;int i;float f;double d;

则表达式ch*i+d-f的数据类型为________________。 5.设有int a=14;,则表达式(a++*1/5)的值为________________。 6.下列程序的输出结果是________________。

#include using namespace std; int main() {

double d=3.2; int a=1.2,b; b=(a+3.8)/5.0; cout<7.下列程序执行后的输出结果是___________________________。

#include using namespace std; int main() {

double d; float f; long l; int i;

i=f=l=d=20.0/3;

cout<8.若有以下程序段

int a=1,b=2,c; c=1.0/b*a;

则执行后,变量c的值为_______________。 9.下列程序的输出结果是16,请将程序填完整。

#include using namespace std; int main() {

int a=9,b=2;

float x=____________,y=1.1,z; z=a/2+b*x/y+1/2; cout<}

10.下列程序的输出结果是___________________。

#include using namespace std; int main() {

int x=1,y=2; x+=y;y=x-y;x-=y;

cout<<”x=”<11.设已定义int a=10,b=12;则表达式(!a||b--)的值是____________。

12.若a为int型变量,请以最简单的形式写出与逻辑表达式!a等价的C++关系表达式____________________。 13.下面的程序运行后,输出结果为___________________。

#include #include using namespace std; int main() {

int c=97;

cout<cout<三、程序改错题

1.下面程序的功能是将变量a和b的值交换,请找出其中的错误,并修改正确。

#include using namespace std; int main() {

int a,b,t; cin>>a>>b; a=b; b=a;

cout<<”a=”<2.下面的程序用来将八进制整数a的后6位存放到变量中。请修改程序中的错误。

#include using namespace std;

int main() {

int a,b; cin>>oct>>a; b=a!077;

cout<<”a=”<四、编程题

1.编写程序计算边长为a(a的值从键盘输入)的正方形面积及其外接圆和内切圆的面积。 2.编写程序实现华氏温度f和摄氏温度c的转换,转换公式为:c度,通过计算输出摄氏温度

5(f32)。具体要求:从键盘输入华氏温9习题三

一、选择题

1.结构化程序设计使用的基本程序控制结构为__________。 A.模块结构、选择结构和递归结构 B.条件结构、顺序结构和过程结构 C.顺序结构、选择结构和循环结构 D.转换结构、嵌套结构和递归结构 2.设已定义整型变量a、b、c、x,下列程序段运行后x的值是_______________。

a=b=c=0,x=35; if(!a)

x--; else if(b); if(c)

x=3; else

x=4;

cout<A.34 B.4 C.35 D.3 3.若已定义int d;char c=’D’;,则执行的语句后,d的值是_______________。

switch(c) {

case ‘A’:d=0;break;

case ‘B’:case ‘C’:d=2;break; case ‘D’:case ‘E’:d=4;break; default:d=5; }

A.0 B.2 C.4 D.5 4.若已定义int i;,下面程序段的运行结果是__________。

for(i=1;i++<4;); cout<A.3 B.4 C.5 D.不定 5.若已定义int a=10;,下列循环的输出结果是_______________。

while(a>7)

{a--;cout<A.10 9 8 B.9 8 7 C.10 9 8 7 D.9 8 7 6 6.若已定义int x=3;,以下程序段的输出结果是_______________。

do

{

cout<<(x-=2)<<” ”; }while(!(--x));

A.1 B.3 0 C.1 -2 D.死循环 7.以下关于do-while循环的叙述中,正确的是_______________。 A.do-while语句构成的循环只能用break语句退出

B.用do-while语句构成的循环,在while后的表达式为非0时结束循环 C.用do-while语句构成的循环,在while后的表达式为0时结束循环 D. do-while语句构成的循环不能用其他语句构成的循环来代替 8.以下关于编译预处理的叙述中,错误的是_______________。 A.C++源程序中凡是以“#”开始的控制行都是预处理命令行 B.预处理命令行必须位于源程序的开始位置 C.一条有效的预处理命令行必须独占一行 D.预处理命令是在正式编译前被处理的 9.编译预处理命令以_____________结尾。 A. ; B. . C.\\ D.回车键 二、填空题

1.以下两条if语句可合并成一条if语句为___________________________

if(a<=b) x=1; else y=2;

if(a>b) cout<<”****y=”<2.要使以下程序段输出10个整数,请填入一个整数。

for(int i=0;_________________;cout<<(i+=2));

3.下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。

#include using namespace std; void main() {

int a,b,c,i; a=c=0;

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

{

a+=i;

_____________________; c+=b; }

cin>>”偶数之和=”<>”奇数之和=”<4.以下程序将输出的整数按逆序输出。如输入1298,则输出8921。请填空。

#include using namespace std; void main() {

int n1,n2; cin>>n2; while(n2!=0) {

n1=n2%10;

___________________; cout<system(“pause”);

}

5.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

#include using namespace std; void main() {

int i,j;

for(i=0;_________________;i++) {

j=i*10+6;

if(___________________) continue; cout<system(“pause”); }

三、阅读程序题

1.以下程序的输出结果是___________________________

#include using namespace std; void main() {

int x=3,y=0,z=0;

if(x=y+z) cout<<”****”; else cout<<”####”; system(“pause”); }

2.运行下面程序时,若从键盘输入3和4,则输出为____________________。

#include using namespace std; void main() {

int a,b,s; cin>>a>>b; s=a;

if(scout<3.以下程序的输出结果是______________________。

#include using namespace std; void main() {

int a=0,i;

for(i=1;i<5;i++) {

switch(i) {

case 0:

case 3:a+=2; case 1:

case 2:a+=5; default:a+=5; } }

cout<}

4.运行以下程序后,输出结果是__________________________。

#include using namespace std; void main() {

for(int j=10;j>3;j--) {

if(j%3) j--; --j;--j;

cout<system(“pause”); }

5.以下程序的输出结果是_________________________。

#include using namespace std; void main() {

int x,i;

for(i=1;i<=50;i++) {

x=i;

if(x%2==0)

if(x%3==0)

if(x%7==0)

cout<}

system(“pause”); }

6.下列程序的输出结果是________________。

#include using namespace std; void main() {

int i=10,j=0; do{

j=j+i;i--; }while(i>2); cout<}

7.以下程序的运行结果是_____________________。

#include using namespace std; void main() {

int a=10,y=0; do{

a+=2;y+=a;

cout<<”a=”<20) break; }while(a=14);

system(“pause”); }

8.运行以下程序后,输出结果是________________。

#include using namespace std; void main() {

int x=23;

do{cout<9.下列程序的输出结果是___________________。

#include using namespace std; void main() {

int i,j,m=0,n=0; for(i=0;i<2;i++)

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

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

cout<10.以下程序的输出结果是___________________。

#include using namespace std; void main() {

int a,b;

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

if(b>=10) break; if(b%3==1)

{b+=3;continue;}

}

cout<}

11.运行下面程序后,输出结果是__________________。

#include using namespace std; void main() {

int x=3,y=6,a=0; while(x++!=(y-=1)) {

a+=1;

if(ycout<<”x=”<四、程序改错题

1.下面的程序用来求分段函数

0(x0)1(0x1)y

2(1x2)3(x2)的值,请将程序中的错误修改正确

#include using namespace std; void main() {

float x,y; cin>>x; if(x<0)

y=0; if(x<1)

y=1; if(x<2)

y=2; else

y=3;

cout<<”x=”<2.下面的程序用来求1~100中所有能被3整除的各数之和,结果放入变量sum中。请将程序修改正确,以得到正确的输出结果。

#include using namespace std; void main() {

int i,sum;

for(i=3;i<100;i++) {

sum=0;sum+=i; }

cout<<”sum=”<}

3.求π近似值的公式为:

224262(2n)22当n的值很大时(例如,n=1000),下列程序运行是将会产生

2n1(2n1)133557“溢出”错误,请修改程序,使之能正确计算。

#include using namespace std; void main() {

float pi=2;

for(int n=1;n<=1000;n++)

pi=pi*(2*n)*(2*n)/((2*n-1)*(2*n+1)); cout<<”pi=”<五、编程题

1.从键盘输入100个整数,从中找出最大数和最小数。 2.编制程序计算两个整数a和b的最小公倍数。 3.试程序计算1!+2!+…+20!。

4.编制程序打印出100以内的所有素数。

5.编制程序用辗转相除法求整数a和b的最大公约数。

习题四

一、选择题

1.在下列关于C++函数的描述中,正确的是__________。 A.函数可以嵌套定义,但不可以嵌套调用 B.函数不可以嵌套定义,但可以嵌套调用 C.函数不可以嵌套定义,也不可以嵌套调用 D.函数可以嵌套定义,也可以嵌套调用 2.下列关于C++函数的叙述中,正确的是__________。 A.每个函数至少要具有一个参数 B.每个函数都必须有数据类型 C.函数在被调用之前必须先声明 D.函数不能自己调用自己 3. A. B. C. D. A. B. C. D. A. B. C. D. A. B. C. D. A. B. C. D. A. B. C. D. A. B. C. D. A. B. C. D. A. B. C. D. A. B. C. D.

一、选择题

一、选择题

A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A. A.

B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B. B.

C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C. C.

D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D. D.

A. A. A. A.

B. B. B. B. C. C. C. C. D. D. D. D.

练习题

1.设n=10,i=4,则赋值运算n%=i+1执行后,n的值是__________________。

2.如果a=1,b=2,c=3,d=4,则条件表达式a3.设int a=2,b=2;则++a+b的结果是_____________,a的值是_______________,b的值是_______________。

4.下列关于switch语句的描述中,______是正确的。

A.switch语句中default子句可以没有,也可有一个;

B.switch语句中每个语句序列中必须有break子句;

C.switch语句中default子句只能放在最后; D.switch语句中case子句后面的表达式只能是整型表达式

5.对定义重载函数的下列要求中,________是错误的。

A.要求参数的个数不同;

B.要求参数中至少有一个类型不同;

C.要求参数个数相同时,参数类型不同; D.要求函数的返回值不同

6.下列字符串常量表示中,______是错误的。 A.\"\\\"yes\\\"or\\\"No\\\" B.\"\\'OK!\\'

C.\"abcd\\n\" D.\"ABC\\0\"

7.设有定义int a;float f;double i;则表达式10+'a'+i*f的值的数据类型是________。 8.表达式18/4*sqrt(4.0)/5的值的数据类型是______。

9.系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是________。

A.参数个数 B.参数的类型 C.函数名称 10.若定义float x;int a,b;则正确的switch语句是______。 A.switch(x)

{

case 1.0:cout<<\"*\\n\"; case 2.0:cout<<\"**\\n\"; }

B.switch(x)

{

case 1.2:cout<<\"*\\n\"; case 3:cout<<\"**\\n\"; }

C.switch(a+b)

{

case 1.0:cout<<\"*\\n\";

D

case 1+2:cout<<\"**\\n\"; }

D.switch(a+b)

{

case 1:cout<<\"*\\n\"; case 2:cout<<\"**\\n\"; }

11.已知int a,b;下列switch语句中,确的。

A.switch(a)

{

case a:a++;break; case b:b++;break; }

B.switch(a+b)

{

case 1:a+b;break; case 1:a-b }

C.switch(a*a)

{

case 1,2:++a; case 3,4:++b; }

D.switch(a/10+b)

_____是正{

case 5:a/5;break; default:a+b; }

12.下述关于break语句的描述中,______是不正确的。

A.break语句可用于循环体内,它将退出该重循环;

B.break语句可用于switch语句中,它将退出switch语句;

C.break语句可用于if体内,它将退出if语句; D.break语句在一个循环体内可以出现多次 13.下列for循环的次数为______。

for(int i=0,x=0;!x&&i<=5;i++) 14.下列while循环的次数是_______。

while(int i=0) i--;

15.下列do…while循环的循环次数为________。

int i=5; do{

cout<}while(i);

16.下列for循环的循环体执行次数为______。

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

17.C++语言中规定函数的返回值的类型是由

_______。

A.return语句中的表达式类型所决定的; B.调用该函数时的主调用函数类型所决定; C.调用该函数时系统临时决定;

D.在定义该函数时所指定的数据类型所决定 18.若有以下函数调用语句:

fun(a+b,(x,y),fun(n+k,d,(a,b)));

在此函数调用语句中实参的个数是________。 19.在C++中,关于下列设置参数默认值的描述中,正确的是____。

A.不允许设置参数的默认值;

B.设置参数默认值只能在定义函数时设置 C.设置参数默认值时,应该是先设置右边的再设置左边的;

D.设置参数默认值时,应该全部参数都设置 20.下列程序运行后的输出结果是________。

#include using namespace std; int main() {

int s=0,k;

for(k=7;k>=0;k--) {

switch(k)

{

case 1: case 4:

case 7:s++;break; case 2: case 3:

case 6:break; case 0:

case 5:s+=2;break; }

}

cout<<”s=”<函数的递归调用例: #include #include using namespace std; void print(int n) {

if(n!=0) {

print(n-1);

for(int i=1;i<=n;i++)

cout<int main() {

print(4);

system(\"pause\"); return 0; }

因篇幅问题不能全部显示,请点此查看更多更全内容