广东商学院校园风在线's Archiver

江中云鹤 发表于 2007-4-11 00:37

历年二级C语言笔试试题

[size=2]一楼最后面有94-02年的试题下载,二楼是95年的,三楼是96年的。[/size]
[size=2]全国计算机等级考试二级笔试试题
基础知识与C语言程序设计
(考试时间120分钟,满分100分)
1994年4月
一、选择题(1-30每小题1分,31-45每小题2分,共60分)
下列各题 A),B),C),D)四个选项,只有一个选项是正确的,请将正确的选项在答题卡相应位置上涂黑。答在试卷上不得分。
(1) 二进制数101110转换为等值的八进制数是 【1】 。
【1】 A) 45 B) 56 C) 67 D) 78
(2) CPU是由 【2】 组成的。【】
【2】 A) 内存储器和控制器 B) 控制器和运算器
C) 内存储器和运算器 D) 内存储器、控制器和运算器
(3) DOS是为IBM PC系列微型计算机及其兼容机所配置的 【3】 磁盘操作系统。
【3】 A)  多用户多任务 B) 单用户单任务 C) 分时 D) 分布式
(4) 启动MS-DOS操作系统后, 【4】 已驻留内存。
【4】 A) COMMAND.COM B) DISKCOPY.COM C) FORMAT.COM D) CCCC.EXE
(5) 设驱动器B中软盘上的目录结构如下图所示。[/size]
[size=2][/size]
[size=2]设当前目录为F2,则把A盘根目录下的PROG.BAS文件复制到B盘F3子目录中的命令是 【5】 。
【5】 A) COPY PROG.BAS B: B) COPY A:PROG.BAS B:\
C) COPY A:\PROG.BAS B:\F3 D) COPY A:PROG.BAS B:\F3\
(6) 下面四组DOS命令中,意义完全相同的一组是 【6】 。
【6】 A) COPY和DISKCOPY B) COMP和DISKCOMP
C) DEL和RD D) RENAME和REN
(7) 防止软盘感染病毒的有效方法是 【7】 。
【7】 A) 不要把软盘和有毒软盘放在一起 B) 在写保护缺口上贴上胶条
C) 保持机房清洁 D) 定期对软盘格式化
(8) 双面高密度5英寸软磁盘的容量是 【8】 。
【8】 A) 360KB B) 720KB C) 1.2MB D) 1.44MB
(9) 在FOXBASE中,可以使用的两类变量是 【9】 。
【9】 A) 内存变量和字段变量 B) 全局变量和局部变量
C) 字段变量和简单变量 D) 内存变量和自动变量
(10) 建立一个新子目录的DOS命令是 【10】 。
【10】 A) CREATE B) RD C) MD D) CD
(11) 在C语言中,如果下面的变量都是int类型,则输出的结果是 【11】 。
sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;
printf("%d\n",pad);
【11】 A) 7 B) 6 C) 5 D) 4
(12) 以下程序的输出结果是 【12】 。
# include <stdio.h>
main()
{ int i=010 , j = 10;
printf("%d,%d\n",+ +i , j - -); }
【12】 A) 11,10 B) 9,10 C) 010,9 D) 10,9
(13) 已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是 【13】 。
# include <stdio.h>
main()
{ char c1='A', c2='Y';
printf("%d,%d\n",c1,c2); }
【13】A) 因输出格式不合法,输出错误信息 B)65,90 C)A,Y D)65,89
(14) 指针s所指字符串的长度为 【14】 。
char *s="[/size][url=file://\\][size=2]\\"Name\\Address\n[/size][/url][size=2]";
【14】 A) 19 B) 15 C) 18 D) 说明不合法
(15) 设有说明int(*ptr)[m];其中的标识符ptr是 【15】 。
【15】 A)M个指向整型变量的指针
B)指向M个整型变量的函数指针
C)一个指向具有M个整型元素的一维数组的指针
D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量
(16) 语句while(!E);中的条件!E等价于 【16】 。
【16】 A)E = = 0 B)E!=1 C)E!=0 D)~E
(17) 以下程序的输出结果是 【17】 。
# include <stdio.h>
main()
{ printf("%d\n",NULL); }
【17】 A) 不确定的(因变量无定义) B)0 C)-1 D)1
(18) 以下函数调用语句中含有 【18】 个实参。
func((exp1,exp2),(exp3,exp4,exp5));
【18】 A) 1 B) 2 C) 4 D) 5
(19) 设有以下语句:
char a=3,b=6,c;
c=a^b<<2;
则c的二进制值是 【19】 。
【19】 A) 00011011 B)00010100 C)00011100 D)00011000
(20) 下面的程序中 【20】 有错误(每行程序前面的数字是行号)。
1 #include <stdio.h>
2 main()
3 {
4 float a[3]={0,0};
5 int i;
6 for(i=0;i<3;i + + ) scanf("%d",&a[i]);
7 for(i=1;i<3;i + + ) a[0]=a[0]+a[i];
8 printf("%f\n",a[0]);
9 }
【20】 A) 没有 B)第4行 C)第6行 D)第8行
(21) 设有语句int a=3;则执行了语句a+=a-=a*a;后,变量a的值是 【21】 。
【21】 A)3 B)0 C)9 D)-12
(22) 以下的for循环 【22】 。
for(x=0,y=0; (y!=123)&&(x<4); x + + );
【22】A) 是无限循环 B)循环次数不定 C)执行4次 D)执行3次
(23) 设有语句char a='\72';则变量a 【23】 。
【23】A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法
(24) 以下程序的输出结果是 【24】 。
# include <stdio.h>
# include <math..h>
main()
{ int a=1,b=4,c=2;
float x=10..5 , y=4.0 , z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
pritnf("%f\n",z); }
【24】A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000
(25) sizeof(double)是 【25】 。
【25】 A)一种函数调用 B)一个双精度型表达式
C)一个整型表达式 D)一个不合法的表达式
(26) C语言中 【26】 。
【26】 A)不能使用do-while语句构成的循环
B)do-while语句构成的循环必须用break语句才能退出
C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环
(27) 以下程序的输出结果是 【27】 。
# include <stdio.h>
# include <string.h>
main()
{ char str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str)); }
【27】 A) 6 B) 7 C) 11 D) 12
(28) 以下程序的输出结果是 【28】 。
# include <stdio.h>
main()
{ int a=2,c=5;
printf("a=%%d,b=%%d\n",a,c); }
【28】A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d
(29) 以下程序的输出结果是 【29】 。
# include<stdio.h>
main()
{ int a ,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b); }
【29】 A) 6,1 B) 2,1 C) 6,0 D) 2,0
(30) 以下程序的输出结果是 【30】 。
# include <stdio.h>
main()
{ int i;
for ( i=1;i<=5;i + + ) {if ( i%2 ) printf("*");
else continue; printf("#");}
printf("$\n"); }
【30】 A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$
(31) 以下for语句构成的循环执行了 【31】 次。
# include <stdio.h>
# define N 2
# define M N+1
# define NUM (M+1)*M/2
main()
{ int i , n=0;
for ( i=1;i<=NUM;i + + );
{n + + ; printf("%d",n); }
printf("\n"); }
【31】 A) 5 B) 6 C) 8 D) 9
(32) 设有以下语句,则 【32】 不是对a数组元素的正确引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
【32】 A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))
(33) 有以下程序:
# include <stdio.h>
# define N 6
main()
{ char c[N]; int i=0;
for ( ;i<N ; c[i]=getchar () , i + + );
for ( i=0 ; i<N ; putchar(c[i]) , i + + ); }
输入以下三行,每行输入都是在第一列上 开始,<CR>代表一个回车符:
a<CR>
b<CR>
cdef<CR>
程序的输出结果是 【33】 。
【33】 A) abcdef B) a C) a D) a
b b b
c cd cdef
d
e
f
(34) 以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。
# include <stdio.h>
findmax ( s , t , k )
int *s , t , *k;
{ int p; for(p=0,*k=p;p<t;p + + )
if ( s[p] > s[*k] )_________; }
main()
{ int a[10] , i , k ;
for ( i=0 ; i<10 ; i + + ) scanf("%d",&a[i]);
findmax ( a,10,&k );
printf ( "%d,%d\n" , k , a[k] ); }
【34】 A) k=p B) *k=p-s C) k=p-s D) *k=p
(35) 有以下程序:
#include<stdio.h>
union pw
{ int i; char ch[2]; } a;
main()
{ a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); }
程序的输出结果是 【35】 。(注意: ch[0]在低字节,ch[1]在高字节。)
【35】 A) 13 B) 14 C) 208 D) 209
(36) 有以下程序:
# include<stdio.h>
main()
{ int c;
while((c=getchar())!='\n')
{ switch(c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
case 4: putchar(c+2);break; } }
printf("\n"); }
从第一列开始输入以下数据,<CR>代表一个回车符。
2743<CR>
程序的输出结果是 【36】 。
【36】 A) 668977 B) 668966 C) 6677877 D) 6688766
(37) 以下程序的输出结果为 【37】 。
main()
{ char *alpha[6]={"ABCD","IJKL","MNOP","QRST","UVWX"};
char **p; int i;
p=alpha;
for(i=0;i<4;i + + ) printf("%s",p[i]); printf("\n"); }
【37】A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIM
(38) 以下程序的输出结果是 【38】 。
# include<stdio.h>
# define FUDGE(y) 2.84+y
# define PR(a) printf("%d",(int)(a))
# define PRINT1(a) PR(a);putchar('\n')
main()
{int x=2; PRINT1(FUDGE(5)*x); }
【38】 A) 11 B) 12 C) 13 D) 15
(39) 以下程序的输出结果是 【39】 。
# include<stdio.h>
main()
{ int i=1,j=3;
printf("%d",i + + );
{ int i=0; i+=j*2; printf("%d,%d",i,j); }
printf("%d,%d\n",i,j); }
【39】 A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3
(40) 以下程序的输出结果是 【40】 。
# include <stdio.h>
main()
{ int k=4,m=1,p;
p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p);}
func(a,b)
int a,b;
{ static int m=0,i=2;
i+=m+1; m=i+a+b; return(m); }
【40】 A) 8,17 B) 8,16 C) 8,20 D) 8,8
(41) 设有以下语句:
char str[4][12]={"aaa","bbbb","ccccc","dddddd"},
*strp[4];
int i;
for(i=0;i<4;i + + )strp[i]=str[i];
 【41】 不是对字符串的正确引用,其中0≤k<4。
【41】 A) strp B) str[k] C) strp[k] D) *strp
(42) 设有以下语句:
char str1[]="string",str2[8],*str3,*str4="string";
则 【42】 不是对库函数strcpy的正确调用,此库函数用业复制字符串。
【42】 A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3"); D) strcpy(str4,"HELLO4");
(43) C语言中形参的缺省存储类别是 【43】 。
【43】A)自动(auto) B)静态(static) C)寄存器(register) D)外部(extern)
(44) 设有以下语句:
struct st {int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p;
p=&a[0];
则表达式 【44】 的值是6。
【44】 A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n
(45) 以下四个程序中, 【45】 不能对两个整型变量的值进行交换。
【45】A)# include <stdio.h>
main()
{ int a=10,b=20; swap(&a,&b);
printf("%d %d\n",a,b);
}
swap(p,q)
int *p,*q;
{
int *t;
t=(int )malloc(sizeof(int));
t=p;*p=*q;*q=*t; } [/size]
[size=2]B) # include <stdio.h>
main()
{
int a=10,b=20;
swap(&a,&b);
printf("%d %d\n",a,b);
}
swap(p,q)
int p,q;
{
int *t;
t=*p;*p=*q;*q=t;
}[/size]
[size=2]C) # include <stdio.h>
main()
{
int *a,*b;
*a=10,*b=20;
swap(a,b);
printf("%d %d\n",*a,*b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}[/size]
[size=2]D) # include<stdio.h>
main()
{
int a=10,b=20;
int x=&a,y=&b;
swap(x,y);
printf("%d %d\n",a,b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}[/size]
[size=2]二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡1-20序号后的横线上,答在试卷上不得分。
(1) 结构化程序设计所规定的三种基本控制结构是 【1】 结构.选择结构和循环结构。
(2) 在七位ASCII码中,除了表示数字、英文大小写字母外,还有 【2】 个其它符号。
(3) 把B盘BAS子目录下第三个字符为A,且没有扩展名的全部文件拷贝到C盘ABC子目录下的命令是 【3】 。
(4) 微机中ROM的中文意义是 【4】 存储器。
(5) 启动MS-DOS系统后,能自动执行的批处理文件是 【5】 .BAT。
(6) 设当前盘为C盘,删除B盘FOX子目录中扩展名为.TXT的所有文件的命令是 【6】 。
(7) 十进制数53转换为十六进制数为 【7】 。
(8) 数据库管理系统常见的数据模型有层次、网状和 【8】 三种。
(9) 买来一张新盘后,在存入文件前,必须进行 【9】 处理。
(10) 在微机中,字符的比较就是对它们的 【10】 码进行比较。
(11) 以下C语言程序将磁盘中的一个文件复制到另一个文件中,两个文件名在命令行中给出。
#include <stdio.h>
main(argc,argv)
int argc; char *argv[];
{ FILE *f1,*f2; char ch;
if(argc< 【11】 )
{ printf("Parameters missing!\n"); exit(0); }
if( ((f1=fopen(argv[1],"r")) = = NULL)||((f2=fopen(argv[2],"w")) = = NULL))
{ printf("Can not open file!\n"); exit(0);}
while( 【12】 )fputc(fgetc(f1),f2);
fclose(f1); fclose(f2); }
(12) 以下程序中的trap函数是一个用梯形法求定积分的通用函数。梯形法求定积分的公式为:
n-1 a-b
s=((f(a)+f(b))/2+∑ f(a+i*h))*h , h=|----|
i=1 n
其中,n为积分小区间数。以下程序调用trap函数求定积分,被积函数是:
f(x)=x*x+3*x+2,且n=1000,a=0,b=4。
#include <stdio.h>
3include <math.h>
double trap(fun,a,b)
double (*fun)(),a,b;
{ double t,h;
int i,n=1000;
t=0.5*((*fun)(a)+(*fun)(b)); h=fabs(a-b)/(double)(n);
for(i=1;i<=n-1;i + + ) t=t+ 【13】 ;
t=t*h; return(t); }
double mypoly(x)
double x;
{ return(x*x+3.0*x+2.0); }
main()
{ double y,(*pf)(); pf= 【14】 ;
y=trap(pf,0.0,4.0); printf("%f\n",y); }
(13) 以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。
#include <stdio.h>
main()
{ int i,a[10],*p=a,sum=0;
printf("Enter 10 num:\n");
for(i=0;i<10;i + + ) scanf("%d",&a[i]);
for(i=0;i<10;i + + )
if(isprime(*(p+ 【15】 )) = = 1){ printf("%d",*(a+i)); sum+=*(a+i); }
printf("\nThe sum=%d\n",sum); }
isprime(x)
int x;
{ int i; for(i=2;i<=x/2;i + + )
if(x%i = = 0) return (0); 【16】 ; }
(14) 以下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。
#include <stdio.h>
#define N 10
invert(s,i,j)
int *s,i,j;
{ int t; if(i<j){ t=*(s+i); *(s+j)=(s+j);*(s+j)=t; invert(s, 【17】 ,j-1);}}
main()
{ int a[N],i;
for(i=0;i<N;i + + ) scanf("%d",a+ 【18】 );
invert(a,0,N-1);
for(i=0;i<N;i + + ) printf("%d",a[i]);
printf("\n"); }
(15) 以下程序建立了一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data 域不放数据,表空的条件是ph->next = = NULL).
#include<stdio.h>
struct list { int data;struct list *next;};
【19】 creatlist()
{ struct list *p,*q,*ph; int a;
ph=(struct list *) malloc(sizeof(struct list));
p=q=ph; printf("Input an integer number,enter -1 to end:\n");
scanf("%d",&a):
while(a!=-1)
{ p=(struct list *)malloc(sizeof(struct list));
p->data=a; q->next=p; 【20】 =p; scanf("%d",&a); }
p->next='\0'; return(ph); }
main()
{ struct list *head; head=creatlist();}[/size]
[size=2][完][/size]
[size=2]1994年全国计算机等级考试二级笔试
C语言参考答案
选择题([1]--[30]每个选项1分,[31]--[45]每个选项2分,共60分)
(1)B (2)B (3)B (4)A (5)C (6)D (7)B (8)C (9)A (10)C
(11)C (12)B (13)D (14)B (15)C (16)A (17)B (18)B (19)A (20)C
(21)D (22)C (23)A (24)C (25)C (26)D (27)A (28)D (29)B (30)A
(31)C (32)D (33)C (34)D (35)A (36)A (37)C (38)B (39)B (40)A
(41)A (42)C (43)A (44)D (45)C
二` 填空题(每空2分,共40分)
(1)顺序
(2)66
(3) COPY B:\BAS\??A*.C:\ABC(或COPY B:\BAS\??A*.,C:\ABC)
(4)只读
(5)AUTOEXEC
(6)DEL B:\FOX\*.TXT
(7)35
(8)关系
(9)格式化(或初始化、FORMAT)
(10)ASCII
(11)3
(12)!feof(f1)或feof(f1)==0
(13)(*fun)(a+i*h)
(14) mypoly
(15)I
(16)return 1 或 return (1)
(17)i+1
(18) I
(19) struct list *
(20) q[/size]

[size=2][/size][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]

江中云鹤 发表于 2007-4-11 00:37

[size=2]沙发,下面是95的
全国计算机等级考试二级笔试卷
基础知识和C语言程序设计
(考试时间120分钟,满分100分)
1995年9月
一、选择题((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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
#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<stdio.h>
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);
}
输入数据如下:(此处<CR>代表回车符)
aaaa bbbb<CR>
cccc dddd<CR>
A) aaaa B) aaaa C) aaaa D) aaaa bbbb
bbbb bbbb bbbb cccc
cccc cccc dddd dddd
cccc dddd dddd eeee
(48) 请选出以下程序的输出结果
#include<stdio.h>
fun(s, n1, n2)
int *s, n1, n2;
{ int i, j, t;
i=n1; j=n2;
while(i<j)
{ 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<stdio.h>
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<stdio.h>
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[/size][size=2][j]<m)
{ m=array[/size][size=2][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<stdio.h>
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<stdio.h>
main(argc,argv)
int argc; char *argv[ ];
{ while( --argc>0) printf("%s",argv[argc]);
printf("\n");
}
假定上述程序经编译和连接后生成可执行文件PROG.EXE,如果在DOS提示符下键入PROG ABCD EFGH IJKL <CR>,则输出结果为 【10】 。
(11) 阅读下列程序:
#include<stdio.h>
#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<stdio.h>
#include<strint.h>
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);
}
上述程序运行后,如果从键盘上输入(在此<CR>代表回车符):
C++<CR>
BASIC<CR>
QuickC<CR>
Ada<CR>
Pascal<CR>
则程序的输出结果是 【12】 。
(13) 设有如下程序:
#include <stdio.h>
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<CR>
则程序输出 【13】 。
(14) 若输入3个整数3,2,1,则下面程序的输出结果是【14】 。
#include<stdio.h>
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<n; i++) sub(i,aa);
for(i=0; i<=n; i++) printf("%d",aa[/size][size=2]);
printf("\n");
}
(15) 若有以下定义:
double w[10];
则w数组元素下标的上限为 【15】 ,下限为 【16】 。
(16) 以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。
#include <stdio.h>
#include <ctype.h>
main( )
{ int num[26],i; char c;
for(i=0; i<26; i++) num[/size][size=2]=0;
while( 【17】 !='#') /*统计从终端输入的大写字母个数*/
if( isupper(c)) num[c-65]+=1;
for(i=0; i<26; i++) /*输出大写字母和该字母的个数*/
if(num[/size][size=2]) printf("%c:%d\n,i 【18】 , num[/size][size=2]);
}
(17) 下面的程序调用getone函数开辟一个动态存储单元,调用assone函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据。请填空。
#include <stdio.h>
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[/size]

江中云鹤 发表于 2007-4-11 00:39

[size=2]1996年 4 月全国计算机等级考试二级C语言笔试卷及答案(考试时间120分钟,满分100分)[/size]
[size=2]一、选择题((1)~(40)题每题1分,(41)~(50)题每题2分共60分)[/size]
[size=2]下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在度卷上不得分。[/size]
[size=2]1.一个完整的计算机系统包括______[/size]
[size=2]A)主机健盘与显示器B)计算机与外部设备[/size]
[size=2]C)硬件系统与软件系统D)系统软件与应用软件[/size]
[size=2]2.十六进制数1000转换成十制数是[/size]
[size=2]A)4096 B)1024 C)2048 D)8192[/size]
[size=2]3.十进制数269转换成十六进制数是[/size]
[size=2]A)10E B)10D C)10C D)10B[/size]
[size=2]4.如果用八位二进制补码表示带符号的定点整数,则能表示的十进制数的范围是[/size]
[size=2]A)——127到127 B)——128到128 C)——127到128 D)——128到127[/size]
[size=2]5.下列设备中,既可作为输入设备又可作为输出设备的是[/size]
[size=2]A)鼠标器B)打印机C)键盘D)磁盘驱动器[/size]
[size=2]6.下列各叙述中,正确的是[/size]
[size=2]A)正数二进制原码的补码是原码本身[/size]
[size=2]B)所有的十进制数都能准确地转换为有限位二进制小数[/size]
[size=2]C)汉字的计算机机内码就是国标码[/size]
[size=2]D)存储器具有记忆能力,其中的信息任何时候都不会丢失[/size]
[size=2]7.在下列操作中,能导致DOS系统重新启动但不进行系统自检的是[/size]
[size=2]A)加电开机B)按《CTRL》《BREAK》[/size]
[size=2]C)按《CTRL》《ALT》《DEL》D)按RESET按钮[/size]
[size=2]8.如果给定一个带有通配符的文件名F *。?,则在下列各文件中,它能代表的文件名是[/size]
[size=2]A)FA.EXE B)F.C C)EF.C D)FABC.COM[/size]
[size=2]9.DOS系统启动后,下列文件中常驻内存的是[/size]
[size=2]A)*。COM B)FORMAT.COM[/size]
[size=2]C)AUTOEXEC.BAT D)COMMAND.COM[/size]
[size=2]10.设A盘的目录结构为(画方框的为目录)[/size]
[size=2]、[/size]
[size=2][/size]
[size=2]┌───┬───┼─────┬─────┬────┐[/size]
[size=2]│││││A.FOR [/size]
[size=2]ABC [D1]DX.C Q.DAT [D2][/size]
[size=2]┌───┴┬───┬───┐┌──┼───┐[/size]
[size=2]│││││││[/size]
[size=2]B.PAS [D3]Y.BAS A.C A1.C [D4]XYZ.C[/size]
[size=2]┌───┴┬──┬────┐[/size]
[size=2]QR.C NA.C A.TXT B.C[/size]
[size=2]如果当前盘为C盘,A盘的当前目录为、D2,则下列对A盘上文件QR.C的指定中,合法的是[/size]
[size=2]A)、D2、D4、QR.C B)D4、QR.C[/size]
[size=2]C)A:D4、QR.C D)A:D2、D4、QR.C[/size]
[size=2]11.为了要将当前目录(不是根目录)中所有扩展名为。C的文件同名复制到A 盘的根目录、USER中,正确的命令是[/size]
[size=2]A)COPY A:*。C USER、*。C B)COPY A:*。C A:、USER[/size]
[size=2]C)COPY A:*。C A:USER、D)COPY A:*。C A:USER、*。C[/size]
[size=2]12.为了在屏幕上一次显示当前盘当前目录下的所有扩展名为。TXT的文件内容,下列命令中正确的是[/size]
[size=2]A)TYPE *。TXT B)TYPE *。TXT CON[/size]
[size=2]C)COPY *。TXT 》CON D)COPY *。TXT CON[/size]
[size=2]13.设当前盘为A盘,为了将当前盘当前目录下的文件AB1.TXT连接在C 盘根目录下的文件XYZ.TXT的后面,正确的命令是[/size]
[size=2]A)COPY C:、XYZ.TXTAB1.TXT[/size]
[size=2]B)COPY AB1.TXT 》》C:、XYZ.TXT[/size]
[size=2]C)TYPE AB1.TXT 》C:、XYZ.TXT[/size]
[size=2]D)COPY AB1.TXTC:、XYZ.TXT 》C:、XYZ.TXT[/size]
[size=2]14.设A盘为启动盘,其目录结构为(画方框的为目录)[/size]
[size=2]、[/size]
[size=2]┌──────┴──────┐[/size]
[size=2][DOS]COMMAND.COM[/size]
[size=2]┌───┴──────┐[/size]
[size=2][USER]AUTOEXEC.BAT [/size]
[size=2]其中文件AUTOEXEC.BAT的内容为[/size]
[size=2]MD 、XYZ[/size]
[size=2]CD 、DOS、USER[/size]
[size=2]则由A启动成功后,A盘的当前目录是[/size]
[size=2]A)、DOS、USER B)XYZ[/size]
[size=2]C)、D)、DOS[/size]
[size=2]15.下列DOS命令中为内部命令的是[/size]
[size=2]A)COMP B)PATH[/size]
[size=2]C)PRINT D)FORMAT[/size]

[size=2]16.设当前盘为C盘,所用的所有软盘已格式化且容量相同,则下列DOS命令中错误的是[/size]
[size=2]A)DISKCOPY A:C:B)DISKCOPY A:A:[/size]
[size=2]C)COPY A:*。*D)COPY A:*。*C:[/size]
[size=2]17.下列DOS命令中,有错误的是[/size]
[size=2]A)TYPE AAB.FOR 》PRN B)TYPE ?AB.FOR[/size]
[size=2]C)COPY *。C PRN D)COPY CON PRN[/size]
[size=2]18.设当前盘为C盘,在当前目录下有全部的DOS系统文件与批处理命令文件AB.BAT,且该批处理命令文件的内容为[/size]
[size=2]FORMAT A:/4[/size]
[size=2]MD 、XYZ[/size]
[size=2]CD 、XYZ[/size]
[size=2]RD 、XYZ[/size]
[size=2]MD 、XYZ[/size]
[size=2]如果在1.2M软盘驱动器A中插入一张360K容量的软盘片,执行批处理命令文件AB.BAT后,结果A盘的目录结构是[/size]
[size=2]A)根目录[/size]
[size=2]B)根目录──子目录XYZ──子目录XYZ[/size]
[size=2]C)根目录─┬子目录XYZ[/size]
[size=2]└─子目录XYZ[/size]
[size=2]D)根目录──子目录XYZ[/size]
[size=2]19.下列带有通配符的文件名中,能代表文件ABC.FOR的是[/size]
[size=2]A)*。BC.?B)A?。*[/size]
[size=2]C)?BC.*D)?。?[/size]
[size=2]20.设当前盘为C盘,且C盘上含有子目录、DOS,A盘为只有根目录的启动盘(根目录下只有三个DOS系统文件与扩展名为。C的文件)。下列命令组中的两个命令从效果上可以认为等价的是[/size]
[size=2]A)DEL 、DOS 与RD 、DOS[/size]
[size=2]B)FORMAT A:与DEL A:*。*[/size]
[size=2]C)FORMAT A:/S 与DEL A:*。?[/size]
[size=2]D)COPY A:F1 F2 与REN A:F1 F2[/size]
[size=2]21.设A`B和C都是INT型变量,且A=3,B=4,C=5,则一表达式中,值为0的表达式是[/size]
[size=2]A)'A'&&'B'B)A《=B[/size]
[size=2]C)A││BC&&BC D)!((A='A'&&CH 《='Z')?(CH 32):CH[/size]
[size=2]上面表达式的值是[/size]
[size=2]A)A B)a C)Z D)z[/size]
[size=2]24.若X和Y都是INT型变量,X=100,Y=200,且有下面的程序片段:[/size]
[size=2]PRINT(“%D”,(X,Y));[/size]
[size=2]上面程序片段的输出结果是[/size]
[size=2]A)200 B)100[/size]
[size=2]C)100 200 D)输出格式符不够,输出不确定的值[/size]

[size=2]25.下面各语句行中,能正是行赋字符串操作的语句行是[/size]
[size=2]A)CHAR ST[4][5]={“ABCDE”};[/size]
[size=2]B)CHAR S[5]={'A','B','C','D','E'};[/size]
[size=2]C)CHAR *S;S=“ABCDE”;[/size]
[size=2]D)CHAR *S;SCANF(“%S”,S);[/size]
[size=2]26.若K是INT型变量,且有下面的程序片段:[/size]
[size=2]K =——3;[/size]
[size=2]IF(K《=0)PRINTF(“####”)[/size]
[size=2]ELSE PRINTF(“&&&&”);[/size]
[size=2]上面程序片段的输出结果是[/size]
[size=2]A)####B)&&&&[/size]
[size=2]C)####&&&&D)有语法错误,无输出结果[/size]
[size=2]27.若X是INT型变量,且有下面的程序片段:[/size]
[size=2]FOR(X=3;X《6;X)PRINTF((X%2)?(“**%D”):(“##%D、N”),X);[/size]
[size=2]上面程序片段的输出结果是[/size]
[size=2]A)**3 B)##3 C)##3 D)**3##4 [/size]
[size=2]##4 **4 **4##5 **5[/size]
[size=2]**5 ##5[/size]
[size=2]28.请读程序:[/size]
[size=2]#INCLUDE [/size]
[size=2]F(CHAR *S)[/size]
[size=2]{CHAR *P=S;[/size]
[size=2]WHILE(*P !='、0')P;[/size]
[size=2]RETURN(P——S);[/size]
[size=2]}[/size]
[size=2]MAIN()[/size]
[size=2]{PRINTF(“%D、N”,F(“ABCDEF”));}[/size]
[size=2]上面输出结果是[/size]
[size=2]A)3 B)6 C)8 D)0[/size]
[size=2]29.请读程序:[/size]
[size=2]#INCLUDE [/size]
[size=2]MAIN()[/size]
[size=2]{INT A;FLOAT B,C;[/size]
[size=2]SCANF(“%2D%3F%4F”,&A,&B,&C);[/size]
[size=2]PRINTF(“、NA=%D,B=%F,C=%F、N”,A,B,C);[/size]
[size=2]}[/size]
[size=2]若运行时从键盘上输入9876543210(表示回车),则上面程序的输出结果是[/size]
[size=2]A)A=98,B=765,C=4321[/size]
[size=2]B)A=10,B=765.000000,C=4321.000000[/size]
[size=2]C)A=98,B=765.0,C=4321.0[/size]
[size=2]30.请读程序:[/size]
[size=2]#INCLUDE 《STDIO.D》[/size]
[size=2]MAIN()[/size]
[size=2]{INT N[2],I,J,K;[/size]
[size=2]FOR(I=0;I《2;I)N[J]=N[I]1;[/size]
[size=2]PRINTF(“%D、N”,N[K]);[/size]
[size=2]}[/size]
[size=2]上面程序的输出结果是[/size]
[size=2]A)不确定的值B)3 C)2 D)1[/size]
[size=2]31.请读程序片段:[/size]
[size=2]CHAR STR[]=“ABCD”,*P=STR;[/size]
[size=2]PRINTF(“%D、N”,*(P4));[/size]
[size=2]上面程序片段的输出结果是[/size]
[size=2]A)68 B)0 C)字符'D'的地址D)不确定的值(32)请读程序:[/size]
[size=2]#INCLUDE [/size]
[size=2]MAIN()[/size]
[size=2]{INT A,B;[/size]

[size=2]FOR(A=1,B=1,A《=100;A)[/size]
[size=2]{IF(B》=20)BREAK;[/size]
[size=2]IF(B%3==1)[/size]
[size=2]{B=3;[/size]
[size=2]CONTINUE;[/size]
[size=2]}[/size]
[size=2]B——=5;[/size]
[size=2]}[/size]
[size=2]PRINTF(“%D、N”,A);[/size]
[size=2]}[/size]
[size=2]上面程序的输出结果是[/size]
[size=2]A)7 B)8 C)9 D)10[/size]
[size=2]33.若要用下面的程序片段使指针变量P指向一个存储型变量的动态存储单元;[/size]
[size=2]INT *P;[/size]
[size=2]P =────MALLOC(SIZEOF(INT));[/size]
[size=2]则应填入[/size]
[size=2]A)INT B)INT *[/size]
[size=2]C)(*INT)D)(INT *)[/size]
[size=2]34.请读程序片段(字符串内没有空格字符):[/size]
[size=2]PRINTF(“%D、N”,STRLEN(“ATS、N012、1、、”));[/size]
[size=2]上面程序片段的输出结果是[/size]
[size=2]A)11 B)10[/size]
[size=2]C)9 D)8[/size]
[size=2]35.请读程序:[/size]
[size=2]#INCLUDE《STDIP.H》[/size]
[size=2]#INCLUDE《STRING.H》[/size]
[size=2]MAIN()[/size]
[size=2]{CHAR *SL=“ABCDEF”,*s2=“aB';”[/size]
[size=2]s1;s2;[/size]
[size=2]PRINTF(“%D、N”,STRCMP(s1,s2)[/size]
[size=2]}[/size]
[size=2]上面程序的输出结果是[/size]
[size=2]A)正数B)负数[/size]
[size=2]C)零D)不确定的值[/size]
[size=2]36.请读程序:[/size]
[size=2]#INCLUDE《STDIP.H》[/size]
[size=2]FUNC(INT A,INT B)[/size]
[size=2]{INT C;[/size]
[size=2]C=AB;[/size]
[size=2]RETURN C;[/size]
[size=2]}[/size]
[size=2]MAIN()[/size]
[size=2]{INT X=6,Y=7,Z=8,R;[/size]
[size=2]R=FUNC((X——,Y,XY),Z——);[/size]
[size=2]PRINTF(“%D、N”,R);[/size]
[size=2]}[/size]
[size=2]上面程序的输出结果是[/size]
[size=2]A)11 B)20[/size]
[size=2]C)21 D)31[/size]
[size=2]37.请读程序:[/size]
[size=2]#INCLUDE《STDIO.H》[/size]
[size=2]INT A[]={2,4,6,8};[/size]
[size=2]MAIN()[/size]
[size=2]{INT I;[/size]
[size=2]INT *P=A;[/size]
[size=2]FOR(I=0;I《4;I)A[I]=*P;[/size]
[size=2]PRINTF(“%D、N”,A[2]);[/size]
[size=2]}[/size]
[size=2]上面程序输出结果是[/size]
[size=2]A)6 B)8[/size]
[size=2]C)4 D)2[/size]
[size=2]38.请读程序[/size]
[size=2]#INCLUDE《STDIO.H》[/size]
[size=2]CHAR FUN(CHAR *C)[/size]
[size=2]{IF(*C《='Z'&&*C》='A')*C ——='A'——'a';[/size]
[size=2]RETURN *C;[/size]
[size=2]}[/size]
[size=2]MAIN()[/size]
[size=2]{CHAR S[81],*P=S;[/size]
[size=2]GETS(S);[/size]
[size=2]WHILE(*P)[/size]
[size=2]{*P=FUN(P);PUTCHAR(*P);P;}[/size]
[size=2]PUTCHAR('、N');[/size]
[size=2]}[/size]
[size=2]若运行时从键盘上输入OPEN THE DOOR(表示回车),则一面的输出结果是[/size]
[size=2]A)oPEN tHE dOOR[/size]
[size=2]B)open the door[/size]

[size=2]C)OPEN THE DOOR[/size]
[size=2]D)Open The Door[/size]
[size=2]39.请读程序:[/size]
[size=2]#INCLUDE《STDIO.H》[/size]
[size=2]VOID FUN(INT *S)[/size]
[size=2]{STATIC INT J=0;[/size]
[size=2]DO[/size]
[size=2]S[J]=S[J1];[/size]
[size=2]WHILE(J《2);[/size]
[size=2]}[/size]
[size=2]MAIN()[/size]
[size=2]{INT K,A[10]={1,2,3,4,5};[/size]
[size=2]FOR(K=1;K《3;K)FUN(A);[/size]
[size=2]FOR(K=0;K《5;K)PRINTF(“%D”,A[K]);[/size]
[size=2]}[/size]
[size=2]上面程序输出结果是[/size]
[size=2]A)34756 B)23445[/size]
[size=2]C)35745 D)12345[/size]
[size=2]40.请读程序:[/size]
[size=2]#include《stdio.h》[/size]
[size=2]#define SUB(X,Y)(X)*Y[/size]
[size=2]main()[/size]
[size=2]{int a=3,b=4;[/size]
[size=2]printf(“%d、n”,SUB(a,b));[/size]
[size=2]}[/size]
[size=2]上面程序的输出结果是[/size]
[size=2]A)12 B)15[/size]
[size=2]C)16 D)20[/size]
[size=2]41.请读程序:[/size]
[size=2]#include[/size]
[size=2]main()[/size]
[size=2]{int num=0;[/size]
[size=2]while(num=《=2)[/size]
[size=2]{num;printf(“%d、n”,num);}[/size]
[size=2]}[/size]
[size=2]上面程序的输出结果是[/size]
[size=2]A)1 B)1 C)1 D)1[/size]
[size=2]2 2 2[/size]
[size=2]3 3 4[/size]
[size=2]42.请读程序:[/size]
[size=2]#include[/size]
[size=2]main()[/size]
[size=2]{float x,y;[/size]
[size=2]scanf(“%f”,&x);[/size]
[size=2]if(x《0.0)y=0.0[/size]
[size=2]else if((x《5.0)&&(x!=2.0))[/size]
[size=2]y=1.0/(x2.0);[/size]
[size=2]else if(x《10.0)y=1.0/x;[/size]
[size=2]else y=10.0;[/size]
[size=2]printf(“%f、n”,y);[/size]
[size=2]}[/size]
[size=2]若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是[/size]
[size=2]A)0.000000 B)0.250000[/size]
[size=2]C)0.500000 D)1.000000[/size]
[size=2]43.请读程序:[/size]
[size=2]#include[/size]
[size=2]main()[/size]
[size=2]{int x=1,y=0,a=0,b=0;[/size]
[size=2]switch(x)[/size]
[size=2]{case 1:[/size]
[size=2]switch(y)[/size]
[size=2]{case 0:a;break;[/size]
[size=2]case 1:b;break;[/size]
[size=2]}[/size]
[size=2]case 2:[/size]
[size=2]a;b;break;[/size]
[size=2]}[/size]
[size=2]printf(“a=%d,b=%d、n”,a,b);[/size]
[size=2]}[/size]
[size=2]上面程序输出结果是[/size]
[size=2]A)a=2,b=1 B)a=1,b=1[/size]
[size=2]C)a=1,b=0 D)a=2,b=2[/size]
[size=2]44.若有下面的程序片段:[/size]
[size=2]int a[12]={0},*p[3],**pp,i;[/size]
[size=2]for(i=0;i《3;i)[/size]
[size=2]p[i]=&a[i*4];[/size]
[size=2]pp=p;[/size]
[size=2]则对数组元素的错误引用是[/size]
[size=2]A)PP[0][1]B)a[10]C)P[3][1]D)*(*(P2)2)[/size]
[size=2]45.请读程序:[/size]
[size=2]#include[/size]
[size=2]#include[/size]
[size=2]main()[/size]

[size=2]{float x,y,z;[/size]
[size=2]scanf(“%f%f”,&x,&y,),[/size]
[size=2]z=x/y;[/size]
[size=2]while(1)[/size]
[size=2]{if(fabs(z)》1.0)[/size]
[size=2]{x=y;y=z;z=x/y;[/size]
[size=2]}[/size]
[size=2]else break;[/size]
[size=2]}[/size]
[size=2]printf(“%f、n”,y);[/size]
[size=2]}[/size]
[size=2]若运行时从键盘上输入3.6 2.4(表示回车),则输出结果是[/size]
[size=2]A)1.500000 B)1.600000 C)2.000000 D)2.400000][/size]
[size=2]46.请读程序:[/size]
[size=2]#include[/size]
[size=2]f(int b[],int n)[/size]
[size=2]{int i,r;[/size]
[size=2]r=1;[/size]
[size=2]for(i=0;i《=n;i)r=r*b[i];[/size]
[size=2]return r;[/size]
[size=2]}[/size]
[size=2]main()[/size]
[size=2]{int x,a[]={2,3,4,5,6,7,8,9};[/size]
[size=2]x=f(a,3);[/size]
[size=2]printf(“%d、n”,x);[/size]
[size=2]}[/size]
[size=2]上面程序输出结果是[/size]
[size=2]A)720 B)120 C)24 D)6[/size]
[size=2]47.请读程序:[/size]
[size=2]#include[/size]
[size=2]#include[/size]
[size=2]void fun(char *s)[/size]
[size=2]{char a[10];[/size]
[size=2]strcpy(a,“STRING”);[/size]
[size=2]s=a;[/size]
[size=2]}[/size]
[size=2]main()[/size]
[size=2]{char *p;[/size]
[size=2]fun(p);[/size]
[size=2]printf(“%s、n”,p);[/size]
[size=2]}[/size]
[size=2]上面程序的输出结果是(表示空格)[/size]
[size=2]A)STRING B)STRING[/size]
[size=2]C)STRING D)不确定的值[/size]
[size=2]48.若已建立下面的链表结构,指针P`S分别提向图中所示的结点,则不能将S所指的结点插入到链末尾的语句组是[/size]
[size=2]data next[/size]
[size=2]head ───┤E ││────┤F │NULL│[/size]
[size=2]↑p │[/size]
[size=2]s ───→[/size]
[size=2]A)s——》next=NULL;p=p——》next;p——》next=s;[/size]
[size=2]B)p=p——》next;s——》next=p——》next;p——》next=s;[/size]
[size=2]C)P=P——》NEXT;S——》NEXT=P;P——》next=s;[/size]
[size=2]D)p=(*p)。next;(*s)。next=(*p)。next;(*p)。next=s;[/size]
[size=2]49.请读程序:[/size]
[size=2]#include[/size]
[size=2]void fun(float *pl,float *p2,float *s)[/size]
[size=2]{s=(float *)calloc(1,sizeof(float));[/size]
[size=2]*s=*pl *(p2)l[/size]
[size=2]}[/size]
[size=2]main()[/size]
[size=2]{float a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;[/size]
[size=2]fun(a,b,s);[/size]
[size=2]printf(“%f、n”,*s);[/size]
[size=2]}[/size]
[size=2]上面程序的输出结果是[/size]
[size=2]A)11.100000 B)12.100000[/size]

[size=2]C)21.100000 D)1.100000[/size]
[size=2]50.请读程序:[/size]
[size=2]#include[/size]
[size=2]#include[/size]
[size=2]void fun(char *w,int m)[/size]
[size=2]{char s,*pl,*p2;[/size]
[size=2]p1=w;p2=wm——1;[/size]
[size=2]while(pl[/size]
[size=2]main()[/size]
[size=2]{static char b[]=“Goodbye”;[/size]
[size=2]char *chp=&b[7];[/size]
[size=2]while(——chp》=&b[0]putchar(*chp);[/size]
[size=2]putchar('、n');[/size]
[size=2]}[/size]
[size=2]8.下面程序输出结果是。[/size]
[size=2]───[/size]
[size=2]#include[/size]
[size=2]void as(int x,int y,int *cp,int *dp)[/size]
[size=2]{*cp=xy;[/size]
[size=2]*dp=x——y;[/size]
[size=2]}[/size]
[size=2]main()[/size]
[size=2]{int a=4,b=3,c,d;[/size]
[size=2]as(a,b,&c,&d);[/size]
[size=2]printf(“%d %d、”,c,d);[/size]
[size=2]}[/size]
[size=2]9.请读程序:[/size]
[size=2]#include[/size]
[size=2]main(int argc,char *argv[])[/size]
[size=2]{int i;[/size]
[size=2]printf(“%d、n”,argc);[/size]
[size=2]for(i=0;i《=argc——1;i)printf(“%s ”,argv[i]);[/size]
[size=2]printf(“、n”);[/size]
[size=2]}[/size]
[size=2]若上面的程序编译`连接后生成可执行文件ABC.EXE,则输入以下命令行[/size]
[size=2]abc filel file2(表示回车)[/size]
[size=2]程序执行后的输出结果是[/size]
[size=2]。[/size]
[size=2]───[/size]
[size=2]10.条件“20”[/size]
[size=2]#define N 5[/size]
[size=2]fun(char *s,char a,int n)[/size]
[size=2]{int j;[/size]
[size=2]*s=a;j=n;[/size]
[size=2]while(e[/size]
[size=2]void fun(char *al,char *a2,int n)[/size]
[size=2]{int k;[/size]
[size=2]for(k=0;ks[k])[/size]
[size=2]。[/size]
[size=2]────[/size]
[size=2]return k;[/size]
[size=2]}[/size]
[size=2]16.下面程序的输同结果是。[/size]
[size=2]───[/size]
[size=2]#include[/size]
[size=2]fun(int x)[/size]
[size=2]{int p;[/size]
[size=2]if(x==0││x==1)return(3);[/size]
[size=2]p=x——fun(x——2);[/size]
[size=2]return p;[/size]
[size=2]}[/size]
[size=2]main()[/size]
[size=2]{printf(“%d、n”,fun(9));}[/size]
[size=2]17.下面程序的输出结果是[/size]
[size=2]。[/size]
[size=2]───[/size]
[size=2]#include[/size]
[size=2]funa(int a,int b)[/size]
[size=2]{return ab;}[/size]
[size=2]funb(int a,int b)[/size]
[size=2]{return a——b;}[/size]
[size=2]sub(int(*t)(),int x,int y;)[/size]
[size=2]{return ((*t)(x,y));}[/size]
[size=2]main()[/size]
[size=2]{int x,(*p)();[/size]
[size=2]p=funa;[/size]
[size=2]x=sub(p,9,3);[/size]
[size=2]x=sub(funb,8,3);[/size]
[size=2]print(“%d、n”,x);[/size]
[size=2]18.下面程序的输出结果是[/size]
[size=2]。[/size]
[size=2]──[/size]
[size=2]#include[/size]
[size=2]main()[/size]

[size=2]{char *p[]={“BOOL”,OPK“,”H“,”SP“};”[/size]
[size=2]int i;[/size]
[size=2]for(i=3;i》=0;i——,i——)printf(“%c”,*p[i]);[/size]
[size=2]printf(“、n”);[/size]
[size=2]}[/size]
[size=2]19.为了建立如图所示的存储结构(即每个结点含两个域,data 是数据域,next是指向结点的指针域,)请填空。[/size]
[size=2]data next[/size]
[size=2]┌─┐[/size]
[size=2]struct link {char data;│19│}node;[/size]
[size=2]└─┘[/size]
[size=2]──[/size]
[size=2]20.下面的的程序用来统计文件中字符的个数,请填空。[/size]
[size=2]#include[/size]
[size=2]main()[/size]
[size=2]{FILE *fp;[/size]
[size=2]long num=0;[/size]
[size=2]if((fp=fopen(“fname.dat”,“r”))==NULL)[/size]
[size=2]{printf(“Can'topen file!、n”);exit(0);}[/size]
[size=2]while[/size]
[size=2]───[/size]
[size=2]{fgetc(fp);num;}[/size]
[size=2]printf(“num=%d、n”,num);[/size]
[size=2]fclose(fp);[/size]
[size=2]}[/size]
[size=2]1996年4月[/size]
[size=2]全国计算机等级考试二级笔试试卷[/size]
[size=2]一选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)[/size]
[size=2](1)C (2)A (3)B (4)D (5)D [/size]
[size=2](6)A (7)C (8)B (9)D (10)C [/size]
[size=2](11)B (12)D (13)A (14)C (15)B [/size]
[size=2](16)A (17)B (18)A (19)C (20)C [/size]
[size=2](21)D (22)B (23)B (24)A (25)C [/size]
[size=2](26)D (27)D (28)B (29)C (30)A [/size]
[size=2](31)B (32)B (33)D (34)C (35)A [/size]
[size=2](36)C (37)A (38)B (39)C (40)A [/size]
[size=2](41)C (42)C (43)A (44)C (45)B [/size]
[size=2](46)B (47)D (48)C (49)D (50)C [/size]
[size=2]二填空题(每空2分,共40分)[/size]
[size=2](第(2)`(3)空允许小写或大小写混合使用,其它空均须与答案一样)[/size]
[size=2](1)外部[/size]
[size=2](2)DIR ??C*。*[/size]
[size=2](3)A:、X、Y、W、QR.C [/size]
[size=2](4)64[/size]
[size=2](5)92 [/size]
[size=2](6)│6 │pow(sin(x),2)*(ab)/(a——b)或sit(x)*sit(x)*(ab)/(a——b)[/size]
[size=2](7)eybdooG [/size]
[size=2](8)7 1[/size]
[size=2](9)3abc.exe file1 file2 (注:两个答案,每个1分)[/size]
[size=2](10)│10│((20[/size]

[size=2] [/size]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.