特意为大家整理的09年4月全国计算机等级二级C语言考前练习,希望对大家的备考有好的帮助!
1.有以下程序:
main()
{char a[]="abcdefg",b[10]="abcdefg";
printf("%d %d\n",sizeof(a),sizeof(b));
}
执行后输出结果是()
A)7 7
B)8 8
C)8 10
D)10 10
2.有以下程序:
void swapl(int c[])
{int t;
t=c[0];c[0]=c[1];c[1]=t;
}
void swap2(int c0,int c1)
{int t;
t=c0;c0=c1;c1=t;
}
main()
{int a[2]={3,5},b[2]={3,5};
swap1(a);swap2(b[0],b[1]);
printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);
}
其输出结果是()
A)5 3 5 3
B)5 3 3 5
C)3 5 3 5
D)3 5 5 3
3.有以下程序:
void sum(int *a)
{a[0]=a[1];}
main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--)sum(&aa[i]);
printf("%d\n",aa[0]);
}
执行后的输出结果是()
A)4
B)3
C)2
D)1
4.有以下程序:
int f(int b[][4])
{int i,j,s=0;
for(j=0;j<4;j++)
{i=j;
if(i>2)i=3-j;
s+=b[i][j];
}
return s;
}
main()
{int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};
printf("%d\n",f(a));
}
执行后的输出结果是()
A)12
B)11
C)18
D)16
5.有以下定义:
#include
char a[10],*b=a;
不能给a数组输入字符串的语句是()
A)gets(a)
B)gets(a[0]);
C)gets(&a[0]);
D)gets(b);
6.有以下程序:
main()
{char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};
printf("%d\n",strlen(p[4]));
}
执行后输出结果是()
A)2
B)3
C)4
D)5
7.有以下程序:
int a=2;
int f(int *a)
{return(*a)++;}
main()
{int s=0;
{int a=5;
s+=f(&a);
}
s+=f(&a);
printf("%d\n",s);
}
执行后输出结果是()
A)10
B)9
C)7
D)8
8.有以下程序:
#define f(x) x*x
main()
{int i;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
执行后的输出结果是()
A)28
B)22
C)16
D)4
9.设有以下语句:
typedef struct S
{int g;char h;}T;
则下面叙述中正确的是()
A)可用S定义结构体变量
B)可以用T定义结构体变量
C)S是struct类型的变量
D)T是struct S类型的变量
10.有以下程序:
struct STU{
char name[10];
int num;
};
void f1(struct STU c)
{struct STU b={"LiSiGuo",2042};
c=b;
}
void f2(struct STU *c)
{sturct STU b={"SunDan",2044};
*c=b;
}
main()
{struct STU a={"YangSan",2041},b={"WangYin",2043};
f1(a);f2(&b);
printf("%d%d\n",a.num,b.num);
}
执行后的输出结果是()
A)2041 2044
B)2041 2043
C)2042 2044
D)2042 2043
答案:1.C 2.B 3.A 4.D 5.B 6.A 7.C 8.A 9.D 10.A
11.s1和s1已正确定义并分别指向两个字符串,若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是()
A)if(s1>s2)S;
B)if(strcmp(s1,s2))S;
C)if(strcmp(s2,s1)>0)S;
D)if(strcmp(s1,s2)>0)S;
12.设有定义语句intx[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()
A)for(i=0;i<6;i++)printf("%2d",*(p++));
B)for(i=0;i<6,i++)printf("%2d",*(p+i));
C)for(i=0;i<6;i++)printf("%2d",*p++);
D)for(i=0;i<6;i++)printf("%2d",(*p)++);
13.以下程序的输出结果是()
#include<stdio.h>
main()
{int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
*q=*(q+5);
printf("%d%d\n",*p,*q);
}
A)运行后报错
B)66
C)611
D)510
14.设有以下定义和语句int a[3][2]={1,2,3,4,5,6},*p[3];
p[0]=a[1];
则*(p[0]+1)所代表的数组元素是()
A)a[0][1]
B)a[1][0]
C)a[1][1]
D)a[1][2]
15.以下程序的输出结果是()
main()
{char str[][10]={"china","Beijing"},*p=str;
printf("%s\n",p+10);
}
A)China
B)Beijing
C)ng
D)ing
16.Examda提示: 以下程序的输出结果是()
main()
{char s[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);
}
A)ABCD
BCD
CD
D
B)A
B
C
D
C)B
C
D
D)BCD
CD
D
17.在函数调用过程中,如果函数funA调用了函数funB,函数funB Examda提示: 又调用了函数funA,则()
A)称为函数的直接递归调用
B)称为函数的间接递归调用
C)称为函数的循环调用
D)C语言中不允许这样的递归调用
18.已有定义:int i,a[10],*p;,则合法的赋值语句是()
A)p=10;
B)p=a[5]
C)p=a[2]+2;
D)p=a+2;
19.以下叙述中正确的是()
A)局部变量说明为static的存储类,其生存期将得到延长
B)全局变量说明为static存储类,其作用域将被扩大
C)任何存储类的变量在未赋初值时,其值都是不确定的
D)形参可以使用的存储类说明符与局部变量完全相同
20.设有定义语句:char c1=2,c2=2;,则以下表达式中值为零的是()
A)c1^c2
B)c1&c2
C)~c2
D)c1|c2
答案:1.D 2.D 3.A 4.C 5.B 6.D 7.B 8.D 9.A 10.A
3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/