1、计算机等级二级C笔试考前练习习题 资料仅供参考 计算机等级二级C笔试考前练习习题一 1.打开一个已经存在的非空文本文件,若文件名为stu,则正确的打开语句为() A)FILE *fp; fp=fopen("stu.txt","r") B)FILE *fp; fp=fopen(stu.txt,r) C)FILE *fp; fp=fopen("stu.txt","wb") D)FILE *fp; fp=fopen("stu.txt",wb) 2.设有如下程序: char sub(char *q) { while(*q!
2、′\0′) {if(*q>=′A′&&*q<=′Z′) *q=*q+32; elseif(*q>=′a′&&*q<=′z′) *q=*q-32; printf("%c",*q); q++;}} main() {char *s="abcABC"; sub(s);} 则程序运行后的输出结果是() A)ABCabc B)abcABC C)abcabc D)ABCABC 3.在下列语句中,正确的是() A)static char str[]="China"; B)static char str[];str="C
3、hina"; C)static char str1[5],str2[]={"China"};str1=str2; D)static char str1[],str2[];str2={"China"};strcpy(str1,str2); 4.若在fopen函数中使用文件的方式是"wb+",该方式的含义是() A)为读/写打开一个文本文件 B)为输出打开一个文本文件 C)为读/写建立一个新的文本文件 D)为读/写建立一个新的二进制文件 5.以下关于宏与函数的叙述中正确的是() A)使用函数或宏命令对C的源程序都没有影响 B)函数具有类型,宏不具
4、有类型 C)函数调用和带参的宏调用都是将实参的值传给形参 D)使用函数比使用宏运行速度快 6.有以下程序: intx=1,y=2; void fun1() {x=3;y=4;} void fun2(intx,inty) {printf("%d,%d,\n",x,y);} main() {fun1(); printf("%d,%d,"x,y); fun2(5,6); } 程序的运行结果是() A)1,2,3,4 B)1,2,5,6 C)3,4,5,6 D)3,4,1,2 7.若有如下调用函数
5、 int sub(int *t) { return(t);} 该函数的返回值是() A)形参t中存放实参变量的地址值 B)形参t自身的地址值 C)指针变量t所指的实参变量的值 D)随机的值 8.下面程序的输出结果是() #define PI3.1415 #define ARE(x)PI*x*x main () { int r=2; printf ("%f",ARE (r+1)); } A)28.26 B)28.260000 C)9.28 D)9.280000 9.以下程序的输出结果是()
6、 main() { int a=2, k; for (k=0; k<3; k++) printf ("M",f1(a)); } f1(int a) { int b=0; static int c=3; b++;c++; return (a+b+c); } A)7 7 7 B)7 10 13 C)7 9 11 D)7 8 9 10.在下面关于指针的说法中,错误的一条是() A)变量的指针就是变量的地址 B)能够将一个整型量或任何其它非地址类型的数据赋给一个指针变量 C)一个指针变量只能指向同一
7、个类型的变量 D)指针变量中只能存放地址(指针) 答案: 1.A 2.A 3.A 4.D 5.B 6.C 7.A 8.D 9.D 10.B 计算机等级二级C笔试考前练习习题二 1.sizeof(double)是() A)一种函数调用 B)一个双精度型表示式 C)一个整型表示式 D)一个不合法的表示式 2.以下选项中错误的是() A)char*sp;gets(sp); B)charsp[5];gets(sp); C)char *sp="12345";gets(sp); D)char sp[5]="\0";gets(sp)
8、 3.在宏定义#define PI 3.14159中,用宏名PI代替一个() A)单精度数 B)双精度数 C)常量 D)字符串 4.设有如下定义: char *aa[2]={"abcd","ABCD"}; 则以下说法中正确的是() A)aa数组元素的值分别是"abcd"和"ABCD" B)aa是指针变量,它指向含有两个数组元素的字符型一维数组 C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D)aa数组的两个元素中各自存放了字符′a′和′A′的地址 5.有以下程序: #include void
9、 fun(int*s,int**d) {**d=*(s+2);} main() { inta[]={1,2,3,4,5},*b; b=(int*)malloc(sizeof(int)); fun(a,&b); printf("%d\n",*b+1); } 程序的输出结果是() A)2 B)3 C)4 D)5 6.若有如下程序: sub(int x) {int y=0;static int z=1; y+=x+2;z+=y+x; return(z);} main() {int t=1,n
10、 for(n=0;n<3;n++)printf("%d,",sub(t));} 则程序运行后的输出结果是() A)5,5,5 B)5,9,13, C)5,7,9, D)5,8,11, 7.若有如下定义和声明: structs { int m;char ch;double x; union t {char a[6];int b[3];} tt;} ss; 则sizeof(struct s)的值是() A)6 B)14 C)17 D)20 8.以下选项中的表示式调用库函数依次求-4.5的绝对值、-4.
11、0的平方根值、30°角的正弦值和2的3次方值。正确的调用是() A)abs(-4.5) B)sqrt(-4.0) C)sin(3.1416/6.0) D)paw(2.0,3.0) 9.若有如下程序: #definePI3.1415926 #defineA(r)2*PI*r main() {floata,l; a=3.0; l=A(a); printf("r=%.2f,l=%.2f\n",a,l);} 则程序运行后的输出结果是() A)r=3.00l=18.85 B)3.00,18.85 C)r=3.
12、000000l=18.8495555 D)r=3.0 l=18.8495555 10.若有如下程序: #include"stdio.h" voidmain() {FILE*fp; fp=fopen("test","wb") fprintf(fp,"%d%.1f,%c%c",5,238.41,′B′,′h′); fclose(fp);} 则程序运行后向文件输出的结果是() A)5 238.41 B hB)5238.4,Bh C)5,238.4,B,h D)5238.41Bh 答案:1.C 2.A 3.D 4.C 5.
13、C 6.B 7.C 8.C 9.A 10.B 计算机等级二级C笔试考前练习习题三 1.若有如下程序: void s(char *m,int n) {*m=*m+3;n=n+3; printf("%c,%c,",*m,n);} main() {char p=′b′,q=′B′; s(&q,p); printf("%c,%c\n",p,q);} 则程序运行后的输出结果是() A)E,e,b,E B)e,E,b,F C)E,e,e,E D)e,E,b,E 2.在C语言的函数中() A)必须有形参 B)形参必
14、须是变量名
C)能够有也能够没有形参
D)数组名不参与形参
3.若有如下程序:
sub(int *t,int n)
{int *p1,*p2;
for(p1=t,p2=t;p1-t
15、的整型变量时,表示“无符号整型”的符号是() A)unsigned int B)unsigned short C)long int D)unsigned long 5.以下程序段给数组所有的元素输入数据,请选择正确答案填入。() #include main() { int a[10],i=0; while(i<10) scanf("%d",); … } A)a+(i++) B)&a[i+1] C)a+i D)&a[i++] 6.若输入60和13,以下程序的输出结果为() #define SURPL
16、US(a,b)((a)%(b)) main() { int a,b; scanf("%d,%d",&a,&b); printf("\n",SURPLUS(a,b)); } A)60 B)13 C)73 D)8 7.在下列叙述中,正确的一条是() A)语句int *pt中的*pt是指针变量名 B)语句“int *p=a;”等价于“int *p;p=&a[0];” C)运算符*和&都是取变量地址的运算符 D)已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值 8.设有定义:#defineSTR"12
17、345";,则以下叙述中正确的是() A)宏名STR代替的是数值常量12345 B)宏定义以分号结束,编译时一定会产生错误信息 C)宏名STR代替的是字符串"12345"; D)宏名STR代替的是字符串常量"12345" 9.fprintf函数的一般调用方式是() A)fprintf(格式字符串,文件指针,输出表列); B)fprintf(文件指针,格式字符串,输出表列) C)fprintf(文件指针,格式字符串,输出表列); D)fprintf(fp,格式字符串,输出表列); 10.函数调用语句:fseek(fp,-20L,SEEK
18、END);的含义是() A)将文件位置指针移到距离文件头20个字节处 B)将文件位置指针从当前位置向后移动20个字节 C)将文件位置指针从文件末尾处向后退20个字节 D)将文件位置指针移到离当前位置20个字节处 答案:1.A 2.C 3.A 4.A 5.D 6.D 7.D 8.C 9.C 10.C 计算机等级二级C笔试考前练习习题四 1.下面程序的输出结果是() func (int x) { static int a=2; return (a+=x); } main() { int b=2, c=4, d; d=func (b
19、); d=func (c); printf("%d\n",d); } A)4 B)6 C)8 D)12 2.以下程序运行后的输出结果是() main() { chars[]="1234",*ps; for(ps=s;ps< p> printf("\n"); } A)123 B)112123 C)1234 D)乱码 3.以下关于宏的叙述中正确的是() A)宏名必须用大写字母表示 B)宏替换时要进行语法检查 C)宏替换不占用运行时间 D)宏定义中不允许引用已有的宏名
20、 4.如果文件1包含文件2,文件2中要用到文件3的内容,而文件3中要用到文件4的内容,则可在文件1中用三个#include命令分别包含文件2、文件3和文件4。在下列关于这几个文件包含顺序的叙述中,正确的一条是() A)文件4应出现在文件3之前,文件3应出现在文件2之前 B)文件2应出现在文件3之前,文件3应出现在文件4之前 C)文件3应出现在文件2之前,文件2应出现在文件4之前 D)出现的先后顺序能够任意 5.有以下程序段 main() { char a[7]="abcdef"; char b[4]="ABC"; strcpy(a,b);
21、 printf("%c",a[5]); } 程序段运行后的输出结果是() A)a B)\0 C)e D)f 6.下面程序的输出结果是() # include f (b,n) int b[], n; { int i, r; r=1; for (i=0; i<=n; i++) r=r*b[i]; return r; } main () { int x, a[]={2,3,4,5,6,7,8,9}; x=f(a,3); printf("%d\n",x); } A)7
22、20 B)120 C)24 D)6 7.下面程序的输出结果是() # include"stdio.h" fun (x) intx; { int y=0; static int z=5; z=x++,y++; return (z); } main () { int a=4, i, j; for(i=0; i<2; i++) j=fun (a++); printf ("%d",j); } A)0 B)3 C)4 D)5 8.对于以下程序段,设a和q都
23、是整型变量, … a=q; Loop∶if(a==0)goto End; Else if(a>0){printf("&");a--;goto Loop;} Else goto End; End; … 不能与上面程序等价的是() A)a=q; do {f(a<0)break; a--;printf("*"); }while(a); B)a=q; for(;a>0;a--)printf("&"); C)a=q; while(a) { printf("&");a--;} D)for(a=q;
24、a>0;--a,printf("*")); 9.有以下程序 #include #define PT 5.5 #define S(x) PT*x*x main() {int a=1,b=2; printf("%4.1f\n",S(a+b)); } 程序运行后的输出结果是() A) 49.5 B) 9.5 C) 22.0 D) 45.0 10.设有以下语句: structSS {intno;charname[10];}PERSON; 则下面叙述中错误的是() A)struct是结构体类型的关键字 B)struct SS是结构体类型 C)PERSON是结构体类型名 D)name是结构体成员名 答案:1.C 2.D 3.C 4.A 5.D 6.B 7.D 8.C 9.B 10.C






