计算机程序设计基础(C++)(景红版)课后全部习题及参考答案(3)

2019-04-21 22:08

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

for(j=i+1;j<4;j++)

{k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;} for(i=0;i<4;i++)

{ for(j=0;j<4;j++)

cout<

6. #include using namespace std; void main( )

{ const int N=7;

int a[N][N],i,j; for(i=0;i

a[i][j]=1; for(i=0;i

a[i][j]=a[i][j-1]+a[i][j-2]; for(i=0;i

if (jcout<

7.#include

#include using namespace std;

void main( )

{ const int N=5; int a[N][N]; int i,j; for(i=0;i

for(j=1;j

{ for(j=0;j

cout<<\ \ for(j=0;j<=i;j++)

cout< a[i][i]=1; }

cout<

} }

8. #include #include using namespace std;

void main( )

{ int a[10]={1,1,2,3,2,7,4,2,8,9}; int b=32%6; int i,j,c=0,k=9; for(i=0;i<9;i++) { if(a[i]==b) { c=c+1; k--;

for(j=i;j<9;j++) { a[j]=a[j+1];} i--;

}

}

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

cout<

}

四、程序填空题

1.功能:将若干个数按从小到大顺序排序。 #include using namespace std;

void main( )

{ int i,j; double temp; double a[11];

cout<<\输入需排序的10个数:\

for(i=1;i<11;i++) cin>>a[i]; for(i=1;i<=9;i++)

for( ① ) if( ② ) { temp=a[i]; ③ ; ④ ;}

cout<<\排序后的10个数为:\ for(j=1;j<=10;j++) cout<

2.功能:使用冒泡法对10个数从大到小排序。 #include void main( )

{ const int N=10; int a[N], j,k;

cout<<\

for(j=0;j>a[j]; for(j=0;j

for(k=0; ① ; k++)

if( ② )

{ a[k]+=a[k+1]; ③ ; ④ ;for(j=0; ⑤ ;j++) cout<

cout<

3.功能:把一个数列中的所有相同的数删到只剩下一个。 #include using namespace std; void main( ) { int a[10],i,j,pos=1;

for(i=0;i<10;i++) cin>>a[i]; for(i=1;i<10;i++)

{ for(j=0; ① ;j++) if (a[i]==a[j]) break;

if( ② ) { a[pos]=a[i]; pos++; } }

for(i=0; ③ ;i++)

cout<

cout<

}

五、程序改错 功能:折半查找

1 #include 2 using namespace std; 3 void main( )

4 { int a[10],low=9,mid,high=0,x,pos;

5 cout<<\请输入10个数(降序):\6 for(int i=0;i<=10;i++) 7 cin>>a[i];

}

8 cout<<\请输入欲查找的数:\ 9 cin>>x;

10 while(low<=high) 11 {

12 mid=(low+high)/2; 13 if(a[mid]=x) 14 { pos=mid; 15 break; } 16 else if(a[mid]>x) 17 high=mid-1; 18 else

19 low=mid+1; 20 }

21 if(low>high)

22 cout<<\没有找到\

23 else

24 cout<

25 }

本题有七个错误,写出错误行号及正确语句。 ( )

第5章 指针的应用

一、判断题

( )1. 从内存单元中存取数据的方法有直接访问方式和间接访问方式。 ( )2. 能够直接赋值给指针变量的整数是0和1。

( )3. 声明了指向int类型的指针,该指针可以被赋予任何类型对象的地址。 ( )4. 变量的指针,其含义是指该变量的地址。

( )5. 设有如下定义语句:int *p,a;则语句 p=&a;中的运算符‘&?的含义是取变量的值。

( )6. 在使用指针变量时,可以把常量或表达式的地址赋给指针变量,表示该指针指向常量或表达式的地址。

( )7. 设有定义语句:int a[10];该数组的数组名a是数组首地址,是一个地址常量,是数组第一个元素的地址。

( )8. 设有如下语句:int *p,a[10]={0};则可用语句: { for(p=a;p

cin>>*p; } 从键盘输入数组的值。

( )9. 在操作一个一维数组时,可能会用到两个指针变量指向该数组,这两个指针变量

之间可以进行关系运算,其关系运算的结果表明了这两个指针变量所指向的数组元素的

先后关系。

( )10. 对于已经定义好的相同的两个指针变量之间,可以进行加法运算、减法运算和赋值运算。

( )11. 设有如下一段程序: int *var,ab;;ab=100;var=&ab;ab=*var+10;执行上面的程

序段后;ab的值为 110。

( )12. 有如下定义语句:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式可以表示为 *p+=9。

( )13. 有定义语句:int a[5][5],*p;二维数组a首地址可表示为:p=a[0]或p=&a[0][0]。 ( )14. 有定义语句:int a[3][2]={6,5,4,3,2,1},*p=a[0];cout<<*(p+5)<

输出的值为2。 ( )15. 在VC++中,存储的分配有两种,即静态存储分配和动态存储分配。

( )16. 静态存储分配:是指程序中使用的变量和数组的类型、数目和大小,是在编程

时由程序员分配确定下来的,因此,在程序运行时这些数据占据的存储空间数也是一定的。

( )17. 动态存储分配:在程序运行过程中按照实际需要申请适量的内存单元,使用结

束后还可以释放,这种存储分配方法被称为动态存储分配。

( )18. 实现动态分配内存,需要运用指针和使用运算符:new和delete。

( )19. 使用动态存储分配时,用运算符new获取的内存空间,不必须用delete进行释放。

( )20. 对一个指针可以多次调用delete运算符进行释放。在使用delete运算符进行释放

时,不用考虑数组的维数。 二、单项选择题

1. 下列关于指针运算的描述错误的是( )。 (A) 指针变量是用于存储变量地址的变量 (B) 指针变量是用于存储变量值的变量 (C) 在一定条件下,指针变量可以为空值

(D) 可以使用指针变量来访问数组

2. 若已经定义了a为int型变量,则对指针变量p的定义及初始化正确语句是( )。 (A) int *p=a; (B) int p=a; (C) int *p=*a (D) int *p=&a; 3. 若有定义:int x=0, *p=&x;,则语句:cout<<*p;的输出结果是( )。 (A) 随机值 (B) p的地址 (C) x的地址 (D) 0

4. 设有定义语句:int n=0,*p=&n,*q;则以下选项中,正确的语句是( )。 (A) p=1; (B) p=q; (C) *p=*q; (D) *p=5;

5. 已知一运行正常的程序中有下面的语句,由此可知,变量a和b的类型分别是( )。 int *p2=&x,*p1=a;*p2=*b;

(A) int和int (B) int *和int (C) int和int * (D) int *和int * 6. 设有如下的程序段,程序段运行后输出的结果是( )。 { int a=1,b=3,c=5;

int *p1=&a,*p2=&b,*p=&c;

*p=*p1*(*p2); cout<

}

(A) 1 (B) 3 (C) 5 (D) 15 7. 设有如下程序段:

int x=8,*p=&x;

cout<<*p++<

(A) 8 (B) 9 (C) 8的地址 (D) 9的地址


计算机程序设计基础(C++)(景红版)课后全部习题及参考答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:注射泵使用 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: