2008试卷答案 一.单项选择题(每题1分,共10分)
1.C 2.B 3.D 4.C 5.A 6.B 7.B 8.A 9.D 10.C
二、填空题(每题2分,共20分)
1. x=-1,y=1? 2. c=8 3. 4 4. 0 5. TUGWEB
6. (a>>31)==1或a&(1<<31)或~a 三、程序阅读题(共6题, 每小题5分,共30分) 1. ONALAMB 2. sum=47 3. a=98,b=11,c=32766 4. 19 5. 1 1 1 1 2 1 1 3 3 1 6. 9 10 11 12 13 8 21 22 23 14 7 20 25 24 15 6 19 18 17 16 5 4 3 2 1 四、程序(段)填空题(每空2分,共40分) (1) j=i+1 (2) break (3) j<=n-1或j!=n (4) i==n-1或i>=n-1或i>n-2 (5) a[n]='\\0' (6) unsigned int x,char a[]或unsigned int x,char *a (8) n+1 (9) fp1==NULL||fp2==NULL (10) !feof(fp1) (11) fscanf(fp1,\(12)strcpy(max.name,a.name) (13) n=strlen(s) (14) j=n-1;j>=1;j-- (15) s[0]=c (16) rotate(a,3) (17) a[i]='\\0' (18) a[i+n]!=' '&&a[i+n]!='\\0' (19) a[i+n-1-j] (20) i+=n (7) t[x] 2006~2007学年“C程序设计基础”试卷 考试时间: 2007年7月8日上午8:00-10:00 姓名___________________ 学号___________________ 成绩____________________ 一.单项选择题(每题1分,共10分) 2. 已知int i=1,j;char a=?a?;执行j=!a&&i++后,i和j的值分别是______。 A. i=1,j=1 B. i=2,j=1 2. 关于语句return,下列正确说法是,______。 A.可以在同一函数中出现多次 C. i=1,j=0 D. i=2,j=0 B.必须在每个函数中出现 C.只能在除主函数之外的函数中出现一次 D.在主函数中不能出现 3. 循环for(i=1,j=6;++i!=j--;)s=i+j;将执行是______。 A.2次 B.3次 C.4次 4. 字符串\的长度是_____________. A.8. B.7 C.6 D.5次 D.5 5. a,b为整型变量,二者均不为0,以下关系表达式中恒成立的是_______。 A.a*b/a*b==1; B.a/b*a/b==1; C.a/b*b+a%b==a; D.a/b*b==a; 6. 在C语言中,如果下面变量都是int类型,则输出的结果是_____。 sum=pad=5;pAd=sum++,pAd++,+pAd;printf(\A.7 B.6 C.5 D.4 7. 以下关于switch语句和break语句的描述中,只有_______是正确的。 A.在switch语句中必须使用break语句 B.break语句只能用于switch语句 C.在switch语句中可以根据需要使用或不使用break语句 D.break语句是switch语句的一部分 8. 以下对二维数组a进行正确初始化的是___________。 A.int a[2][3]={{1,2},{3,4},{5,6}}; B.int a[][3]={1,2,3,4,5,6}; C.int a[2][]={1,2,3,4,5,6}; D.int a[2][]={{1,2,3},{4,5,6}}; 9. int a,要使((1<<2>>1)|a)==a;则可以是____________.A.2 B.6 C.10 D.2,6,10均可 10. 若以下说明,int a[4][10],*p,*q[4];且0 A.p=a; B.q[i]=a[i]; C.p=a[i]; D.q[i]=&a[2][0]; 对于 二、填空题(每题2分,共20分) 1.设x,y,z均为int型变量,请写出x,y和z中有两个为负数的关系表达式。( ) 2.将26个英文字母按aAbBcCdD…….zZ先小写后大写的顺序依次打印出来。 #include {int i;char ch;ch='a'; for(i=0;i<26;i++) printf(\ , ); } 3.下列程序的输出结果是( )。 #define N 2 #define M N+2 #define CUBE(a,b) a*b+a/b #include printf(\ } 4.下列程序的输出结果是( )。 char s[20]=\ sp=sp+2; sp=\ puts(s); 5.下列程序的输出结果是( )。 #include { int s,i; for(i=1;i<=10;i++) s=sum(i); printf(\ } int sum(int k) { static int x=0; return x+=k; } 6. 执行该程序段后,i的值是( )。 int i; int f(int x) { return((x>0)?f(x-1)+f(x-2)+2:1); } i=f(3); 7. 下列程序的输出结果是( )。 void maon() { char s1[20]=\ if(strcmp(s1,s2)) printf(\else printf(\ } 8. 下列程序的输出结果是( )。 #include { static int a[]={2,4,6,8,10}; static *ptr[]={&a[0],&a[1],&a[2],&a[3],&a[4]}; int **p,j; for(i=0;i<5;i++) a[i]=a[i]/2+a[i]; p=ptr; printf(\ printf(\ 9. 若有以下的定义和语句,则表达式*++p->b的值是( )。 struct wc{ int a;int *b;}p;int x0[]={11,12},x1[]={31,32}; static struct wc x[2]={100,x0,300,x1};p=x; 10, 用typedef 定义一个字符型指针STRING。 三、程序阅读题(共30分) 2. 下列程序的输出结果。(3分) # include switch(b>0){ case 1:printf(\ case 2: printf(\} case 0: switch(c==5){ case 0:printf(\ case 1:printf(\ case 2: printf(\} default: printf(\} printf(“\\n”); } 3. 下列程序的输出结果。(4分) # include { int x=3; pintf(“1.x=%d\\n”,x); f1(); f2(); pintf(“4.x=%d\\n”,x); } void f1() { x+=1; pintf(“2.x=%d\\n”,x); } void f2() { int x=1;