同济大学本科课程期末考试统一命题纸 A卷
课程: 课号: 任课老师:
出考卷教师签名:
2006-2007学年第一学期
C++语言 专业:
姓名: 学号:
考试日期:
班级: 考查
教学管理室主任签字:
一、选择填空 (30分)
1) 下列变量名中,( D )是合法的。
A、a D、_point 2) 若有以下定义: char c; int a;float x; double y; 则表达式a-c+x/y值的类型为( D )。 A、 float B、 int C、 char D、 double 3) 在int b[3][3]={{1},{3,2},{4,5,6}};中,b[2][2]的值是( C )。 A、0 B、5 C、6 D、2 4) 用指针来表示数组中的某个元素时,下列表示中( A )是错误的。 已知:int x[5][8];int *p=x[0]; A、*(*(x++)); B、*(*x+3); C、*(p+32); D、*(&x[0][0]+2); 5) 下列给字符数组进行初始化中,( B)是正确的。 A、char s2[3]=“xyz”; B、char s1[]=“abcd”; C、char s3[3][]={‘a’,‘x’,‘y’}; D、char s4[2][3]={“xyz”,“abc”}; 6) 已知int a,b; 下列switch语句中,( D )是正 确的。 A、switch(a) B、switch(a+b) {case a:a++;break; {case 1:a+b;break; case b:b++;break;} case 4*a:a-b;} C、switch(a*a) D、switch(a/10+b) {case 1,2:++a; {case 5:a/5;break; case 3,4:++b; } default:a+b; } 7) 已知int a=3,b=0; !a&&a+b&&a++;a||b++||a+b;当 逻辑表达式执行完毕后,a和b的值分别为:( A ) A、3,0 B、3,1 C、4,0 D、4,1 8) 有以下程序 union { float x; char c; } a; struct { float x; char c; } b; void main( ) { printf(\ 程序输出结果是( B )。 A、5,5 B、4,5 C、 5,4 D、4,4 9) 对于int (*pa)[5];的描述,( A )是正确的。 A、 pa是一个指向数组的指针,所指向的数组有5个int型元素; B、 pa是一个指向某数组中第5个元素的指针, 该元素是int型变量; C、 pa[5]表示某个数组的第5个元素的值; D、 pa是一个具有5个元素的指针数组,每个元素是一个int型指针; 10) 以下叙述中( C )是错误的。 A、在函数之外定义的变量是全局变量。 B、在函数体和复合语句内定义的变量是局部变量。 C、同一函数内局部变量不允许同名; D、函数的形参属于局部变量。 二、写出下列各程序运行时的输出结果 (50分) 1. #include #include void main( ) { char x=?x?,y=?y?; int a; a=x printf(“%d\\n”,a); } 1 1 3 3. #include printf(\ a=b++ + c++; printf(\ a=++b + c++; printf(\ printf(\} 4,2,2 4,3,3 7,4,4 8,4,1 4. #include #include void func(int *a,int b[]) { b[0]=*a+6; *a=b[1];} void main() { int a,b[5]={2,4,6,8,10}; a=0; func(&a,b); printf(\ } 4,6 6. #include w+=x; } void main() { w=5; f(w); printf(\} 10 7. #include for(i=2;i>0;i--) { x++; for(j=0;j<=3;j++) { if(j%2)continue; x++; } x++; } printf(\} x=8 8. #include void swap(int *p1,int *p2) { int *p; p=p1;p1=p2;p2=p; } void main() { int a=7,b=8; swap(&a,&b); printf(\ } 7,8 9. #include int *p; } ST; ST *ss; ST array[3]={1001,&x,1002,&y,1003,&z}; void main() { ss = &array[0]; for(;ss printf(\} 1001,3 1002,6 1003,9 10. #include void main() { int a[5] ={1,3,5,7,9}; fun(a,5); for(int i=0;i<5;i++) printf(“%d\\n”,*(a+i)); } 9 7 5 3 1 三、编程 (20分) 1) 根据函数原型定义,写出实现矩阵相加的函数程序 #include void Matrix_add(int *,int *,int *,int); //函数声明 void main() { int i,j; int a[3][3]={ {1,2,3}, {4,5,6}, {7,8,9} }; int b[3][3]={ {1,0,0}, {2,2,0}, {3,3,3} }; int c[3][3]={0}; Matrix_add(a[0],b[0],c[0],3); for (i=0; i < 3; i++) { for (j=0; j < 3; j++) printf(\ printf(\} // 函数程序写在下面空白处 void Matrix_add(int *a,int *b,int *c,int n) { int i,j; for(i=0;i 2) 根据函数原型定义,写出实现将字符串str1复制到字符串str2中的函数程序 #include void string_copy(char *,char *); //函数声明 void main() { char str1[]=\ char str2[32]; string_copy(str1,str2); printf(\} // 函数程序写在下面空白处 void string_copy(char *str1,char *str2) { for( ; *str1 != ?\\0?; str1++,str2++) *str2 = *str1; *str2 = ?\\0?; }
相关推荐: