C++程序设计习题大荟萃 联系客服

发布时间 : 星期二 文章C++程序设计习题大荟萃更新完毕开始阅读781e536327d3240c8447ef77

}

cout<

}

9. #include

const int N=10;

int BinarySearch(int a[N],int x) {

int low=0,high=N-1; int mid;

while(low<=high) {

mid=(low+high)/2;

if(x==a[mid]) return mid; else if(x

return -1; }

void main() {

int

b[N]={15,26,37,45,48,52,60,66,73,90};

int c[4]={48,26,73,80}; int I;

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

cout<

三、指出下列每个函数的功能 1. void f1(int a[],int n)

{

for(int i=0;i

{

int x=a[i]; a[i]=a[n-i-1]; a[n-i-1]=x; } }

2. void f2(int a[],int n)

{

int i; double sum=0;

for(i=0;i

for(i=0;i

if(a[i]>=sum) cout<

3. void f3(char a[])

{

int I,c[5]={0};

for(i=0;a[i];i++) switch(a[i]) {

case ’,’: c[0]++;break; case ’;’: c[1]++;break; case ’(’:

case ’)’: c[2]++;break; case ’[’:

case ’]’: c[3]++;break; case ’{’:

case ’}’: c[4]++;break; }

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

4. void f4(char a[M][N])

{

int c1,c2,c3;

c1=c2=c3=0;

for(int i=0;i

if(srlen(a[i])<5) c1++; else

if(strlen(a[i])>=5&&strlen(a[i])<15) c2++;

else c3++;

cout<

四、编写下列程序并上机运行

1. 有一个数列,它的第一项为0,第二项为1,

以后每一项都是它的前两项之和,试产生出此数列的前20项,并按逆序显示出来。

2. 从键盘上输入一个字符串,假定该字符串的

长度不超过30,试统计出该串中所有十进制数字字符的个数。

3. 首先从键盘上输入一个4行4列的一个实数

矩阵到一个二维数组中,然后求出主对角线上元素之乘机。

4. 已知一个数值矩阵为{{3,8,2,9} {4,7,

3,6},{5,2,8,4}},求出该矩阵的转置矩阵并输出出来,其中转置矩阵中的[i][j]位置上的元素等于原矩阵中的[[j][i]位置上的元素。

13

5. 已知一个矩阵A为

{{3,0,4,5},{6,2,1,7},{4,1,5,8}},另一个矩阵B为

{{1,4,0,3},{2,5,1,6},{0,7,4,4},{9,3,6,0}},求出A与B的乘机矩阵C[3][4]并输出出

3

来,其中C中的每个元素C[i][j]等于∑k=0 A[i][k]*B[k][j]。

6. 首先让计算机随机产生出10个两位正整数,

然后按照从小到大的次序显示出来。

7. 从键盘上输入一个字符串,假定字符串的长

度小于80,试分别统计出每一种英文字母(大,小写等同看待)的个数并输出出来。

8. 某学校有12名学生参加100米短跑比赛,

每个运动员号和成绩如4-4所示,请按照比赛成绩排名并输出,要求每一行输出名次、运动员号和比赛成绩三项数据。

表4-4 100米短跑比赛成绩 运动员号 001 002 010 011 023 025 成绩(秒) 13.6 14.8 12.0 12.7 15.6 13.4 运动员号 031 036 037 102 325 438 成绩(秒) 14.9 12.6 13.4 12.5 15.3 12.7

第五章 指针 一、填空题

1. 一个指针类型的对象占用内存的______个字节

的存储空间。

2. 一个指针指向一个数据对象,它保存着该数据对

象的______,若数据对象为DataType类型,则该指针的类型为______。

3. 若要把一个整形指针p转换为字符指针,则采用

的强制转换表达式为______。

4. 假定一个数据对象为int *类型,则指向该对象

的指针的类型为______。

5. 假定p是一个指向整数对象的指针,则用______

表示该整数对象,用______表示指针变量p的地址。 6. 假定p是一个指针,则*p++运算首先访问______,

然后使______的值增1。

7. 假定p是一个指针,则(*p)++运算首先访问

______,然后使______的值增1。

8. 假定p所指对象的值为25,p+1所指对象的值为

42,则*p++的值为______。

14

9. 假定p所指对象的值为25,p+1所指对象的值为

42,则*++p的值为______。

10. 假定p所指对象的值为25,p+1所指对象的值为

42,则执行(*p)++运算后,p所指对象的值为______。

11. 假定p所指对象的值为25,p+1所指对象的值为

42,则执行*(p)++或*p++运算后,p所指对象的值为______。

12. 假定a是一个一维指针数组,则a+i所指对象的

地址比a大______字节。

13. 假定a是一个一维数组,则a[i]的指针访问方式

为______。

14. 假定a是一个一维数组,则a[i]对应的存储地址

(以字节为单位)为______。

15. 一个数组的数组名实际上是指向该数组______元

素的指针,并且在任何时候都不允许______它。 16. 假定指向一维数组b[10]中元素b[4]的指针为p,

则p+3所指向的元素为______,p-2所指向的元素为______。

17. 若要定义整形指针p并初始指向x,则所使用的定

义语句为______。

18. 若p指向x,则______与x的表示是等价的。 19. 在一个二维数组int a[m][n]中,包含的一维元

素a[i]的类型为______,访问a[i]时返回的类型为______。

20. 假定一个二维数组为c[5][8],则c[3]的值为二

维元素______的地址,c[3]+2的值为二维元素______的地址。

21. 假定p为指向二维数组int d[4][6]的指针,则p

的类型为______。

22. 假定一个二维数组为char f[10][20],则一维元

素f[i]的类型为______,访问a[i]时返回值的类型为______,其值是元素______的地址。

23. 假定a是一个二维数组,则a[i][j]的指针访问方

式为______。

24. 若要把整形变量y定义为x的引用,则所使用的

定义语句为______。

25. 若y是x的引用,则对y的操作就是对______的

操作。

26. 若y是x的引用,则&y和&x的值______,即为变

量______的地址。

27. 执行int *p=new int 操作可得到一个动态分配

的整型对象______。

28. 执行int *p=new int [10]操作,使p指向动态

分配的数组中下标为______的元素,该元素可表示为______或______。

29. 执行 char *p=new char(‘a’)操作后,p所指

向的数据对象的值为______。

30. 执行new char [m][n]操作时的返回值的类型为

______。

31. 执行______操作将释放由p所指向的动态分配的

数据空间。

32. 执行______操作将释放由p所指向的动态分配的

4. #include

void main() {

int a[8]={46.38.72.55.24.63.50.37};

int max=*a,min=*a;

for(int *p=a+1;p

数组空间。

二、写出下列每个程序运行后的输出结果并上机验证 1. #include

void main() {

char a[15]=”1352460357589”;

char *p=a; int c1,c3,c5; c1=c3=c5=0; while(*p) {

if(*p==’1’) c1++;

else if(*p==’3’) c3++; else if(*p==’5’) c5++; p++; }

cout<

2. #include

void main() {

int a[8]={3,5,7,9,11,13,15,17}; int *p=a;

for(int i=0;i<8;i++) {

cout<

if ((i+1)%4==0) cout<

3. #include

void main() {

int a[8]={46.38.72.55.24.63.50.37};

int s=0; int *p=a+3;

while (p

if (*p>max)max=*p; if (*p

cout<

5. #include

void main() {

int a[5]={3,6,9,12,15}; int *p=a;

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

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

cout<

6. #include

void main() {

int a[8]={4,8,12,16,20,24,28,32}; int *p=a; do{

cout<<*p<<’ ‘; p+=2;

}while(p

7. #include

void main() {

int x=20,y=40,*p; p=&x;cout<<*p<<’ ‘; *p=x+10;

p=&y;cout<<*p<

*p=y+20;cout<

15

8. #include

void main() {

int x=12,*xp=&x; *xp=x+5;

cout<<*xp<<’ ‘<

cout<<*xp<<’ ‘<

9. #include

void main() {

char a[3][15]={“computer”,”typewriter”,”telephone”}; char(*p)[15]=a;

for(int i=0;i<3;i++) cout<<*p++<

10. #include

#include typedef char AA[10]; void main() {

AA a,b=”camera”;

char *ap=a,*bp=b+strlen(b); while(bp!=b) *ap++=*--bp; *ap=’\\0’;

cout<

11. #include

const n=5; void main() {

int a[n]={3,10,5,4,7};

int *p1=a,*p2=a+n-1; while(p1

int x=*p1; *p1=*p2; *p2=x; p1++;p2--; }

for(int i=0;i

12. #include

void main() {

16

int x=24; int &y=x;

cout<

cout<

}

13. #include

void main() {

int x=23;

int *p1=new int (5); int *p2=new int(x-8);

cout<<*p1<<’ ‘<<*p2<

cout<<*p1<<’ ‘<<*p2<

14. #include

const int n=12; void main() {

int *a=new int[n]; a[0]=0;a[1]=1;

for(int i=2;i

cout<

if((i+1)%6==0)cout<

delete []a; }

第六章 函数 一、填空题

1. 一个函数调用表达式能够作为左值的条件是:函

数的返回值必须是______类型。

2. 假定一个函数的数组参数说明为char a[],则等

价的指针参数说明为______。

3. 假定一个函数的二维数组参数说明为int w[][N],

则等价的指针参数说明为______。

4. 假定一个参数说明为const int a,则在函数体中

______(能够/不能够)改变a的值。