2006 – 2007 学年第二学期期末试卷(A)
一、程序选择(每题3分,共30分,将答案的序号填入括号中)
1. 假定w,x,y,z和m均为int型变量,有如下程序段: w=1; x=2; y=3; z=4; m=(w m=(m m=(m B. 3 C. 2 D. 1 则执行程序段后,m的值为( ): 2. 下面程序输出结果是( ): int j=4,k=11; switch(k%j){ case 1:k++; case 2:j++; case 3:k-=j; case 0:k+=j; } cout< if(m++>5)cout< A. 7 B. 6 C. 5 D. 4 4. 下面程序输出结果是( ): int i=5;int j=10; while(i<15) { } cout< A. 95 B. 59 C. 84 D. 48 6. 下面程序的运行结果是( )。 06计教1班,东墩04五专1、2、3、4班《C++程序设计》试题A卷 第1 页 (共 8 页) A. 47 B. 415 C. 411 D. 以上都不对 3. 下面程序输出结果是( ) if(i A. 55 B. 66 C. 1515 D. 1010 5. 下面程序输出结果是( ): void main(){ int y=18,i=0,j,a[8]; do { a[i]=y%2;i++; y=y/2; }while(y>=1); for(j=i-1;j>=0;j--)cout< A. 10000 B. 10010 C. 0010 D. 10100 7. t为int型变量,进入下面的循环之前,t的值为0, while(t=1) { ...... } 则以下叙述中正确的是( ) A. 循环控制表达式的值为0 B. 循环控制表达式的值为1 C. 循环控制表达式不合法 D. 以上说法都不对 8. 有以下程序 void main(){ char a[]={'a','b','c','d','e','f','g','h','\\0'}; i=sizeof(a); } 程序运行后的输出结果是( )。 9. 设有函数定义: int f(char *s){ char *p=s; while(*p!='\\0')p++; return (p-s); } void main(){ cout< 则输出结果为( )。 int fun3(int x){ static int a=3; a+=x; return a; } 06计教1班,东墩04五专1、2、3、4班《C++程序设计》试题A卷 第2 页 (共 8 页) int i,j; j=strlen(a); cout< A. 9,9 B. 8,9 C. 1,8 D. 9,8 A. 3 B. 7 C. 8 D. 0 10. 下面程序的输出结果是( )。 void main(){ int k=2,m=1,n; n=fun3(k); n=fun3(m); cout< A. 3 B. 4 C. 6 D. 9 二、写结果题(每题5分,共20分, 将结果写在每题右方) 1. [ZZ]设有以下程序: void main(){ int a,b,k=4,m=6; int *p1=&k,*p2=&m; a=p1==&m; b=(*p1)/(*p2)+7; cout<<\ cout<<\} 执行该程序后,a的值为___________, b的值为___________ 2. 写出下列程序的运行结果: #include \void main(){ int x,y,z; x=1; y=1; z=1; x=x||y&&z; cout< 3. 写出下列各题最后一个表达式的值: (1) int i=6,j=30; if(i=j)i++; if(i float x=2.5, y=4.7; int a=7; x+a%3*(int)(x+y)%2/4; 06计教1班,东墩04五专1、2、3、4班《C++程序设计》试题A卷 第3 页 (共 8 页) (3) #define v i+j int i=4,j=15; i+=v/3; 4. 写出下列程序的运行结果: #include \void main(){ for(int i=1;i<6;i++) { } } for(int j=0;j 三、程序填空(每题5分,共30分, 将答案填入空格中) 1. [NC]以下程序片段的功能是先从键盘输入一个数N,然后输入N个整数,接着求出这N个数的最小值并显示结果。请根据题意填空。 void main(){ int N; cin>> N; //读入数N int *p= ①____________________; //申请内存,以存放N个整数 int i,min; for(i=0; i cin>> ②________________; min=p[0]; for(i=0; i if(min ③________________) min= ④____________________; cout< ⑤_________________________; //释放内存 } 2. [ZZ,HS,DG]以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。 #include \#define N 10 void invert(int *s,int i,int j)//i,j为要逆序排列的元素最小下标及最大下标 06计教1班,东墩04五专1、2、3、4班《C++程序设计》试题A卷 第4 页 (共 8 页) { int t; if(i void main() { int a[N],i; for(i=0;i cin>> ④______________; //读入N个数到数组中 invert(a,0,N-1); for(i=0;i 3. [SZ,HS]以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值,请填空。 #define N 3 #define M 4 void LineMax(int x[N][M]) { int i,j,p; for(i=0;i< ①____________;i++) { } } void main() { 06计教1班,东墩04五专1、2、3、4班《C++程序设计》试题A卷 第5 页 (共 8 页) t= ①_____________; *(s+i)=*(s+j); ②_______________=t; invert(s, ③__________,j-1); cout<< ⑤_____________;<<\显示N个数 cout< p=0; for(j=1;j< ②____________;j++) if(x[i][p] p= ③___________________; //记录较大的值所在的下标 cout<<\<< ④_________________<