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 main()
{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 void main() { int i=m;
printf(\ }
4.下列程序的输出结果是( )。 char s[20]=\ sp=sp+2; sp=\ puts(s);
5.下列程序的输出结果是( )。 #include int sum(int k); main()
{ 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 void main()
{ 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 void main( ) { int a=2,b=7,c=5; switch(a>0){ case 1:
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 static int x=5; void f1(); void f2(); void main()
{ 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;