论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: 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年9月全国计算机等级考试二级试卷C语言(带答案)

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

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

一、选择题((1)-(40)每个选项1分,(41)-(50)每个选项2分,共60分)
下列各题A)、B)、C)、D)、四个有选项中,只有一个选项是正确的,请将正确选项
涂写在答题卡相应位置上,答在试卷上不得分

(1)通常所说的主机主要包括
A)CPU B)CPU和内存
C)CPU、内存与外存 D)CPU、内存与硬盘

(2)在微机系统中,最基本的输入输出模块BIOS存放在
A)RAM中 B)ROM中 C)硬盘中 D)寄存器中

(3)一个24*24点阵的汉字字形信息所占的字节数为
A)2 B)24 C)32 D)72

(4)bit的意思是
A)字 B)字长 C)字节 D)二进制位

(5)某学校的工资治理程序属于
A)系统程序 B)应用程序
C)工具软件 D)文字处理软件

(6)与十六进制数BB等值的十进制数是
A)187 B)188 C)185 D)186

(7) 设一张软盘已染上病毒,能清除病毒的措施是
A)删除该软盘上的所有文件 B)格式化该软盘
C)删除该软盘上的所有可执行文件 C)删除该软盘上的所有批处理文件

(8)一张3.5英寸双面高密度软盘片的容量为
A)360KB B)720KB C)1.44MB D)1.2MB

(9)与二进制小数0.1等值的十六进制小数为
A)0.1 B)0.2 C)0.4 D)0.8

(10)DOS系统的热启动与冷启动的不同之处为热启动时
A)不检测键盘、处设接口与内存 B)不提示用户输入日期与时间
C)不用装入COMMAND.COM文件 D)不能从软盘启动

(11)为了将磁盘上的文件K1,K2,K3,依次连接在文件K4的后面,应使用命令
A)COPY K1+K2+K3 K4 B)COPY K1+K2+K3+K4
C)COPY K1+K2+K3+K4 K4 D)COPY K4+K1+K2+K3

(12)下列文件名中可以作为批处理文件名的是
A)AUTOEXC.C B)AUTOEXEC
C)ATX.BAT D)AUTO.TXT

(13)要打印输出当前盘的根目录下所有文件与子目录清单,应使用命令
A)DIR \ PRN B)TYPE \ PRN
C)DIR PRN C)TYPE PRN

(14)设可执行文件 ABC.EXE 所需要的本该由键盘输入的数据已经按格式存放在文
件XYZ 中,并要求执行结果放在文件 XYZ 中输入数据的后面. 下列命令中正
确的是
A) ABC XYZ B) ABC XYZ
C) ABC < p>

(15)设当前盘中某一目录路径为 \A\B\C,当前目录为\A.下列命令中肯定出错的是
A)MD \A\C B) CD C) MD \A\B\A D) MD \A\B

(16)设 A 盘的目录结构如下:
根目录

┌─────┬┴──┬───┬───┬────┐
│ │ │ │ │ │
ABC D1子目录 DX.C Q.DAT D2子目录 A.FOR
│ │
┌────┬─┴──┬───┐ ┌───┬───┐
│ │ │ │ │ │ │
B.PAS D3子目录 Y.BAS A.C A1.C D4子目录 XYZ.C

┌────┬────┬────┐
│ │ │ │
QR.C NA.C A.TXT B.C
假如当前盘为 C 盘,A 盘的当前目录为\D2,则下列对 A 盘上文件QR.C 的指定
中,合法的是
A)\D2\D4\QR.C B)D4\QR.C
C)A:D4\QR.C D)A:D2\D4\QR.C

(17)下列DOS命令中,有错误的是
A)TYPE AAB.FORCON B)TYPE ?AB.FOR
C)COPY *.C CON D)COPY CON PRN

(18)设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C 盘根目录下
的文件XYZ.TXT的后面,正确的命令是
A)COPY C:\XYZ.TXT+AB1.TXT
B)COPY AB1.TXTC:\XYZ.TXT
C)TYPE AB1.TXTC:\XYZ.TXT
D)AB1.TXT+C:\XYZ.TXTC:\XYZ.TXT

(19)下列命令中合法的是
A)DISKCOPY A: A: B)DISKCOPY A: C:
C)DISKCOPY C: A: D)DISKCOPY C: D:

(20)设当前盘中某一目录路径为\A\B\C\D\XU,当前目录为\A.要将根目录下扩展名
为.C的所有文件复制到当前目录下,并将扩展名改为.FOR,应使用命令
A)COPY \*.C *.FOR B)COPY *.C \A\*.FOR
C)COPY *.FOR \*.C D)COPY \A\*.C *.FOR

(21)下列不正确的转义字符是
A)'\\' B)'\" C)'074' D)'\0'

(22)若有以下定义:
char a; int b;
float c; double d;
则表达式a*b+d-c值的类型为
A) float B) int C) char D) double

(23)表示关系x<=y<=z的c语言表达式为
A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z)
C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z)

(24)设a=1,b=2,c=3,d=4,则表达式:a
A) 4 B) 3 C) 2 D) 1

(25)设x为int型变量,则执行以下语句后,x的值为
x=10; x+=x-=x-x;
A) 10 B) 20 C) 40 D) 30

(26)下列可作为C语言赋值语句的是
A) x=3,y=5 B) a=b=6
C) i--; D) y=int(x);

(27)设x,y,z,t均为int型变量,则执行以下语句后,t的值为
x=y=z=1;
t=++x||++y&&++z;
A) 不定值 B) 2 C) 1 D) 0

(28)设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf("i=%d,f=%f",&i,&f);
为了把100和765.12分别赋给i和f,则正确的输入为
A) 100765.12 B) i=100,f=765.12
C) 100765.12 D) x=100y=765.12

(29)设x和y均为int型变量,则执行下的循环后,y值为
for(y=1,x=1;y<=50;y++)
{ if(x=10))break;
if (x%2==1)
{ x+=5; continue;}
x-=3;
}
A) 2 B) 4 C) 6 D) 8

(30)给出以下定义:
char x[ ]="abcdefg";
char y[ ]={'a','b','c','d','e','f','g'};
则正确的叙述为
A) 数组X和数组Y等价 B) 数组x和数组Y的长度相同
C) 数组X的长度大于数组Y的长度 D) 数组X的长度小于数组Y的长度

(31)以下叙述中不正确的是
A) 在不同的函数中可以使用相同名字的变量
B) 函数中的形式参数是局部变量
C) 在一个函数内定义的变量只在本函数范围内有效
D) 在一个函数内的复合语句中定义的变量在本函数范围内有效

(32)假定a和b为int型变量,则执行以下语句后b的值为
a=1; b=10;
do
{ b-=a; a++; }
while (b--<0);
A) 9 B) -2 C) -1 D) 8

(33)设j为int型变量,则下面for循环语句的执行结果是
for( j=10;j3;j--)
{ if(j%3)j--;
--j; --j;
printf("%d ",j);
}
A) 6 3 B) 7 4 C) 6 2 D) 7 3

(34)设有以下宏定义:
#define N 3
#define Y(n) ( (N+1)*n)
则执行语句:z=2 * (N+Y(5+1));后,z的值为
A) 出错 B) 42 C) 48 D)54

(35)设P1和P2是指向同一个int型一维数组的指针变量 ,k为int型变量,则不能正确
执行的语句是
A)k=*P1+*P2; B)p2=k; C)P1=P2; D)K=*P1 * (*P2);

(36)设有如下定义:
int arr[]={6,7,8,9,10};
int * ptr;
则下列程序段的输出结果为
ptr=arr;
* (ptr+2)+=2;
printf ("%d,%d\n",*ptr,*(ptr+2));
A)8,10 B)6,8 C)7,9 D)6,10

(37)以下程序的输出结果是
main()
{ int i,k,a[10],p[3]:
K=5;
for (i=0;i<10;i++) a[i]=i;
for (i=0;i<3;i++) p[i]=a[i*(i+1)];
for (i=0;i<3;i++) k+=p[i]*2;
printf("%d\n",k);
}
A) 20 B) 21 C) 22 D)23

(38)执行以下程序段后,m的值为
int a[2][3]={ {1,2,3},{4,5,6} };
int m,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
A) 15 B) 14 C) 13 D) 12

(39)有以下程序段
char arr[]="ABCDE";
char *ptr;
for(ptr=arr;ptr
输出结果是
A) ABCD B) A C) E D) ABCDE
B D BCDE
C C CDE
D B DE
E A E

(40)有以下程序
main()
{ int x,i;
for(i=1;i<=50;i++)
{ x=i;
if(++x%2==0)
if(x%3==0)
if(x%7==0)
printf("%d,i);
}
}
输出结果是
A) 28 B) 27 C) 42 D) 41

(41)有下列程序
#include
main()
{ union
{ int k;
char i[2];
} *s,a;
s=&a;
s-i[0]=0x39; s-i[1]=0x38;
printf("%x\n",s-k);
}
输出结果是
A) 3839 B) 3938 C) 380039 D) 390038

(42)有以下程序
#include
main()
{ int a,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
输出结果是
A) 2,1 B) 3,2 C) 4,3 D) 2,-1

(43)设有如下定义:
int (*ptr)*();
则以下叙述中正确的是
A) ptr是指向一维组数的指针变量
B) ptr是指向int型数据的指针变量
C) ptr是指向函数的指针,该函数返回一个int型数据
D) ptr是一个函数名,该函数的返回值是指向int型数据的指针

(44)有以下程序
#include
struct stu
{ int num;
char name[10];
int age;
};
void fun(struct stu *p)
{ printf("%s\n",(*p).name); }
main()
{
struct stu students[3]={ {9801,"Zhang",20},
{9802,"Wang",19},
{9803,"Zhao",18} };
fun(students+2);
}
输出结果是
A) Zhang B)Zhao C) Wang D) 18

(45)设有以下说明和定义:
typedef union
{ long i; int k[5]; char c; }DATE;
struct date
{ int cat; DATE cow; double dog; } too;
DATE max;
则下列语句的执行结果是
printf ("%d",sizeof (struct date ) +sizeof(max));
A) 26 B) 30 C) 18 D) 8

(46)有以下程序
main()
{ char a[]="programming", b[]="language";
char *p1,*p2;
int i;
p1=a; p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i));
}
输出结果是
A) gm B) rg C) or D) ga

(47)有以下程序
viod fun (int a,int b,int c)
{ a=456; b=567; c=678;}
main()
{ int x=10, y=20,z=30;
fun (x,y,z);
printf("%d,/%d\n",c,d);
}
输出结果是
A)30,20,10 B)10,20,30
C)456,567,678 D)678,567,456

(48)有以下程序
int fun(int x,int y,int *cp,int *dp)
{ *cp=x+y; *dp=x-y; }
main()
{ int a, b, c, d;
a=30; b=50;
fun(a,b,&c,&d);
printf("%d,%d\n", c, d);
}
输出结果是
A)50,30 B)30,J50 C)80,-20 D)80,20

(49)有以下程序
main()
{ int i, j;
for(j=10;j<11;j++)
{ for(i=9;i
if (!(j%i))break;
if(i=j-1)printf("%d",j);
}
}
输出结果是
A) 11 B) 10 C) 9 D) 10 11

(50)有以下程序
#include "atdio.h"
int abc(int u,intv);
main ()
{ int a=24,b=16,c;
c=abc(a,b);
printf('%d\n",c);
}
int abc(int u,int v)
{ int w;
while(v)
{ w=u%v; u=v; v=w }
return u;
}
输出结果是
A) 6 B) 7 C) 8 D) 9

二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡(1)-(20)序号的横线上,答在试卷上不得分.

(1)自动批自理文件名为_______.(1)

(2)DOS命令分为内部命令与外部命令,COMP命令属于_______(2)命令.

(3)设当前为C盘,现要用一条DOS命令在打印机上输出A盘当前目录下所有扩展名为
.DAT的文件内容.这一条DOS命令应为___(3).

(4)要将当前盘当前目录下的子目录XYZ中所有扩展名为.BAK 的文件名改成扩展
名为.FOR,应使用的DOS命令为___(4).

(5)设DOS外部命令文件所在的路径均已用PATH命令打通.现要将当前盘当前目录下
的文件WST.TXT设置为只读属性,应使用的DOS命令为___(5).

(6)设x和y均为int型变量,且x=1,y=2,则以下表达式的值为___(6).
1.0+x/y

(7)设i,j,k均为int型变量,则执行完下面的for循环后,k的值为___(7).
for(i=0,j=10;i<=j;i++,j--) k=i+j;

(8)设有以下定义的语句:
int a[3][2]={10,20,30,40,50,60}, (*p)[2];
p=a;
则 *(*(p+2)+1)值为___(8).

(9)以下程序的输出结果是___(9).
#include
int fun(int x,int y)
{ static int m=0,i=2;
i+=m+1;
m=i+x+y;
return m
}
main()
{ int j=4,m=1,k;
k=fun(j,m); printf("%d,",k);
k=fun(j,m); printf("%d\n",k);
}

(10)函数fun的功能是:使一个字符串按逆序存放,请填空
void fun (char str[])
{ char m; int i,j;
for(i=0,j=strlen(str);i<____(10);i++,j--)
{ m=str[i];
str[i]=___(11);
str[j-1]=m;
}
printf("%s\n",str);
}

(11)以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该
字符串,请填空.
#include"ctype.h"
#include"stdio.h"
main()
{ char str[81],*sptr;
int i;
for(i=0;i<80;i++ )
{ str[i]=getchar();
if(str[i]=='\n') break;
}
str[i]=____(12);
sptr=str;
while(*sptr) putchar(*sptr____(13));
}

(12)以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中
第一个不相同字符的ASCII码之差.例如:输入的两个字符串分别为abcdef和
abceef,则输出为-1.请填空.
#include
main()
{ char str[100],str2[100],c;
int i,s;
printf("\n input string 1:\n"); gest(str1);
printf("\n input string 2:\n"); gest(str2);
i=0;
while((strl[i]==str2[i]&&(str1[i]!=____(14)))
i++;
s=____(15);
printf("%d\n",s);
}

(13)以下程序的功能是:从键盘上输入一个字符串, 把该字符串中的小写字母转换
为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来.请
填空.
#include
main()
{ FILE *fp;
char str[100]; int i=0;
if((fp=fopen("text.txt",____(16)))==NULL)
{ printf("can't open this file.\n");exit(0);}
printf("input astring:\n"); gest(str);
while (str[i])
{ if(str[i]='a'&&str[i]<='z')
str[i]=____(17);
fputc(str[i],fp);
i++;
}
fclose(fp);
fp=fopen("test.txt",____(18));
fgets(str,100,fp);
printf("%s\n",str);
fclose(fp);
}

(14) 以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出
,请填空.
#include.
main()
{ char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C'
,'D','E','F'};
int c[64],d,i=0,base;
long n;
printf("enter a number:\n"); scanf("%ld",&n);
printf("enter new base:\n"); scanf("%d",&base);
do
{ c[i]=____(19);
i++; n=n/base;
} while(n!=0);
printf("transmite new base:\n");
for(--i;i=0;--i)
{ d=c[i];
printf("%c",b____(20);
}
}

试题答案

一.选择题((1)~(40)题每题1分;(41)~(50)题每题2分)
(1)B (2)B (3)D (4)D (5)B
(6)A (7)B (8)C (9)D (10)A
(11)D (12)C (13)A (14)B (15)D
(16)C (17)B (18)A (19)A (20)A
(21)C (22)D (23)A (24)D (25)B
(26)C (27)C (28)B (29)C (30)C
(31)D (32)D (33)B (34)C (35)B
(36)D (37)B (38)A (39)D (40)D
(41)A (42)A (43)C (44)B (45)B
(46)D (47)A (48)C (49)B (50)C
二,填空题(每空2分,共4分)
(1)至(5)题中所有字母都答应大,小写或大小写混合
(1)1 AUTOEXEC.BAT
(2) 2 外部(答 外部命令不扣分)
(3) 3 COPY A:*.DAT PRN
(在 COPY 后面与A:*.DAT后面都至少要有一个空格)
(4) 4 RENXYZ\*.BAK *.FOR 或RENAME XYZ\*.BAK*.FOR
(在REN 或RENAME 后面与XYZ\*.BAK 后面都至少要有一个空格)
(5) 5 ATTRIB+R WST.TXT
(在ATTRIB 后面与+R后面都至少有一个空格)或ATTRIB WST.TXT+R(在ATTRIB
后面与WST.TXT后面都至少要有一个空格)
(6) 6 1.0或1
(7) 7 10
(8) 8 60
(9) 9 8,17
(10) 10 strlen(str )/2或strlen(str)/2.0或0.5*strlen(str)或j或j-1
11 str[j-1]或*(str+j-1)
(11) 12 '\0' 或0
13 ++
(12) 14 '\0'或0
15 strl[i]-str2[i]
(13) 16 "w"或"w+"或"wt"或"w+t"或"""wt+"
17 str[i]-32 或str[i]-('a'-'A'或str[i]-'a'+'A'
18 "r"或"r+"或"r+t"或"rt+"
(14) 19 n%base
20 [d]

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