C/C++语言试卷(A)和答案.doc
2007 2008学年第二学期C/C+语言程序设计试卷(A)年级专业 班级 学号 姓名_题号一二三四五总分得分适用年级专业:_ 07级信工、自动化、测控、电子技术专业 试卷说明:_闭卷笔试,120分钟_ 一单项选择题(每小题1分,共20分)在备选答案中只有一个是正确的,将其选出并把它的标号写在题后括号内1、假设定义:float x = 3, y = 3; 则复合赋值表达式x /= 1+y的值为( A )。 (A) 0 (B) 0.75 (C) 6 (D) 以上都错2、表达式: 3>5 && -1 | 6 < 3 - !-1的值是( A )。(A) 0 (B) 1 (C) 表达式不合法 (D) 均不对3、语句 if (3>2) a=1; else a=0; 运行后, a的值是( 1 )。(A) 1 (B) 0 (C) 与机器有关 (D) 语法有错4、类中的成员的访问权限不能定义为( D )。(A) public (B) protected(C) private (D) static5、执行下列程序段后,a值为( A )。a=1; b=2;printf( (a>b)?a+:+b);(A) 2 (B) 3 (C) 4 (D) 56、关于类和对象不正确的说法是( C )。(A) 类是一种类型,它封装了数据和操作 (B) 对象是类的实例(C) 一个类的对象只有一个(D) 一个对象必属于某个类7、下列程序段执行后s值为( C )。 int i=1, s=0;do s+=i; while (+i<3);(A) 1 (B) 45 (C) 25 (D) 以上均不是8、对于int a=0,则表达式 0<=a<1值是( B )。(A) 0 (B) 1 (C) 不定 (D) 表达式语法有错9、C语言源程序的基本单位是( B )。 (A) 过程 (B) 函数 (C) 子程序 (D) 标识符10、下列程序的输出结果是( C )。main( ) int a=7,b; printf("%dn",b=b/a);(A) 5 (B) 1 (C) 0 (D) 不确定值11、假设变量a,b均为整型,表达式(a=5,b=2,a>b?a+:b+,a+b)的值是( B )。(A) 7 (B) 8 (C) 9 (D) 212、设a为int型变量,执行下列赋值语句后,a的取值分别是( B )。a=125.534; a=(int)125.521%4; a=5<<2;(A) 125,31,1 (B)125,1,20 (C)125,31,20 (D) 125.534,2,2013、设有如下程序段,下面描述中正确的是( C )。int k=10; while(k) k=k-1;(A) 循环执行一次 (B) 循环是无限循环 (C) 循环体语句一次也不执行 (D) 循环体语句执行一次14、 以下程序的输出结果为( A )。int i;void prt( ) for(i=5;i<8;i+) printf("%c",'*'); printf("t");main( ) for(i=5;i<=8;i+) prt( ); (A)* (B) * * * * (C) * * (D) * * *15、 在C语言程序中,以下说法正确的是( B )。(A) 函数的定义可以嵌套,但函数的调用不可以嵌套(B) 函数的定义不可以嵌套,但函数的调用可以嵌套(C) 函数的定义和函数的调用都不可以嵌套 (D) 函数的定义和函数的调用都可以嵌套16、 以下函数调用语句中含有( A )个实参。func(e1,e2),(e3,e4,e5); (A) 2 (B) 3 (C) 5 (D) 语法错误17、 以下程序的输出结果为( A )。#define ADD(x) x*x main( ) int a=4,b=6,c=7,d=ADD(a+b)*c; printf("d=%d",d); (A) d=70 (B) d=80 (C) d=140 (D) d=70018、 已知职工记录描述如下,在Turbo C中,系统为变量w分配( C )字节的空间。struct worker int no; char name20; char sex; w; (A) 29 (B) 20 (C) 25 (D) 619、 设有以下定义,值为5的枚举常量是( A )。enum weeksun,mon=4,tue,wed,thu,fri,sat w;(A) tue (B) sat (C) fri (D) thu20、 下面选项中正确的赋值语句是(设 char a5,*pa;)( A )。(A) p="abcd" (B) a="abcd" (C) *p="abcd" (D) *a="abcd"二、填空题(每空1分, 共10分) 1、判断一个字符x是否是小写字母或数字的逻辑判断表达式是:: x>=48&&x<=57|x>=97&&x<=122 。2、用下列for循环将大写字母逆序输出(即从Z到A), 其语句应为:for (i=0; i<26; i+) printf(“%c”,90-i); ;3、5<<3十进制的值是 40 。4、若有定义: int m=5,y=2; 则执行表达式y+=y-=m*=y后的y值是 -16 。5、在C语言中,表示逻辑“真”值用 1 表示。6、x,y,z均为整型变量,请写出描述“x或y等于z”的表达式_ x=z|y=z _ _。7、continue 只能出现在 循环语句for 语句中。8、若已知a=1,b=2,则表达式!a<b的值为_ 1 _。9、C语言的基本数据类型分为_int _、_char _、_ _。10、已知字母'A'的ASCII码值为十进制数65,且ch为字符型,则执行语句ch='A'+'6'-'0后,ch的值为_G_ _。 三、程序分析题(每小题5分,共30分)阅读下述程序,按格式写出执行结果,注意:格式和结果分别计分1. #define X 5#define Y X+1#define Z 5main( )int a; a=Y; printf("Z=%d, a=%dn", Z, a); 执行结果为: 2. unsigned fun6(unsigned num) unsigned k=1; do k*=num%10; num/=10; while(num); return k; main() unsigned n=26; printf("fun=%dn",fun6(n);执行结果为:_ 3. main( ) int p7=11,13,14,15,16,17,18;int i=0,j=0;while (i<7 && pi%2=1) j+=pi+;printf(“n=dn”,j); 执行结果为: 4. main( ) int a44=1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18; int i=0,j=0,s=0; while(i+<4) if(i=2|i=4)continue;j=0;do s+=aij; while(j<4); printf(“s=dn”,s); 执行结果为: 5. #define PRINTAB printf("%d, %dn", a, b);#define PRINTXY printf("%d, %dn", x, y);void swap( int x, int y) int t; PRINTXY t=x; x=y; y=t; PRINTXYmain( ) int a=3, b=4; PRINTAB swap(a, b); PRINTAB 执行结果为: . 6. main( ) int a =1,2,3,4,5; int *p=a ;printf("%dn",*+p); printf("%dn",*p+); printf("%dn", (*p)+); printf("%dn",+*p); 执行结果为: 四、程序填充题(每空1分,共10分)阅读下列程序,在 处填入适当内容,使程序完整1试求出1000以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。) main() int n,s; (1) ; for(n=1; (2) ;n+) for(s=0,a=l;a<=n/2;(3) ) if(!(n%a) (4) ; if(5) ) printf("%4d",n); 2用“冒泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char strN; main() int i,flag; for(i=0;i<10;i+) scanf("%c",&stri); sort(1)_ _); for(i=0;(2) ;i+) printf("%c",stri); printf("n"); sort(str) char strN; int i,j; char t; for(j=1;j<N;j+) for(i=0;i<N-j;i+) if(stri> (3) ) t=stri; (4) _; (5) _; 五、编程题 (每题10分,共30分)1打印具有abcd=(ab+cd)2性质的全部四位数。2. 编写主函数,实现输入两个一般整数,完成两个数交换后再输出。3. 写一个程序,输入n, 输出n行数字三角图形。例如,输入n=4时, 输出以下图形:1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1Int add(int x,int y) Return x+y;Main() Int a,b; Scanf(“%d%d”,a,b)lPrintf(“%d”,add(a+b);2007 2008学年第二学期C/C+语言程序设计试卷答案(A)年级专业 班级 学号 姓名_题号一二三四五总分得分适用年级专业:_ 试卷说明:_闭卷笔试,120分钟_ 一单项选择题(每小题1分,共20分)在备选答案中只有一个是正确的,将其选出并把它的标号写在题后括号内1、A 2、A 3、B 4、D 5、A 6、C 7、C 8、B 9、B 10、C11、B 12、B 13、C 14、A 15、B 16、A 17、A 18、C 19、A 20、A二、填空题(每空1分, 共10分) 1、(x>=48&&x<=57|x>=97&&x<=122)2、printf(“%c”,90-i);3、404、-165、16、x=z|y=z7、循环8、19、int float char 10、G 三、程序分析题(每小题5分,共30分)阅读下述程序,按格式写出执行结果,注意:格式和结果分别计分1. Z=7 , a=6 2. fun=12 3. n=24 4. s=102 5. 3 , 4 3 , 4 4 , 3 . 3 , 4 6. 2 2 3 5 四、程序填充题(每空1分,共10分)阅读下列程序,在 处填入适当内容,使程序完整1试求出1000以内的“完全数”。(提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身),则称该数为“完全数”。如:6的因子是1、2、3,而6=1+2+3,则6是个“完全数”。) main() int n,s; (1) int a ; for(n=1; (2) n<1000 ;n+) for(s=0,a=l;a<=n/2;(3) a+ ) if(!(n%a) (4) s+=a ; if(5) n=s ) printf("%4d",n); 2用“冒泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char strN; main() int i,flag; for(i=0;i<10;i+) scanf("%c",&stri); sort(1)_ str _); for(i=0;(2) i<N ;i+) printf("%c",stri); printf("n"); sort(str) char strN; int i,j; char t; for(j=1;j<N;j+) for(i=0;i<N-j;i+) if(stri> (3) stri+1 ) t=stri; (4) stri=stri+1 _; (5) stri+1=t _; 五、编程题 (每题10分,共30分)1打印具有abcd=(ab+cd)2性质的全部四位数。(参考答案) main( ) int n , x , y ; for ( n=1000 ; n<=9999 ; n+) x=n/100 ; y=n%100 ; if ( n = ( x+y )*( x+y ) )printf(“%dn”,n); 2. 编写主函数,实现输入两个一般整数,完成两个数交换后再输出。(参考答案) void main() int x, y, z; printf(“Enter two numbers x y:”);scanf(“%d%d”, &x, &y); z=x; x=y; y=z; printf(“x=%d, y=%d”, x, y); 3. 写一个程序,输入n, 输出n行数字三角图形,例如,输入n=4时, 输出以下图形:1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1(参考答案)Void main() int i, j, n; printf(“Enter n:”); scanf(“%d”, n); for(i=0; i<n; i+) for(j=0; j<n-i-1; j+) printf(“ ”); for(j=0; j<=i; j+) printf(%5d, j+1); for(j=0; j<i; j+) printf(“%5d”, i-j) printf(“n”);