1995年9月全国计算机等级考试二级C语言试卷(含答案)
发布时间:2006-10-14 8:54:01   收集提供:gaoqian

基础知识和程序设计
(考试时间120分钟,满分100分)

一、选择题((1)-(40)每小题1分,(41)-(50)每小题2分,共60分)
下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 第一台电子数字计算机ENIAC诞生于
A) 1927年 B)1936年 C) 1946年 D) 1951年
(2) 用FORTRAN语言编制的源程序要变为目标程序,必须经过
A) 汇编 B) 解释 C) 编辑 D) 编译
(3) 计算机软件一般包括系统软件和
A) 字处理软件 B) 应用软件 C) 管理软件 D) 科学计算机软件
(4) 计算机内使用的数是
A) 二进制数 B) 八进制数 C) 十进制数 D) 十六进制数
(5) 目前微型机常用的5.25寸双面高密度软盘的容量是
A) 360KB B) 1.44MB C) 760KB D) 1.2MB
(6) 具有多媒体功能的微机系统常用CD-ROM作为外存储器,它是
A) 只读内存储器 B) 只读大容量软盘 C) 只读硬盘 D) 只读光盘
说明:
(7)到(17)题给定的条件如下:
微机系统有A和B两个容量相同的软盘驱动器,硬盘C的目录结构为












文件AUTOEXEC.BAT的内容为
PROMPT $P$G
CD F4
CD \DOS
(7) 微机系统用硬盘C启动后,当前系统提示符是
A) C:\> B) C:\DOS> C) C:\F4> D) C>
(8) 在用C盘启动后,把A盘格式化成系统盘的命令为
A) FORMAT A: B) \FORMAT A:/S
C) \DOS\FORMAT A:/S D) \DOS\FORMAT A:\S
(9) 设当前盘为C盘,C盘当前目录为\DOS。把JD1.FOR和JD2.FOR连接起来后存入A盘根目录下,命名为JD3.FOR,应使用命令
A) COPY JD1.FOR+JD2.FOR A:JD3.FOR
B) COPY \F4\JD1.FOR+JD2.FOR A:\JD3.FOR
C) COPY \F4\JD1.FOR+\F4\JD2.FOR A:\JD3.FOR
D) COPY \F4\JD1.FOR+\F4\JD2.FOR JD3.FOR
(10) 设当前盘为C盘,C盘当前目录为\DOS。把FORMAT.COM和DISKCOPY.COM两个命令文件复制到A盘上的命令为
A) COPY \DOS\*.* A: B) COPY\*.COM A:
C) COPY DOS\*.* A: D) COPY DOS\*.COM A:
(11) 列出硬盘C上所有扩展名为.FOR文件的命令是
A) DIR\*.FOR B) DIR C:\F4\*.FOR C) DIR C:\*.FOR D) DIR C:\F4\*.*
(12) 把A盘的所有信息复制到B盘上的命令为
A) COPY A:*.* B: B) COPY A:*.* B:*.*
C) C:\DOS\DISKCOPY A: B: D) C:\DOS\DISKCOPY B: A:
(13) 设当前盘为C盘。删除硬盘C上的两个扩展名为.EXE文件的命令是
A) DEL\F4\*.EXE B) DEL\XD?.EXE C) DEL\F4\*.* D) DEL \*.EXE
(14) 设当前盘为C盘。C盘当前目录为\DOS。在硬盘C的根目录下建立新子目录USER的命令为
A) MD C:USER B) MD\USER\ C) MD\USER D) MD USER
(15) 设当前盘为C盘,C盘当前目录为根目录。在硬盘C上删除子目录F4的命令或命令组为
A) RD F4 B) RD\F4 C) DEL\F4\*.* D) DEL\*.*
RD F4 RD F4
(16) 设当前盘为C盘,C盘当前目录为根目录。把JD1.FOR改名为JX1.FOR的命令为
A) REN JD1.FOR JX1.FOR B) REN JX1.FOR JD1.FOR
C) REN F4\JD1.FOR JX1.FOR D) REN \F4\JX1.FOR JD1.FOR
(17) 显示C盘根目录下所有.TXT文件内容的命令为
A) TYPE C:\*.TXT B) TYPE C:\*.TXT>CON
C) COPY C:\*.TXT>CON D) COPY C:\*.TXT CON
(18) 按照数据模型分类,FoxBASE和dBASE是属于
A) 层次型 B) 网状型 C) 关系型 D) 混合型
(19) FoxBASE和dBASE命令文件的扩展名为
A) .PRG B) .DBF C) .MEM D) .TXT
(20) “计算机等级考试”这七个汉字作为字符串常量,在FoxBASE和dBASE中,可以表示为
A) {计算机等级考试} B) (计算机等级考试)
C) 计算机等级考试 D) “计算机等级考试”
(21) 请选出可用作C语言用户标识符的一组标识符
A) void B) a3_b3 C) For D) 2a
define _123 -abc DO
WORD IF Case sizeof
(22) 设 int a=12,则执行完语句 a+=a-=a*a后,a的值是
A) 552 B) 264 C) 144 D) -264
(23) C语言程序的基本单位是
A) 程序行 B) 语句 C) 函数 D) 字符
(24) 请选出合法的C语言赋值语句
A) a=b=58 B) i++; C) a=58,b=58 D) k=int(a+b);
(25) 执行下面程序片段的结果是
int x=23;
do
{ printf("%2d",x--);}
while(!x);
A) 打印出321 B) 打印出23 C) 不打印任何内容 D) 陷入死循环
(26) 请选出以下语句的输出结果
printf("%d\n",strlen("\t\"\065\xff\n"));
A) 5 B) 14 C) 8 D) 输出项不合法,无正常输出
(27) 设有如下的函数
ggg(x)
float x;
{ printf("\n%d",x*x);}
则函数的类型
A) 与参数x的类型相同 B) 是void C) 是int D) 无法确定
(28) 设有如下枚举类型定义:
enum language { Basic=3,Assembly,Ada=100,COBOL,Fortran};
枚举量Fortran的值为
A) 4 B) 7 C) 102 D) 103
(29) 若有以下说明和语句,请选出哪个是对c数组元素的正确引用
int c[4][5], (*cp)[5];
cp=c;
A) cp+1 B) *(cp+3) C) *(cp+1)+3 D) *(*cp+2)
(30) 标准函数 fgets(s, n, f) 的功能是
A) 从文件f中读取长度为n的字符串存入指针s所指的内存
B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
C) 从文件f中读取n个字符串存入指针s所指的内存
D) 从文件f中读取长度为n-1的字符串存入指针s所指的内存
(31) 设有如下一段程序:
int *var,ab;
ab=100
var=&ab;
ab=*var+10;
执行上面的程序后,ab的值为
A) 120 B) 110 C) 100 D) 90
(32) 以下程序段给数组所有的元素输入数据,请选择正确答案填入。
#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]
(33) 设有如下的程序段:
char str[ ]="Hello";
char *ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为
A) 'o' B) '\0' C) 不确定的值 D) 'o'的地址
(34) 在宏定义 #define PI 3.14159中,用宏名PI代替一个
A) 单精度数 B) 双精度数 C) 常量 D) 字符串
(35) 字符(char)型数据在微机内存中的存储形式是
A) 反码 B) 补码 C) EBCDIC码 D) ASCII码
(36) 执行下面的程序段
int x=35;
char z='A';
int b;
B=((x&15)&&(z<'a'));
后,B的值为
A) 0 B) 1 C) 2 D) 3
(37) C语言规定,程序中各函数之间
A) 既允许直接递归调用也允许间接递归调用
B) 不允许直接递归调用也不允许间接递归调用
C) 允许直接递归调用不允许间接递归调用
D) 不允许直接递归调用允许间接递归调用
(38) 假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式 的表达式是
A) 1/a*b*c B) 1/(a*b*c) C) 1/a/b/(float)c D) 1.0/a/b/c
(39) 若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是
A) pb=&x B) pb=x; C) *pb=&x; D) *pb=*x
(40) 设有
static char str[ ]="Beijing";
则执行
printf("%d\n", strlen(strcpy(str,"China")));
后的输出结果为
A) 5 B) 7 C) 12 D) 14
(41) 设有如下程序:
#include
main()
{ int **k, *j, i=100;
j=&i; k=&j;
printf("%d\n", **k);
}
 上面程序的输出结果是
A) 运行错误 B) 100 C) i的地址 D) j的地址
(42) 设 a=5, b=6, c=7, d=8, m=2, n=2, 执行
 (m=a>b)&&(n=c>d)
后n的值为
A) 1 B) 2 C) 3 D) 4
(43) 下面函数的功能是
sss(s, t)
char *s, *t;
{ while((*s)&&(*t)&&(*t++== *s++));
return(*s-*t);
}
A) 求字符串的长度 B) 比较两个字符串的大小
C) 将字符串s复制到字符串t中 D) 将字符串s接续到字符串t中
(44) 请选出以下程序的输出结果
#include
sub(x,y,z)
int x, y, *z;
{ *z=y-x; }
main()
{ int a, b, c;
sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);
printf("%d,%d,%d\n", a,b,c);
}
A) 5,2,3 B) -5,-12,-7 C) -5,-12,-17 D) 5,-2,-7
(45) 下面程序的输出结果是
#include
main()
{ int i=2,p;
p=f(i,i+1);
printf("%d",p);
}
int f(a,b)
int a,b;
{ int c;
if(a>b) c=1;
else
if(a==b) c=0;
else c=-1;
return(c);
}
A) -1 B) 0 C) 1 D) 2
(46) 请选出以下程序段的输出结果
#include
#define MIN(x,y) (x)<(y)? (x):(y)
main()
{ int i,j,k;
i=10; j=15;
k=10*MIN(i,j);
printf("%d\n",k);
}
A) 15 B) 100 C) 10 D) 150
(47) 请选出以下程序段的输出结果
#include
main()
{ char sl[10], s2[10], s3[10], s4[10];
scanf("%s%s",s1,s2); gets(s3); gets(s4);
puts(s1); puts(s2); puts(s3); puts(s4);
}
输入数据如下:(此处代表回车符)
aaaa bbbb
cccc dddd
A) aaaa B) aaaa C) aaaa D) aaaa bbbb
bbbb bbbb bbbb cccc
cccc cccc dddd dddd
cccc dddd dddd eeee
(48) 请选出以下程序的输出结果
#include
fun(s, n1, n2)
int *s, n1, n2;
{ int i, j, t;
i=n1; j=n2;
while(i{ t= *(s+i); *(s+i)= *(s+j); *(s+j)=t;
i++; j--;
}
}
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,0},i, *p=a;
fun(p,0,3); fun(p,4,9); fun(p,0,9);
for(i=0; i<10; i++) printf("%d", *(a+i));
printf("\n");
}
A) 0 9 8 7 6 5 4 3 2 1 B) 4 3 2 1 0 9 8 7 6 5
C) 5 6 7 8 9 0 1 2 3 4 D) 0 9 8 7 6 5 1 2 3 4
(49) 请选出以下程序的输出结果
#include
main()
{ int a[ ]={ 1,2,3,4 },i;
int x=0;
for(i=0; i<4; i++)
{ sub(a,x); printf("%d",x);}
printf("\n");
}
sub(s,y)
int *s, y;
{ static int t=3;
y=s[t]; t--;
}
A) 1 2 3 4 B) 4 3 2 1 C) 0 0 0 0 D) 4 4 4 4
(50) 下面程序的输出结果为
struct st
{ int x;
int *y;
} *p;
int dt[4]={10,20,30,40};
struct st aa[4]={ 50,&dt[0],60,&dt[1],
70,&dt[2],80,&dt[3] };
main()
{ p=aa;
printf("%d\n", ++p->x );
printf("%d\n", (++p)->x);
printf("%d\n", ++( *p->y));
}
A) 10 B) 50 C) 51 D) 60
20 60 60 70
20 21 21 31
二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡上【1】-【20】序号的横线上,答在试卷上不得分。
(1) 十进制数123用八位二进制表示为 【1】 。
(2) 70年代末开始出现16位微处理器,标志着微型计算机进入了第三代;80年代起使用 【2】 位微处理器,标志微型计算机进入了第四代。
(3) 通用计算机操作系统的功能和任务是:作业管理、文件管理、外设管理、CPU管理和 【3】 管理。
(4) PC-DOS的两个隐含文件是:IBMBIO.COM(输入输出程序)与 【4】 (磁盘操作管理程序)。
(5) FoxBASE和dBASE有两种变量:即内存变量和 【5】 变量 。
(6) 设有如下程序段:
int i=0, sum=1;
do
{ sum+=i++;}
while(i<6);
printf("%d\n", sum);
上述程序段的输出结果是 【6】 。
(7) 阅读下列程序:
#include
main()
{ int i, j, row, column,m;
static int array[3][3]={{100,200,300},
{28,72,-30},
{-850,2,6}
};
m=array[0][0];
for (i=0; i<3; i++)
for (j=0; j<3; i++)
if (array[i][j]{ m=array[i][j]; row=i; column=j;}
printf("%d,%d,%d\n",m,row,column);
}
上述程序的输出结果是 【7】 。
(8) 设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句:
a*=16+(b++)-(++c);
后,a的值是 【8】 。
(9) 下面程序的输出结果是 【9】 。
 #include
 main()
 { int a=3, b=2, c=1;
 c-=++b;
 b*=a+c;
 { int b=5, c=12;
 c/=b*2;
 a-=c;
 printf( '%d,%d,%d,",a,b,c);
 a+=--c;
 }
 printf( '%d,%d,%d,",a,b,c);
 }
(10) 设有如下程序:
#include
main(argc,argv)
int argc; char *argv[ ];
{ while( --argc>0) printf("%s",argv[argc]);
printf("\n");
}
 假定上述程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROG ABCD EFGH IJKL ,则输出结果为 【10】 。
(11) 阅读下列程序:
 #include
 #define MAX_COUNT 4
 void fun();
 main()
 { int count;
 for (count=1; count<=MAX_COUNT; count++) fun();
 }
 void fun()
 { static int i;
 i+=2; printf("%d",i);
 }
上述程序的输出结果是 【11】 。
(12) 设有下列程序:
#include
#include
main()
{ int i;
char str[10], temp[10];
gets(temp);
for (i=0; i<4; i++)
{ gets(str);
if (strcmp(temp,str)<0) strcpy(temp,str);
}
printf("%s\n",temp);
}
上述程序运行后,如果从键盘上输入(在此代表回车符):
C++
BASIC
QuickC
Ada
Pascal
则程序的输出结果是 【12】 。
(13) 设有如下程序:
 #include
 main(argc,argv)
 int argc; char *argv[ ];
 { FILE *fp;
 void fc();
 int i=1;
 while( --argc>0)
 if((fp=fopen(argv[i++],"r"))==NULL)
 { printf("Cannot open file! \n");
 exit(1);
 }
 else
 { fc(fp); fclose(fp); }
 }
 void fc(ifp)
 FILE *ifp;
 { char c;
 while((c=getc(ifp))!='#') putchar(c-32);
 }
 上述程序经编译、连接后生成可执行文件名为cpy.exe。假定磁盘上有三个
 文本文件,其文件名和内容分别为:
 文件名 内容
 a aaaa#
 b bbbb#
 c cccc#
 如果在DOS下键入
 cpy a b c
 则程序输出 【13】 。
(14) 若输入3个整数3,2,1,则下面程序的输出结果是【14】 。
 #include
 void sub( n,uu)
 int n, uu[ ];
 { int t;
 t=uu[n--]; t+=3*uu[n];
 n=n++;
 if(t>=10)
 { uu[n++]=t/10; uu[n]=t%10;}
 else uu[n]=t;
 }
 main( )
 { int i, n, aa[10]={0,0,0,0,0,0}
 scanf( "%d%d%d",&n,&aa[0],&aa[1]);
 for(i=1; i for(i=0; i<=n; i++) printf("%d",aa[i]);
 printf("\n");
 }
(15) 若有以下定义:
 double w[10];
 则w数组元素下标的上限为 【15】 ,下限为 【16】 。
(16) 以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。
 #include
 #include
 main( )
 { int num[26],i; char c;
 for(i=0; i<26; i++) num[i]=0;
 while( 【17】 !='#') /*统计从终端输入的大写字母个数*/
 if( isupper(c)) num[c-65]+=1;
 for(i=0; i<26; i++) /*输出大写字母和该字母的个数*/
 if(num[i]) printf("%c:%d\n,i 【18】 , num[i]);
 }
(17) 下面的程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据。请填空。
#include
getone(s)
int **s;
{ *s=(int *)malloc(sizeof(int));}
assone(a)
int *a;
{ scanf("%d", 【19】 );}
outone(b)
int *b;
printf("%d\n", 【20】 );}
main( )
{ int *p;
getone(&p);
assone(p);
outone(p);
}
『完』

1995年二级C笔试试卷参考答案
一`选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)
(1)C (2)D (3)B (4)A (5)D (6)D (7)B (8)C (9)C (10)A
(11)B (12)C (13)A (14)C (15)C (16)C (17)D (18)C (19)A (20)D
(21)B (22)D (23)C (24)B (25)B (26)A (27)C (28)C (29)D (30)B
(31)B (32)A (33)B (34)D (35)D (36)B (37)A (38)D (39)A (40)A
(41)B (42)B (43)B (44)B (45)A (46)A (47)A (48)C (49)C (50)C
二` 填空题(每空2分,共40分)
(1) 01111011
(2) 32
(3) 内存 或存储器 或存储
(4) IBMDOS.COM 允许用小写字母
(5) 字段 或字段名
(6) 16
(7) -850,2,0若遗漏逗号扣1分
(8) 28
(9) 2,5,1,2,3,-2若遗漏逗号扣1分
(10) IJKLEFGHABCD 若在字符间嵌入空格扣1分 若在字符间嵌入空格扣1分
(12) QuickC 若大写字母写成小写字母,或小写字母写成大写字母扣1分
(13) AAAABBBBCCCC 若在字符间嵌入空格扣1分若用小写字母扣1分
(14) 2 7 2 1 或2721
(15) 9
(16) 0
(17) (c=getchar()) 注意,外层括号不得遗漏
(18) +65 或 +'A'
(19) a 或&*a
(20) *b



 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50