2001年9月全国计算机等级考试二级C语言笔试试题
更新于:2007年9月19日 念时
一、选择题((1)-(40)题每题1分,(41)-(50)题每题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(l) 在计算机系统中,一个字节的二进制位数为
A) 16 B) 8 C) 4 D) 由CPU的型号决定
(2) 存储16×16点阵的一个汉字信息,需要的字节数为
A) 32 B) 64 C) 128 D) 256
(3) 英文大写字母B的ASCII码为42H,英文小写字母b的ASCII码为
A) 43H B) 84H C) 74H D) 62H
(4) 下列计算机语言中,CPU能直接识别的是
A) 自然语言B) 高级语言C) 汇编语言D)机器语言
(5) 在计算机领域中,所谓"裸机"是指
A) 单片机B) 单板机
C) 不安装任何软件的计算机D) 只安装操作系统的计算机
(6) 下列带有通配符的文件名中,能代表文件ABCDEF.DAT的是
A) A*.* B) ?F.* C) *.?D) AB?.*
(7) 下列DOS命令中,执行时不会发生错误的是
A) TYPE *.TXT B) DIR *.TXT
C) REN EAST.TXT A:b.TXT D) COPY *.TXT>CON
(8) 设当前盘为C盘,C盘的当前目录为\A\B\C。下列DOS 命令中能正确执行的是
A) MD \ B) MD A:\ C) MD \A\B D) CD C:
(9) 为了将C:USER中的文件FILE.TXT同名复制到A盘根目录下,下列DOS命令中能正确执行的是
A) TYPE C:\USER\FILE.TXT > A:\FILE.TXT B) TYPE C:\USER\FILE.TXT A:\FILE.TXT
C) COPY C:\USER\FILE.TXT > A:\FILE.TXT D) COPY C:\USER\FILE.TXT
(10) 在Windows下,当一个应用程序窗口被最小化后,该应用程序
A) 终止运行B) 暂停运行C) 继续在后台运行D) 继续在前台运行
(11) 在Windows环境下,下列操作中与剪贴板无关的是
A) 剪切B) 复制C) 粘贴D) 删除
(12) 在Windows环境下,实现窗口移动的操作是
A) 用鼠标拖动窗口中的标题栏B) 用鼠标拖动窗口中的控制按钮
C) 用鼠标拖动窗口中的边框D) 用鼠标拖动窗口中的任何部位
(13) 一台计算机连入计算机网络后,该计算机
A) 运行速度会加快B) 可以共享网络中的资源
C) 内存容量变大D) 运行精度会提高
(14) 不能作为计算机网络中传输介质的是
A) 微波B) 光纤C) 光盘D) 双绞线
(15) 下列各项中,不属于多媒体硬件的是
A) 声卡B) 光盘驱动器C) 显示器D) 多媒体制作工具
(16) 在C语言中,合法的长整型常数是
A) OL B) 4962710 C) 324562& D) 216D
(17) 以下有4组用户标识符,其中合法的一组是
A) For B) 4d C) f2_G3 D) WORD
-sub DO IF void
Case Size abc define
(18) 以下选项中合法的字符常量是
A)"B" B) '\010' C) 68 D) D
(19) 假定x和y为double型,则表达式x=2,y=x+3/2的值是
A) 3.500000 B) 3 C) 2.000000 D) 3.000000
(20) 以下合法的赋值语句是
A) x=y=100 B) d--; C) x+y; D) c=int(a+b);
(21) 设正x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是
pprintf("%d,%d\n",x--,--y);
A) 10,3 B) 9.3 C) 9.2 D)10.2
(22) x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是
A) INPUT x、y、z; B) scanf("%d%d%d",&x,&y,&z);
C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",&x,&y,&z);
(23) 以下程序的输出结果是
main()
{ int a=3;
printf("%d\n",(a+a-=a*a) );
}
A) -6 B)12 C) 0 D) -12
(24)设a、b、C、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值位为
A) 0 B) 1 C)2 D) 3
(25) 阅读以下程序:
main()
{ int x;
scanf("%d",&x);
if(x--<5) printf("%d"'x);
else printf("%d"'x++);
}
程序运行后,如果从键盘上输人5,则输出结果是
A)3 B) 4 C) 5 D) 6
(26) 假定w、x、y、z、m均为int型变量,有如下程序段:
w=1; x=2; y=3; z=4;
则该程序运行后,m的值是it
A) 4 B) 3 C) 2 D) 2
(27) t为int类型,进人下面的循环之前,t的值为0
while( t=l )
{ ……}
则以下叙述中正确的是
A) 循环控制表达式的值为0 B) 循环控制表达式的值为1
C) 循环控制表达式不合法 D) 以上说法都不对
(28) 以下程序的输出结果是
main()
{ int num= 0;
while(num<=2)
{ num++; printf("%d\n",num);
}
A) 1 B) 1 C)1 D) l
2 2 2
3 3
4
(29) 以下各选项企图说明一种新的类型名,其中正确的是
A) typedef v1 int; B) typedef v2=int;
C) typedefv1 int v3; D) typedef v4: int;
(30) 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是
A) 地址传递B) 单向值传递
C) 由实参传给形参,再由形参传回实参D) 传递方式由用户指定
(31) 以下函数值的类型是
fun ( float x )
{ float y;
y= 3*x-4;
return y;
}
A) int B) 不确定C) void D) float
(32 ) 设有以下函数:
f ( int a)
{ int b=0;
static int c = 3;
b++; c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是
main()
{ int a = 2, i;
for(i=0;i<3;i++) printf("%d\n",f(a));
}
A) 7 B) 7 C) 7 D) 7
8 9 10 7
9 11 13 7
(33) 以下程序的输出结果是
main()
{ char c='z';
printf("%c",c-25);
}
A) a B) Z C) z-25 D) y
(34) 以下选项中,非法的字符常量是
A) '\t' B) '\17' C)"n" D) '\xaa'
(35) 若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是
A) i=*p; B) p*=*&j; C) i=&j; D) i=**p;
(36) 以下定义语句中,错误的是
A) int a[]={1,2}; B) char *a[3];
C) char s[10]="test"; D) int n=5,a[n];
(37) 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是
A) 3 B) 6 C) 10 D) 20
(38) 以下程序的输出结果是
main()
{ int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A) 258 B) 741 C) 852 D) 369
(39) 以下数组定义中不正确的是
A) int a[2][3]; B) int b[][3]={0,1,2,3};
C) int c[100][100]={0}; D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
(40) 以下程序的输出结果是
main()
{ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0];
}
A) 0650 B) 1470 C) 5430 D) 输出值不定
(41) 以下程序的输出结果是
main()
{ char st[20]= "hello\0\t\\\";
printf(%d %d \n",strlen(st),sizeof(st));
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
(42) 以下选项中,不能正确赋值的是
A) char s1[10];s1="Ctest"; B) char s2[]={'C', 't', 'e', 's', 't'};
C) char s3[20]="Ctest"; D) char *s4="Ctest\n"
(43) 以下程序的输出结果是
amovep(int p, int (a)[3],int n)
{ int i, j;
for( i=0;i<;i++)
for(j=0;j
}
main()
{ int *p,a[3][3]={{1,3,5},{2,4,6}};
p=(int *)malloc(100);
amovep(p,a,3);
printf("%d %d \n",p[2],p[5]);free(p);
}
A) 56 B) 25 C) 34 D) 程序错误
(44) 以下程序的输出结果是
struct HAR
{ int x, y; struct HAR *p;} h[2];
main()
{ h[0],x=1;h[0];y=2;
h[1],x=3;h[1];y=4;
h[0],p=&h[1],p=h;
printf("%d %d \n",(h[0],p)->x,(h[1],p)->y);
}
A) 12 B) 23 C) 14 D) 32
(45) 以下程序的输出结果是
main()
{ int a, b;
for(a=1, b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf("%d\n",a);
}
A) 101 B) 6 C) 5 D) 4
(46) 以下程序的输出结果是
union myun
{ struct
{ int x, y, z; } u;
int k;
} a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf(%d\n",a.u.x);
}
A) 4 B) 5 C) 6 D) 0
(47) 以下程序的输出结果是
int a, b;
void fun()
{ a=100; b=200; }
main()
{ int a=5, b=7;
fun();
printf("%d%d \n", a,b);
}
A) 100200 B) 57 C) 200100 D) 75
(48) 以下程序的输出结果是
#define M(x,y,z) x*y+z
main()
{ int a=1,b=2, c=3;
printf("%d\n", M(a+b,b+c, c+a));
}
A) 19 B) 17 C) 15 D) 12
(49) 整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的表达式是
A) x || y B) x | y C) x & y D) x ^ y
(50) 下面的程序执行后,文件testt.t中的内容是
#include
void fun(char *fname.,char *st)
{ FILE *myf; int i;
myf=fopen(fname,"w" );
for(i=0;i
fclose(myf);
}
main()
{ fun("test","new world"; fun("test","hello,"0;)
A)hello,B)new worldhello,C)new world D)hello, rld
二、填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡【l】至【20】序号的横线上,答在试卷上不得分。
(l)为了将当前盘当前目录中的所有文本文件(扩展名为.TXT)的内容打印输出,正确的单条DOS命令为【l】。
(2)设当前盘为C盘。为了在A盘的当前自录\USER下建立一个新的子目录X,正确的DOS命令为【2】。
(3)在XCOPY、COPY、TIME三个DOS命令中,属于外部命令的是【3】。
(4)在32位的计算机中,一个字长等于【4】个字节。
(5)计算机网络分为局域网和广域网,因特网属于【5】。
(6)语句:x++;?++x; x=x+1;?x=l+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【6】。
(7)设y是int型变量,请写出判断y为奇效的关系表达【7】。
(8)以下程序运行后的输出结果是【8】。
main()
{ int i=10, j=0;
do
{ j=j+i; i-;
while(i>2);
printf("%d\n",j);
}
(9) 设有以下程序:
main()
{ int n1,n2;
scanf("%d",&n2);
while(n2!=0)
{ n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入1298;则输出结果为【9】。
(10) 以下程序输出的最后一个值是【10】。
int ff(int n)
{ static int f=l;
f=f*n;
return f;
}
main()
{ int i;
for(I=1;I<=5;I++ printf("%d\n",ff(i));
}
(11) 以下函数的功能是:求x的y次方,请填空。
double fun( double x, int y)
{ int i;
double z;
for(i=1, z=x; i
return z;
}
(12) 设有以下程序:
main()
{ int a, b, k=4, m=6, *p1=&k, *p2=&m;
a=pl==&m;
b=(*p1)/(*p2)+7;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
执行该程序后,a的值为【12】,b的值为【13】。
(13) 若已定义:int a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。
fun( int a[ ])
{ int i;
for(i=1; i<=10; i++) 【14】=i;
for(i=0; i<5; i++) 【15】=a[i];
}
(14) 以下程序运行后的输出结果是【16】。
main()
{ char s[ ]="9876",*p;
for ( p=s ;
}
(15) 若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。(注:不得使用逗号表达式)
while([i]){ d[j]= 【17】;j++;}
d[j]=0;
(16) 以下程序段用于构成一个简单的单向链表,请填空。
struct STRU
{ int x, y ;
float rate;
【18】p;
} a, b;
a.x=0; a.y=0; a.rate=0; a.p=&b;
b.x=0; b.y=0; b.rate=0; b.p=NULL;
(l7) 若有如下结构体说明:
struct STRU
{ int a, b ; char c; double d:
struct STRU p1,p2;
};
请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型
【19】t[20];
(18) 以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。
FILE *myf; ling f1;
myf= 【20】("test.t","rb");
fseek(myf,0,SEEK_END); f1=ftel(myf);
fclose(myf);
printf("%d\n",f1);