论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

1998年4月全国计算机等级考试二级试卷C语言(带答案)

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:47:20

(考试时间120分钟,满分100分)

一.选择题A)、B)、C)、D)四个选项中,只有一个选项是正确的, 请将正确选项涂写在答题卡相应位置上,答在试卷上不得.
(1)所谓"裸机"是指
A)单片机 B)单板机
C)不装备任何软件的计算机 D)只装备操作系统的计算机
(2)下面存储器中,存取速度最快的是
A)软盘 B)硬盘
C)光盘 D)内存
(3)系统软件中最重要的是
A)操作系统 B)语言自理程序
C)工具软件 D)数据库治理系统
(4)CPU自理的数据基本单位为字,一个字的字长
A)为8个二进制位 B)为16个二进制位
C)为32个二进制位 D)与CPU芯片的型号有关
(5)打印当前屏幕内容应使用的控制健是
A)Scroll-Lock B)Num-Lock
C)PgDn D)PrtSc(Print Screen)
(6)能将高级语言源程序转换成目标程序的是
A)调试程序 B)解释程序
C)编译程序 D)编辑程序
(7)二进制数1110111.11转换成十进数是
A)119.375 B)119.75
C)127.0625 D)127.125
(8)十六进制数FF.1转换成十进制数是
A)255.0625 B)255.125
C)127.0625 D)127.125
(9)3.5英寸软盘片的一个角上有一个滑动块,假如移动该滑动块露出一个小孔, 则该软盘
A)不能读但能写 B)不能读也不能写
C)只能读不能写 D)能读写
(10)控制键^C的功能为
A)终止当前操作 B)系统复位
C)暂停标准输出设备的输出 D)结束命令行
(11)COMMAND COM为命处理程序,DOS系统启动后,它
A)驻留在外存,需要时再装入内存 B)常驻内存,包含所有内部命令
C)不能处理外部命令 D)不能处理后缀为.EXE的可执行文件
(12)为了将所有扩展名为.PAS的文件改成扩展名为.P,应使用命令
A)REN *.PAS *.?AS B)REN PAS P
C)REN *.PAS *.p D)REN *.PAS *.P??
(13)设当前盘中文件XY.C的路径为\A\B\XU,当前目录为\A\B. 为了查看文件XY.C的内容,应使用命令
A)TYPE XU\XY.C B)TYPE \XU\XY.C
C)DIR XU\XY.C D)DIR \A\B\XU\XY.C
(14)要将提示符改成当前盘当前目录后加一个大于号">",应使命令
A)PROMPT B)PROMPT $P$g
C)PROMPT $$ D)PROMPT C\>
(15)设C盘根目录中有一个批处理文件A.BAT,当前盘为A盘.为了执行该批处理文件,下列命令中一定正确的是
A)C:\A B)C;A.BAT
C)A.BAT D)\A.BAT
(16)设当前盘为C盘,将A盘根目录下的文件 目录信息存放到当前盘当前目录下的文件AB中,应使用命令
A)TYPE A:\>AB B)DIR >AB
C)DIR A;\>AB D)DIR \>AB
(17)可执行文件ABC.EXE所需要的输入数据已经按格式存放在文件XYZ中,要求将执行结果在打印机上打印输出.下列命正确的是
A)ABCXYZ
C)ABC>XYZPRN
(18)在当前盘当前目录下有一个文件A.BAT,其内容为
CD \
MD \XYZ\AB\BC
CD XYZ\AB\B
在正确执行上述文件后,接着执行下列命令时,不会发生错误的是
A)MD C B)RD \XYZ
C)RD.C D)RD B
(19)下列命令组中两个DOS命令互相等价的是
A)TYPE AB.TXT与DIR AB.TXT
B)DISKCOMP A: B:与COMP A:*.* B.*.*
C)TYPE AB.TXT >>XY.TXT与COPY AB.TXT XY.TXT
D)TYPE AB.TXT >XY.TXT与COPY AB.TXT XY.TXT
(20)设A盘为启动盘,其目录结构为
根目录

┌───┴─────┐
DOS子目录 COMMAND.COM

┌──────────┐
USER子目录 AUTOEXEC.BAT
其中文件AUTOEXEC.BAT的内容如下:
MD \XYZ
CD \DOS\USER
则由A盘启动成功后,A盘的当前目录是
A)\DOS\USER B)\XYZ
C)根目录 D)\DOS
(21)在C语言提供的合法的着急字是
A)swicth B)cher
C)Case D)default
(22)在C语言中,合法的字符常量是
A)'\084' B)'\x43'
C)'ab' D)"\0"
(23)若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是
A)1 B)2
C)2.0 D)2.5
(24)合法的数组定义是
A)int a[]="string"; B)int a[5]={0,1,2,3,4,5};
C)vhst s="string"; D)char a[]={0,1,2,3,4,5};
(25)设a为整型变量,不能正确表达数学关系:1010&&a>15
D)!(a<=10)&&!(a>=15)
(26)若t为double类型,表达式t=1,t5,t++的值是
A)1 B)6.0
(27)若有定义和语句:
char s[10]:s="abcd";printf("%s\n",s);
则结果是(以下u代表空格) A)输出abcd B)输出a
C)输出abcduuuuu D)编译不通过
(28)若有定义和语句:
int **pp,*p,a=10,b=20;
pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);
则输出结果是:
A)10,20 B)10,10
C)20,10 D)20,20
(29)若有以下定义和语句:
int u=010,v=0x10,w=10;
printf("%d,%d,%d\n,u,v,w);
则输出结果是:
A)8,16,10 B)10,10,10
C)8,8,10 D)8,10,10
(30)若有以下定义和语句
char c1='b',c2='e';
printf("%d,%c\n",c2-c1,c2-'a'+"A");
则输出结果是:
A)2,M B)3,E
C)2,E D)输出项与对应的格式控制不一致,输出结果不确定
(31)若有以下定义:
char s[20]="programming",*ps=s;
则不能代表字符o的表达式是
A)ps+2 B)s[2]
C)ps[2] D)ps+=2,*ps
(32)若ij已定义为int类型,则以下程序段中内循环体的总的执行次数是
for (i=5;i;i--)
for(j=0;j<4;j++){...}
A)20 B)25
C)24 D)30
(33)若有以下定义和语句:
char *s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果是
A)4 B)5
C)9 D)10
(34)若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是
A)*p B)a[10]
C)*a D)a[p-a]
(35下面程序的输出是
main()
{ char *s="121";
int k=0, a=0, b=0;
do
{k++;
if(k%2==0) {a=a+s[k]-'0';continue;}
b=b+s[k]-'0'; a=a+s[k]-'0';
}
while (s[k+1]);
printf("k=%d a=%d b=%d\n",k,a,b);
A)k=3 a=2 b=3 B)k=3 a=3 b=2
C)k=2 a=3 b=2 D)k=2 a=2 b=3
(36)下面程序的输出是
main()
{ unsigned a=32768;
printf("a=%d\n",a);
}
A)a=327 68 B)a=32767
C)a=-32767 D)a=-1
(37)若有以下定义:
float x;int a,b;
则正确的switch 语句是
A)switch(x) B)switch(x)
{ case1.0:printf("*\n"); { case1,2:printf("*\n");
case2.0:printf("**\n"); case3:printf("**\n");
} }
C)switch (a+b) D)switch (a+b);
{ case 1:printf("\n"); { case 1:printf(."*\n");
case 1+2:printf("**\n"); case 2:printf("**\n");
} }
(38)若有定义:int x,y;char a,b,c;并有以下输入数据(此处< CR> 代表换行符,/u代表空格):
1u2
AuBuC
则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C 的正确程序段是
A)scanf("x=%d y+%d",&x,&y);a=getchar();b=getchar();c=getchar();
B)scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();
C)scanf("%d%d%c%c%c,&x,&y,&a,&b,&c);
D)scanf("%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);
(39)以下程序输出的结果是
#include
#include
main()
{ char w[][10]={"ABCD","EFGH","IJKL","MNOP"},K;
for (k=1;k<3;k++)
printf("%s\n",&w[k][k]);
}
A)ABCD B)ABCD
FGH EFG
KL IJ
M
C)EFG D)FGH
JK KL
O
(40)若有以下的定义:
int a[]={1,2,3,4,5,6,7,88,9,10), *p=a;
则值为3的表式是
A)p+=2, *(p++) B)p+=2,*++p
C)p+=3, *kp++ D)p+=2,++*p
(41)假定所有变量均已正确说明,下列程序段运行后x的值是
a=b=c=0;x=35;
if(!a)x--;
else if(b);if(c)x=3;
else x=4;
A)34 B)4
C)35 D)3
(42)在以下一组运算符中,优先级最高的运算符是
A)<= B)=
C)% D)&&
(43)若有以下定义和语句:
int w[2][3],(*pw)[3]; pw=w;
则对w数组元素非法引用是
A)*(w[0]+2) B)*(pw+1)[2]
C)pw[0][0] D)*(pw[1]+2)
(44)若有以下程序片段:
char str[]="ab\n\012\\\"";
printf(%dd",strlen(str));
上面程序片段的输出结果是
A)3 B)4
C)6 D)12
(45)函数调用:strcat(strcpy(str1,str2),str3)的功能是
A)将串str1复制到串str2中后再连接到串str3之后
B)将串str1连接到串str2之后再复制到串str3之后
C)将串str2复制到串str1中后再将串str3连接到串str1之后
D)将串str2连接到串str1之后再将串str1复制到串str3中
(46)以下对C语言函数的有关描述中,正确的是
A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B)C函数既可以嵌套定义又可以递归调用
C)函数必须有返回值,否则不能使用函数
D)C程序中有调用关系的所有函数必须放在同一个源程序文件中
(47)以下叙述中不正确的是
A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值.
B)在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容.
C)在C中,外部变量的隐含类别是自动存储类别.
D)在C中,函数形参可以说明为register变量.
(48)以下程序的输出结果是
#include
subl(char a,char b) {char c; c=a;a=b;b=c;}
sub2(char* a,char b) {char c; c=*a;*a=b;b=c;}
sub3(char* a,char*b) {char c; c=*a;*a=*b;*b=c;}
{ char a,b;
a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);
a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);
a='A';b='B';sub1(a,b);putchar(a);putchar(b);
}
A)BABBAB B)ABBBBA
C)BABABA D)BAABBA
(49)设有如下定义:
struct sk
{int a;float b;}data,*p;
若有p=&data;,则对data中的a域的正确引用是
A)(*p).data.a B)(*p).a
C)p->data.a D)p.data.a
(50)以下对枚举类型名的定义中正确的是
A)enum a={one,two,three};
B)enum a {one=9,two=-1,three};
C)enum a={"one","two","three"};
D)enum a {"one","two","three"};
二.填空题(每空2分,共40分)
请将每空的正确答与在答题卡1至20序号的横线上,答在试卷上不得分.
(1)与十进制数101等值的十进制数为 1
──.
(2)DOS命令分为内部命令与外部命令,XCOPY命令属于 2 命令.
──
(3)设当前盘为A盘,当前系统提示符为">",在不改变当前盘的情况下,显示C盘的当前目录路径,应使用命令 3
──.
(4)自动批处理文件必须是 4
─.
(5)设在当前盘当前目录下有两个文件W.TXT与P.TXT,现要将文件 P.TX连接到文件W.TXT的后面,若使用COPY命令,则完整的命令为 5
──.
(6)请写出以下数学式的C语言表达式 6
──.
a
───
b.c
(7)若已知a=10,b=20,则表达式!ab) printf("****y%d\n",y);
else printf("####x=%\n",x);
(11)在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是 11 函数.
──
(12)若函数fun的类型void,且有以下定义和调用语句:
#define M 50
main()
{ int a[M];
.
.
.
fun(a);
.
.
.
}
定义fun函数首部可以用三种不同的形式,请写出这三种形式: 12 .13 .14
─ ─ ─
(注重:①形参的名字请用q,②使用同一种风格).
(13)若给fun函数的形参s传送字符串:"uuuu6354abc",则函数的返回值是 15
─.
log fun(char s[])
{long n;int sign;
for(;isspace(*s);s++);
sign+(*s=='-')?-1:1;
if(*s=='+'‖*s=='-'s++;
for(n=0;isdigit(*s);s++)
n=10*n+(*s-'0');
return sign * n;
(14)以下函数用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n 所指存储单元中存放数组中数据的个数.插入后数组中的数仍有序.请填空.
void fun (char *w,char x,int *n)
{ int i,p;
p=0;
w[*n]=x;
while (x>w[p]) 16
──;
for(i=*n;i>p;i--)w[i]= 17
─;
w[p]=x;
++ *n;
}
(15)fun1函数的调用语句为:fun1(&a,&b,&c); 它将三个整数按由大到小的顺序调整后依次放入a,b,c,三个变量中,a中放量大数.请填空.
void fun2 (int *x,int *y)
{ in t t;
t=*x; *x=*y;*y=t;
}
void fun1 (int *pa,int *pb,int *pc)
{ if(*pc>*pb) fun2( 18)
───;
if(*pa<*pc)fun2(19)
──;
if(*pa<*pb)fun2(20)
──;
}

试题答案


一.选择题((1)-(4)共40题,每题1分;(41)-(50)共10题,每题2分)
(1)C (2)D (3)A (4)D (5)D
(6)C (7)B (8)A (9)C (10)A
(11)B (12)C (13)A (14)B (15)A
(16)C (17)D (18)C (19)D (20)C
(21)D (22)B (23)C (24)D (25)A
(26)D (27)D (28)D (29)A (30)B
(31)A (32)A (33)A (34)B (35)C
(36)C (37)C (38)D (39)D (40)A
(41)B (42)C (43)B (44)C (45)C
(46)A (47)C (48)A (49)B (50)B
二.填空(1-20共20空,每空2分)
(1) 1 1100101 或 (1100101)2
(2) 2 外部(答 外部命令 不扣分)
(3) 3 CD C:(CD与C:中间至少要有一个空格
(4) 4 AUTOEXEC.BAT
(5) 5 COPY W.TXT+P.TXT 或 COPY W.TXT+P.TXT W.TXT
(6) 6 a/(b*c)或a/(c*b)或a/b/c或a/c/b
(7) 7 1
(8) 8 ###a=26,b=13,c=19
(9) 9 *(p+5)或p[5]
(10)10
if(a<=b){x=1;printf("####x=%b\n",x);}
else {y=2;printf("****y=%b\n",y);}

if(a>b) {y=2;printf("****y=%b\n",y);}
else {x=1;printf("####x=%B\n",x);}

if(a>b) printf("####c=%b\n",x=1);
else printf("****y+%b\n",y=2);

if(a>b)printf("****y=%b\n,y=2);
ilse printf("####x=%b\n",x=1);
(11) 11 rewind 或 fseek
(12) 12、13、14
void fun (int *q)
void fun (int q[])
void fun (int q[M])

void fun (q)int *q;
void fun (q)int q[];
void fun (q)int q[M];
说明:以上两组答案中
(A)三个答案可以任意次序.(B)标识符q 可以用以字母或下划线开头以字母、数字和下划线组成的名字代替.(C)两种风格可以混用,例如:
void fun (int *q)
void fun (q)int q[];
void fun (int q[M])
(13) 15 6354
(14) 16 p++或++p或p=p+1或p+=1或p=1+p
17 w[i-1]或*(w+i-1)
(15) 18 pc,pb 或pb,pc
19 pc,pa 或pa,pc
20 pb,pa 或pa,pb

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058