文档库

最新最全的文档下载
当前位置:文档库 > C++练习5(1-7章)

C++练习5(1-7章)

C + +程序设计单元练习卷5(1-7章)

一单选题

1.以下叙述不正确的是()。

A)一个C++源程序必须包含一个main函数

B)在C++程序中,注释说明只能位于一条语句的后面

C)一个C++源程序可由一个或多个函数组成

D)C++程序的基本组成单位是函数

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

A)_abc B)3ab C)int D)+ab 3.下面的()均是C++语言的整型常量。

A)0xffff 和 611 B)01b 和 0xa1

C)986.012 和 0667 D)2e4 和 0x

4.运算符 +、<=、=、% 中,优先级最低的运算符是()

A)+ B)<= C)= D)%

5. 设变量a是整型,f是实型,i是双精度型,则表达式10+’a’+i*f

值的数据类型是()。

A)int B)float C)double D)不确定6. 若有以下定义,则能使值为3的表达式是()。

int k=7,x=12;

A)x%=(k%=5) B)x%=k-k%5 C)(x%=k)-(k%=5) D)x%=(k-k%5) 7. x,i,j,k 都是int型变量,则计算下面表达式后x的值为()。

x=(i=4,j=16,k=32)

A)4 B)16 C)32 D)52

8. 若变量已正确说明为int类型,要给a,b,c输入数据,

以下正确的输入语句是()。

A)read(a,b,c); B)cin>>a,b,c;

C)cin>>a>>b>>c; D)cin>>a=>>b=>>c=;

9. 以下不正确的是()。

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

B)for(;;)表示无限循环

C)for()也表示无限循环

D)while(1)表示无限循环

10.设有程序段

int k=10;

while(k=0) k=k-1;

A)是死循环B)循环执行10次

C)循环语句一次也不执行D)循环语句执行一次

11. 设a,b和c都是int型变量,且a=3,b=4,c=5;则以下表达式中值为0的是()。

A)a&&b B)a<=b

C)a||b+a&&b-c D)!((a

12.C++语言中while和do-while循环的主要区别是()。

A)do-while的循环体至少无条件执行一次

B)while的循环控制条件比do-while的循环控制条件严格

C)do-while允许从外部转到循环体内

D)do-while的循环体不能是复合语句

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

int main( )

{int w=4,x=3,y=2,z=1;

cout<<(w

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

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

#include

#include?string.h?

int main( )

{ char a[]=?welcome?,b[]=?well?;

strcpy(a,b);

cout<

}

A)wellome B)well om C)well D)well we

15.有说明 int a[][3]={0,2,4,6,8,1,3},则数组中第一维的大小是( )

A)2 B)3 C)4 D)不确定16. 如果一个函数无返回值,定义时它的函数类型应是()。

A)任意B)int C)void D)无17. 下面程序的输出结果为()。

#include?iostream.h?

int f(int a)

{ int b=0;

static int c=3;

b++;c++;

return(a+b+c);

}

int main( )

{ int a=2,I;

for(I=0;I<3;I++)

cout<

}

A)7 B)7 C)7 D)7

8 7 10 9

9 7 13 11

18. 要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确执行此功能的函数是( )。

A)funa(int *x,int *y) B)funb(int x,int y) { int *p=new int ; { int t;

p=*x; t=x;

*x=*y; x=y;

*y=*p; } y=t; }

C)func(int *x,int *y) D)fund(int x,int y)

{ *x=*y; { *x=*x+*y;

*y=*x; *y=*x-*y;

} *x=*x-*y; } 19.下面程序段的运行结果是()。

char str[]=?ABC?,*p=str;

cout<<*(p+3)<

A)67 B)0 C) 字符’C’的地址 D)字符’C’

20.若已定义char s[10];则在下面表达式中不表示s[1]的地址是()

A)s+1 B)s++ C)&s[0]+1 D)&s[1]

21.设有如下定义,下面关于ptr正确叙述是()。

int (*ptr)();

A)ptr是指向一维数组的指针变量

B)ptr是指向int 型数据的指针变量

C)ptr是指向函数的指针,该函数返回一个int型数据

D)ptr是一个函数名,该函数的返回值是指向int型数据的指针

22.C++语言中函数返回值的类型是由()决定的。

A)return语句中的表达式的类型

B)该函数的实参类型

C)调用函数时的调用语句决定的

D)定义函数时所指定的函数类型

23. 下列结构体定义,正确的是()。

A)B)

record { struct record {

int no; int no;

char num[16]; char num[16];

float score ; float score ;

} ; }

C)D)

struct record { struct record {

int no; int no

char num[16]; char num[16]

float score ; } ; float score }

24. 以下程序的输出结果是()

char *p=?abcdefgh?

p+=3;

cout<

A)8 B)7 C) 6 D)5

25. 在定义一个共用体变量时,系统为其分配存储空间的原则是()。

A)按所有成员需要的存储空间总和分配。

B)按成员中占存储空间最大者分配。

C)按成员占存储空间最小者分配。

D)按第一个成员所需的存储空间分配。

二、填空题

1.C++源程序的扩展名是______________。

2.C++程序的三种基本结构是顺序、___ ___和__________。

3.已知字母A的ASCII码为十进制数65,ch为字符变量,则ch=’A’+’8’-‘3‘的值为。

4.若有函数调用语句 fun(a+b,(y=9,x),37),则其实参的个数是。

5.设a=3,b=4,则执行b=(a++)+b;后a的值为,b的值为。

6. int *p[10]表示p是_____________。

7.若有定义static int a[3][4]={{1,2},{1},{4,6,8,10}},则初始化后

a[1][2]和a[2][1]的值分别为、。

7.C++语言的注释可采用或。

8. 请写出判断整型变量x为偶数且不小于100的表达式:

9. 函数的形参在未被调用之前分配空间,函数的形参的个数和要和实参的相同。

10. ?A?与‘A’的区别是:前者表示的是,占用个

内存空间,后者表示的是,占用个内存空间。11.设 #define a(x) x*x

cout<

上述程序段运行结果为。

三、阅读程序

(1)

#include

using namespace std;

void main()

{

int a;

cout<

cin>>a;

Switch(a %2)

{

case 0: cout<

default: cout<

}

}

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

(2) 下面程序的输出结果是什么?

#include

using namespace std;

void main( )

{

int i=1;

while(i<=15)

if(++i%3!=2)

continue;

else

cout<

cout<

} (3)

下面程序的输出结果是什么?

#include

using namespace std;

void main( )

{

int a[3][3]={{1,2},{3,4},{5}};

int sum=0;

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

for(int j=0;j<=i;j++)

sum+=a[i][j];

cout<

}

(4)以下程序的输出结果是什么?

#include

using namespace std;

void main()

{

int a[3]={10,15,20};

int *p1=a,*p2=&a[1];

*p1=*(p2-1)+5;

*(p1+1)=*p1-5;

cout<

}

(5)写出下列程序运行结果。

#include

using namespace std;

struct piont

{

int x;

int y;

} st[5]={1,2,3,4,5,6,7,8,9,10}; void main()

{

int i;

piont *p=st;

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

{

cout<x<<'\t'<y<

p++;

}

}

(6).#include

using namespace std;

int main( )

{ int x=6,y=8;

if(x++<6)

cout<<++y<

if(x>6)

cout<<- -y<

else

cout<

return 0;

}

(7). #include

using namespace std;

int main()

{ int a,b;

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

{ if(b>=10)break;

if(b%3= =1)

{ b+=3;continue;}

}

cout<

cout<

(8) #include

using namespace std;

void reverse(int a[],int n)

{ int i,t;

for(i=0;i

{ t=a[i];a[i]=a[n-i-1];a[n-i-1]=t; } }

int main( )

{int b[10]={1,2,3,4,5,6,7,8,9,10};

int i,s=0;

reverse(b,8);

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

s+=b[i];

cout<

}

(9) #include

using namespace std;

int aa[3][3]={{2},{4},{6}};

int main( )

{int i,*p=&aa[0][0];

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

if(i==0) aa[i][i+1]=*p+1;

else ++p;

cout<<*p<

return 0;}

(10)#include

using namespace std;

struct abc

{ char c;

float v;

};

void fun(abc &b)

{ b.c='A';

b.v=77.5;

}

int main()

{ abc a={'D',90};

fun(a);

cout<

}

四、程序填空

阅读下面的程序说明和程序,把应填入试卷上的字句填在对应的___中,把程序补充完整。

(1)有一个函数如下:

x (x<5)

y= x+6 (5<=x<15)

x-6 (x>=15)

输入x的值,计算出相应的y值。程序如下:

#include

using namespace std;

void main()

{

float x,y;

cin>>x;

if(x<5) y=x;

else if( ) y=x+6;

y=x-6;

cout<<"x= "<

else

cout<

}

(2)输入10个整数到数组C[10]中,计算并输出数组中奇数元素的个数及最大值。(要求用指针完成)

(3)编写两个函数分别求解最大公约数和最小公倍数,在主函数中输入两个整数m和n并输出结果。

(4)使用指针编写函数strcat(),实现两个字符串的首尾连接(将字符串str2接到str1的后面,str1最后面的‘\0’被取消)。