习题4及其解答(第二版)doc.doc
《习题4及其解答(第二版)doc.doc》由会员分享,可在线阅读,更多相关《习题4及其解答(第二版)doc.doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章 数组4.1 选择题1以下对一维数组 a 的正确定义是( c )。(a) int n = 5, an;(b) int a(5);(c) const int n = 5; int an;(d) int n; cinn; int an;2以下数组定义语句中,不合法的是( a )。(a) int a3 = 0, 1, 2, 3 ;(b) int a = 0, 1, 2 ;(c) int a3 = 0, 1, 2 ;(d) int a3 = 0 ;3已经知道 int a10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , *p = a ;那么不能表示数组 a 中元素的式子是(
2、c )。(a) *a (b) *p (c) a(d) a p-a 4已经知道 int a = 0,2,4,6,8,10 , *p = a+1; 其值等于0的表达式是( d )。(a) *(p+) (b) *(+p)(c) *(p-)(d) *(-p)5以下不能对二维数组a进行正确初始化的语句是( c )。(a) int a23 = 0 ;(b) int a3 = 0,1 , 0 ;(c) int a23 = 0, 1 , 2, 3 , 4, 5 ;(d) int a3 = 0, 1, 2, 3, 4, 5 ;6已经知道int a3 = 0, 1 , 2, 3, 4 , 5, 6 , 7 ; 那
3、么 a21的值是( c )。(a) 0 (b) 2 (c) 6 (d) 77已经知道int a33 = 1, 2, 3, 4, 5, 6, 7, 8, 9 ; 那么不能表示数组元素a21的地址是( b )。(a) &a21 (b) *(a2+1) (c) a2+1 (d) *(a+2)+18已经知道char *a= fortran, basic, pascal, java, c+ ; 那么 couts2 (b) strcmp(s1,s2)=0(c) strcmp(s1,s2)0 (d) strcmp(s2,s1)04.2 阅读以下程序,写出执行结果1#include void main() i
4、nt i, conut=0, sum=0 ; float average ; int a = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; for( i=0; i10; i+ ) if( ai % 2 = 0 ) continue ; sum += a i ; conut + ; average = sum / conut ; cout conut = conut t average = average endl ;【答案】conut = 5 average = 52#include void main() int a9 = 1, 2, 3, 4, 5, 6, 7, 8, 9
5、 ; int *p = a , sum = 0 ; for( ; pa+9; p+ ) if( *p % 2 = 0 ) sum += *p ; cout sum = sum endl ;【答案】sum = 203const int n = 5 ;#include #include void main() int ann= 0 , i, j, k ; for( k=1 , i=0 ; i= 0; j- , k+ ) aji - j = k ; for( i=0 ; in ; i+ ) for( j=0; jn ; j+ ) cout setw( 3 ) aij ; cout endl ; 【答
6、案】 1 3 6 10 15 2 5 9 14 0 4 8 13 0 0 7 12 0 0 0 11 0 0 0 0 4int f(int ,int);#include void main() int a = -1, 3, 5, -7, 9, -11 ; cout f( a, 6 ) endl ;int f( int a, int size ) int i, t=1 ; for( i=0 ; i0 ) t *= ai ; return t;【答案】 1355int f( int 3, int, int ) ;#include void main() int a3 = 0, 1, 2, 3, 4
7、, 5, 6, 7, 8 ; cout f( a, 3, 3 ) endl ;int f( int a3, int row, int col ) int i, j, t=1 ; for( i=0; irow; i + ) for( j=0; jcol; j+ ) aij + ; if( i = j ) t *= aij ; return t ;【答案】 456#includevoid test1( int *a1 ) a1 = new int( 5 ) ; cout *a1 = *a1 endl ;void test2(int * & a2) a2 = new int( 5 ) ; cout
8、*a2 = *a2 endl ;void main() int *p = new int( 1 ) ; test1( p ) ; cout test1: *p1 = *p endl ; test2( p ) ; cout test2: *p2 = *p endl ;【答案】 *a1= 5 test1: *p1= 1 *a2= 5 test2: *p2= 57#include void main() char s = abccda ; int i ; char c ; for( i = 1 ; ( c=si ) != 0; i + ) switch( c ) case a : cout % ;
9、continue ; case b : cout $ ; break ; case c : cout * ; break ; case d : continue ; cout # endl ; 【答案】$# *# *# %8#include void main() char *str = c+, basic, pascal ; char *p ; int i ; p = str ; for( i=0 ; i3 ; i+ ) cout *( p+i ) endl ;【答案】 c+ basic pascal9#include void main() char s1 = Fortran , s2 =
10、 Foxpro ; char *p , *q ; p = s1 ; q = s2 ; while( *p & *q ) if ( *p = *q ) cout *p ; p + ; q + ; cout endl ;【答案】For10#include #include void main() char str10 = vb, pascal, c+ , s10 ; strcpy( s , ( strcmp( str0 , str1 ) 0 ? str0 : str1 ) ) ; if( strcmp( str2, s ) 0 ) strcpy( s, str2 ) ; cout s endl ;
11、【答案】C+4.3 思考题1数组说明语句要向编译器提供什么信息?写出一维数组、二维数组说明语句的形式。2数组名、数组元素的区别是什么?归纳一维数组元素地址、元素值不同的表示形式。有说明int aa 3, *pa=aa;使用aa或pa,写出3个以上与aa2 等价的表达式。3要把一维数组 int an*n 的元素传送到二维数组 int bnn 中,即在程序中要执行bij=ak;写出ki,j的下标变换公式,并用程序验证之。4有以下函数void query() int *p; p=new int3; / delete p; p=new double5; / delete p;出现了编译错误。请分析错误
12、的原因,并把上述程序补充完整,上机验证你的判断。5有以下程序根据输入值,调用函数create建立并初始化动态数组,令ai=i。该程序运行后,主函数不能返回期望值。请分析程序的错误原因并修改之。#include void create(int *, int);void main() int *a, len; cinlen; create(a,len); for( int i = 0; ilen; i+ ) cout ai ; cout endl; delete a;void create(int *ap, int n) ap=new intn; for(int i=0; in; i+) api=
13、i;4.4 编程题1已经知道求成绩的平均值和均方差公式:,, 其中n为学生人数,s为第i个学生成绩。求某班学生的平均成绩和均方差。【解答】#include #include void main() double s = 76, 85, 54, 77, 93, 83, 90, 67, 81, 65 ; double sum1=0,sum2=0,ave,dev; int n, i; n = sizeof( s )/sizeof( double ); /求数组元素的个数 for( i=0; in; i+ ) sum1 += si; ave = sum1/n; for( i=0; in; i+ ) s
14、um2 += pow( si-ave, 2 ); dev = sqrt( sum2/n ); cout rve= ave t dev= dev endl; 2用随机函数产生10个互不相同的两位整数存放到一维数组中,并输出其中的素数。【解答】#include #include #include #include void main() int a10,i,j; long m; srand( time(0) ); /为随机数生成器设置种子值 for( i=0; i10; i+ ) l:ai = rand(); /产生随机数存放到数组中 if ( ai=100 ) goto l; for( j=0;
15、 ji; j+ ) if( ai=aj ) goto l; for( i=0; i10; i+ ) cout ai ; cout endl; for( i=0; i10; i+ ) double m=sqrt( ai ); for( j=2; jm ) cout ai ; cout 是素数! endl; 3将一组数据从大到小排列后输出,要求显示每个元素及它们在原数组中的下标。【解答】#include void main() int a = 38, 6, 29, 1, 25, 20, 6, 32, 78, 10 ; int index10; int i,j,temp; for( i=0; i10
16、; i+ ) indexi = i; for( i=0; i=8; i+ ) for( j=i+1; j=9; j+ ) if( ai aj ) temp = ai; ai = aj; aj = temp; temp = indexi; indexi = indexj; indexj = temp; for( i=0; i10; i+ ) cout ai t indexi endl;4从键盘上输入一个正整数,判别它是否为回文数。所谓回文数是指正读和反读都一样的数。例如,123321是回文数。【解答】在程序中,首先拆分整数的每位数字按顺序存放到一个一维数组中。然后用两个变量记录数组元素最大和最小
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 及其 解答 第二 doc
限制150内