发新话题
打印

[C语言] 2004年4月全国计算机等级考试二级C笔试试卷含答案

2004年4月全国计算机等级考试二级C笔试试卷含答案

2004年4月全国计算机等级考试二级C语言笔试试卷(附参考答案)
一、选择题,(1-40)每题1分,(41-50)每题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 1MB等于
A) 1000字节 B) 1024字节
C) 1000×1000字节 D) 1024×1024字节
(2) 与十六进制数200等值的十进制数为
A) 256 B) 512 C) 1024 D) 2048
(3) 所谓“裸机”是指
A) 单片机
B) 单板机
C) 不装备任何软件的计算机 D) 只装备操作系统的计算机
(4) 能将高级语言编写的源程序转换成目标程序的是
A) 链接程序 B) 解释程序 C) 编译程序 D) 编辑程序
(5) 在64位计算机中,一个字长所占的字节数为
A) 64 B) 8 C) 4 D) 1
(6) 在Windows环境下,当一个应用程序窗口被最小化后,该应用程序
A) 继续在后台运行 B) 继续在前台运行
C) 终止运行 D) 暂停运行
(7) 在Windows环境下,能实现窗口移动的操作是
A) 用鼠标拖动窗口中的任何部位 B) 用鼠标拖动窗口的边框
C) 用鼠标拖动窗口的控制按钮 D) 用鼠标拖动窗口的标题栏
(8) 在Windows环境下,PrintScreen键的作用是
A) 打印当前窗口的内容 B) 打印屏幕内容
C) 复制屏幕到剪贴板 D) 复制当前窗口到剪贴板
(9) Internet的通信协议是
A) TCP/IP B) BBS C) WWW D) FTP
(10) 下列叙述中正确的是
A) 计算机病毒只感染可执行文件
B) 计算机病毒只感染文本文件
C) 计算机病毒只能通过软件复制的方式进行传播
D) 计算机病毒可以通过网络或读写磁盘等方式进行传播
(11) 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是
A) 有零个或多个输入 B) 有零个或多个输出
C) 有穷性 D) 可行性
(12) 以下叙述中正确的是
A) C语言的源程序不必通过编译就可以直接运行
B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C) C源程序经编译形成的二进制代码可以直接运行
D) C语言中的函数不可以单独进行编译
(13) 以下符合C语言语法的实型常量是
A) 1.2E0.5 B) 3.14.159E C) .5E-3 D) E15
(14) 以下4组用户定义标识符中,全部合法的一组是
A) _main B) If C) txt D) int
enclude -max REAL k_2
sin turbo 3COM _001
(15) 若以下选项中的变量已正确定义,则正确的赋值语句是
A) x1=26.8%3 B) 1+2=x2 C) x3=0x12 D) x4=1+2=3;
(16) 设有以下定义
int a=0;
double b=1.25;
char c=’A’;
#define d 2
则下面语句中错误的是
A) a++; B) b++ C) c++; D) d++;
(17) 设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式 计算结果不相符的是
A) (a+B) *h/2 B) (1/2)*(a+B) *h
C) (a+B) *h*1/2 D) h/2*(a+B)
(18) 有以下程序
main( )
{
int x=102,y=012;
printf(“%2d,%2d\n”,x,y);
}
执行后输出结果是
A) 10,01 B) 02,12 C) 102,10 D) 02,10
(19) 以下4个选项中,不能看作一条语句的是
A) {;} B) a=0,b=0,c=0; C) if(a>0); D) if(b==0) m=1;n=2;
(20) 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是
A) scanf(“%d”,pA) ; B) scanf(“%d”,A) ;
C) scanf(“%d”,&pA) ; D) scanf(“%d”,*pA) ;
(21) 以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是
A) if((a>B) &&(b>C) ) k=1; B) if((a>B) ||(b>C) ) k=1
else k=0;
C) if(a<=B) k=0; D) if(a>B) k=1;
else if(b<=C) k=1; else if(b>C) k=1;
else k=0;
(22) 有以下程序
main( )
{ char k; int I;
for(i=1;i<3;i++)
{ scanf(“%c”,&k);
switch(k)
{ case ‘0’: printf(“another\n”);
case ‘1’: printf(“number\n”);
}
}
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是
A) another B) another C) another D) number
number number number number
another number
(23) 有以下程序
main( )
{ int x=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf(“%d,%d,%d\n”,x,y,z);
}
程序执行后的输出结果是
A) 3,2,0 B) 3,2,-1 C) 4,3,-1 D) 5,-2,-5
(24) 有以下程序
main( )
{ int i,s=0;
for(i=1;i<10;i+=2) s+=i+1;
printf(“%d\n”,s);
}
程序执行后的输出结果是
A) 自然数1~9的累加和 B) 自然数1~10的累加和
C) 自然数1~9中的奇数之和 D) 自然数1~10中的偶数之和
(25) 有以下程序
main( )
{ int i,n=0;
for(i=2;i<5;i++)
{ do
{ if(i%3) continue;
n++;
} while(!i);
n++;
}
printf(“n=%d\n”,n);
}
程序执行后的输出结果是
A) n=5 B) n=2 C) n=3 D) n=4
(26) 若程序中定义了以下函数
double myadd(double a,double B)
{ return (a+B) ;}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是
A) double myadd(double a,B) ;
B) double myadd(double,double);
C) double myadd(double b,double A) ;
D) double myadd(double x,double y);
(27) 有以下程序
char fun(char x , char y)
{ if(x
return y;
}
main( )
{ int a=’9’,b=’8’,c=’7’;
printf(“%c\n”,fun(fun(a,B) ,fun(b,C) ));
}
程序的执行结果是
A) 函数调用出错 B)8 C)9 D)7
(28) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
A) p=1; B) *q=2; C) q=p; D) *p=5;
(29) 有以下程序
void f(int v , int w)
{ int t;
t=v;v=w;w=t;
}
main( )
{ int x=1,y=3,z=2;
if(x>y) f(x,y);
else if(y>z) f(y,z);
else f(x,z);
printf(“%d,%d,%d\n”,x,y,z);
}
执行后输出结果是
A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1
(30) 有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是
A) 5 B) 6 C) 8 D) 9
(31) 31、有以下程序
main( )
{ char a[]=”abcdefg”,b[10]=”abcdefg”;
printf(“%d %d\n”,sizeof(A) ,sizeof(B) );
}
执行后输出结果是
A) 7 7 B) 8 8 C) 8 10 D) 10 10
(32) 有以下程序
void swap1(int c[])
{ int t;
t=c[0];c[0]=c[1];c[1]=t;
}
void swap2(int c0,int c1)
{ int t;
t=c0;c0=c1;c1=t;
}
main( )
{ int a[2]={3,5},b[2]={3,5};
swap1(A) ; swap2(b[0],b[1]);
printf(“%d %d %d %d\n”,a[0],a[1],b[0],b[1]);
}
其输出结果是
A) 5 3 5 3 B) 5 3 3 5 C) 3 5 3 5 D) 3 5 5 3
(33) 有以下程序
void sum(int *A)
{ a[0]=a[1];}
main( )
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--) &nb
sp; sum(&aa);
printf(“%d\n”,aa[0]);
}
执行后的输出结果是
A) 4 B) 3 C) 2 D) 1
(34) 34、有以下程序
int f(int b[][4])
{ int i,j,s=0;
for(j=0;j<4;j++)
{ i=j;
if(i>2) i=3-j;
s+=b[j];
}
return s;
}
main( )
{ int a[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};
printf(“%d\n”,f(A) );
}
执行后的输出结果是
A) 12 B) 11 C) 18 D) 16
(35) 有以下定义
#include
char a[10],*b=a;
不能给数组a输入字符串的语句是
A) gets(A) B) gets(a[0]) C) gets(&a[0]); D) gets(B) ;
(36) 有以下程序
main( )
{ char *p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};
printf(“%d\n”,strlen(p[4]));
}
执行后输出结果是
A) 2 B) 3 C) 4 D) 5
(37) 有以下程序
int a=2;
int f(int *A)
{return (*A) ++;}
main( )
{ int s=0;
{ int a=5;
s+=f(&A) ;
}
s+=f(&A) ;
printf(“%d\n”,s);
}
执行后输出结果是
A) 10 B) 9 C) 7 D) 8
(38) 有以下程序
#define f(x) x*x
main( )
{ int i;
i=f(4+4)/f(2+2);
printf(“%d\n”,i);
}
执行后输出结果是
A) 28 B) 22 C) 16 D) 4
(39) 设有以下语句
typedef struct S
{ int g; char h;} T;
则下面叙述中正确的是
A) 可用S定义结构体变量 B)可以用T定义结构体变量
C)S是struct类型的变量 D)T是struct S类型的变量
(40) 有以下程序
struc STU
{ char name[10];
int num;
};
void f1(struct STU C)
{ struct STU b={“LiSiGuo”,2042};
c=b;
}
void f2(struct STU *C)
{ struct STU b={“SunDan”,2044};
*c=b;
}
main( )
{ struct STU a={“YangSan”,2041},b={“WangYin”,2043};
f1(A) ;f2(&B) ;
printf(“%d %d\n”,a.num,b.num);
}
执行后的输出结果是
A)2041 2044 B)2041 2043 C)2042 2044 D)2042 2043
(41) 有以下程序
main( )
{ unsigned char a,b;
a=4|3;
b=4&3;
printf(“%d %d\n”,a,b(;
}
执行后输出结果是
A) 7 0 B) 0 7 C) 1 1 D) 43 0
(42) 下面程序的功能是输出以下形式的金字塔图案是:
*
***
*****
*******
main( )
{ int i,j;
for(i=1;i<=4;i++)
{ for(j=1;j<=4-i;j++) printf(“ “);
for(j=1;j<=_______;j++) printf(“*”);
printf(“\n”);
}
}
在下划线处应填入的是
A) i B) 2*i-1 C) 2*i+1 D) i+2
(43) 有以下程序
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i
for(j=i+2;j
if(a}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa,10);
for(i=0;i<10;i++) printf(“%d”,aa);
printf(“\n”);
}
其输出结果是
A) 1,2,3,4,5,6,7,8,9,10, B) 10,9,8,7,6,5,4,3,2,1,
C) 9,2,7,4,5,6,3,8,1,10, D) 1,10,3,8,5,6,7,4,9,2,
(44) 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是
A) char s[10]=”abcdefg”; B) char t[]=”abcdefg”,*s=t;
C) char s[10];s=”abcdefg”; D) char s[10];strcpy(s,”abcdefg”);
(45) 有以下程序
#include
main(int argc ,char *argv[ ])
{ int i,len=0;
for(i=1;i printf(“5d\n”,len);
}
经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行
ex abcd efg h3 k44
执行后输出结果是
A) 14 B) 12 C) 8 D) 6
(46) 有以下程序
void f(int a[],int i,int j)
{ int t;
if(i<J)
{ t=a; a=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
main( )
{ int i,aa[5]={1,2,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++) printf(“%d,”,aa); printf(“\n”);
}
执行后输出结果是
A) 5,4,3,2,1, B) 5,2,3,4,1, C) 1,2,3,4,5, D) 1,2,3,4,5,
(47) 有以下程序
struct STU
{ char name[10];
int num;
int Score;
};
main( )
{ struct STU s[5]={{“YangSan”,20041,703},{“LiSiGuo”,20042,580},
{“wangYin”,20043,680},{“SunDan”,20044,550},
{“Penghua”,20045,537}},*p[5],*t;
int i,j;
for(i=0;i<5;i++) p=&s;
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(p->Score>p[j]->Score)
{ t=p;p=p[j];p[j]=t;}
printf(“5d %d\n”,s[1].Score,p[1]->Score);
}
执行后输出结果是
A) 550 550 B) 680 680 C) 580 550 D) 580 680
(48) 有以下程序
#include
struct NODE{
int num;
struct NODE *next;
};
main( )
{ struct NODE *p,*q,*r;
int sum=0;
p=(struct NODE *)malloc(sizeof(struct NODE));
q=(struct NODE *)malloc(sizeof(struct NODE));
r=(struct NODE *)malloc(sizeof(struct NODE));
p->num=1;q->num=2;r->num=3;
p->next=q;q->next=r;r->next=NULL;
sum+=q->next->num;sum+=p->num;
printf(“%d\n”,sum);
}
执行后的输出结果是
A) 3 B) 4 C) 5 D) 6
(49) 有以下程序
#include
main( )
{ FILE *fp; int i,k=0,n=0;
fp=fopen(“d1.dat”,”w”);
for(i=1;i<4;i++) fprintf(fp,”%d”,i);
fclose(fp);
fp=fopen(“d1.dat”,”r”);
fscanf(fp,”%d%d”,&k,&n); printf(“%d %d\n”,k,n);
fclose(fp);
}
执行后输出结果是
A) 1 2 B) 123 0 C) 1 23 D) 0 0
(50) 有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END) ;语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)
#include
main( )
{ FILE *fp; int i,a[4]={1,2,3,4},b;
fp=fopen("data.dat","wb");
for(i=0;i<4;i++) fwrite(&a,sizeof(int),1,fp);
fclose(fp);
fp=fopen("data.dat

","rb");
fseek(fp,-2L*sizeof(int).SEEK_END) ;
fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/
fclose(fp);
printf("%d\n",B) ;
}
执行后输出结果是
A) 2 B) 1 C) 4 D) 3
二、填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上, 答在试卷上不得分.
(1) E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【1】 。
(2) 计算机网络分为广域网和局域网,因特网属于【2】 。
(3) 从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为【3】 。
(4) 在Windows环境下,只要在“开始”菜单中单击【4】选项,就可以查阅最近打开过的文档清单。
(5) 计算机的运算速度可以用MIPS来描述,1MIPS是指每秒执行【5】条指令。
(6) 已知字符A的ACSII码值为65,以下语句的输出结果是【6】
char ch=’B’;
printf(“%c %d\n”,ch,ch);
(7) 有以下语句段
int n1=10,n2=20;
printf(“ 【7】 ”,n1.n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10
n2=20
(8) 有以下程序
main( )
{ int t=1,i=5;
for(;i>=0;i--) t*=i;
printf(“%d\n”,t);
}
执行后输出结果是【8】 。
(9) 有以下程序
main( )
{ int n=0,m=1,x=2;
if(!n) x-=1;
if(m) x-=2;
if(x) x-=3;
printf(“%d\n”,x);
}
执行后输出结果是【9】 。
(10) 有以下程序
#include
main( )
{ char ch1,ch2; int n1,n2;
ch1=getchar(); ch2=getchar();
n1=ch1-‘0’; n2=n1*10+(ch2-‘0’);
printf(“%d\n”,n2);
}
程序运行时输入:12<回车>,执行后输出结果是【10】 。
(11) 有以下程序
void f( int y,int *x)
{y=y+*x; *x=*x+y;}
main( )
{ int x=2,y=4;
f(y,&x);
printf(“%d %d\n”,x,y);
}
执行后输出的结果是【11】 。
(12) 函数fun的功能是计算xn
double fun(double x,int n)
{ int i; double y=1;
for(i=1;i<=n;i++) y=y*x;
return y;
}
主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:m=a4+b4-(a+B) 3。实现这一计算的函数调用语句为【12】 。
(13) 下面rotate函数的功能是:将n行n列的矩阵A转置为A’,例如:
1 2 3 4 1 5 9 13
5 6 7 8 2 6 10 14
当 A= 9 10 11 12 则 A’= 3 7 11 15
13 14 15 16 4 8 12 16
请填空
#define N 4
void rotate(int a[][N])
{ int i,j,t;
for(i=0;i<N;I++)
for(j=0;【13】;j++)
{ t=a[j];
【14】 ;
a[j]=t;
}
}
(14) 以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。
void sstrcpy(char *s,char *t)
{ while(*s++=【15】);}
main( )
{ char str1[100],str2[]=”abcdefgh”;
sstrcpy(str1,str2);
printf(“%s\n”,str1);
}
(15) 下列程序的运行结果是:【16】
#include
char *ss(char *s)
{ return s+strlen(s)/2;}
main( )
{ char *p,*str=”abcdefgh”;
p=ss(str); printf(“%s\n”,p);
}
(16) 下面程序的运行结果是:【17】
int f( int a[], int n)
{ if(n>1) return a[0]+f(&a[1],n-1);
else return a[0];
}
main ( )
{ int aa[3]={1,2,3},s;
s=f(&aa[0],3); printf(“%d\n”,s);
}
(17) 以下程序中给指针p分配三个double型动态内存单元,请填空。
# include
main ( )
{ double *p;
p=(double *) malloc(【18】);
p[0]=1.5;p[1]=2.5;p[2]=3.5;
printf(“%f%f%f\n”,p[0],p[1],p[2]);
}
(18) 以下程序的运行结果是【19】
# include
typedef struct student{
char name[10];
long sno;
float score;
}STU;
main( )
{ STU
a={“zhangsan”,2001,95},b={“Shangxian”,2002,90},c={“Anhua”,2003,95},d,*p=&d;
d=a;
if(strcmp(a.name,b.name)>0) d=b;
if(strcmp(c.name,d.name)>0) d=c;
printf(“%ld%s\n”,d.sno,p->name);
}
(19) 以下sum函数的功能是计算下列级数之和。
S=1+x+x2/2!+x3/3!+........+xn/n!
请给函数中的各变量正确赋初值。
double sum( double x, int n )
{ int i; double a,b,s;
【20】
for( i=1;i<=n;i++)
{ a=a*x; b=b*i; s=s+a/b; }
return s;
}

TOP

参考答案

本帖隐藏的内容需要回复才可以浏览

TOP

haoa~~~~~~~~~~~

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

多谢!!!

TOP

谢谢辣.........

TOP

很不错

几乎就回家看看尽快离开及接口即可

TOP

hao!!! zhichi!!!

TOP

支持

大力支持........................

TOP

1# 大 中 小 发表于 2007-12-28 14:01  只看该作者 2005年4月全国计算机等级考试二级C笔试试卷含答案
一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)数据的存储结构是指______。
A)存储在外存中的数据 B)数据所占的存储空间量
C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示
(2)下列关于栈的描述中错误的是______。
A) 栈是先进后出的线性表
B) 栈只能顺序存储
C) 栈具有记忆作用
D) 对栈的插入与删除操作中,不需要改变栈底指针
(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是______。
A)冒泡排序为n/2 B)冒泡排序为n
C)快速排序为n D)快速排序为n(n-1)/2
(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。
A)log2n B)n/2 C)n D)n+1
(5)下列对于线性链表的描述中正确的是______。
A) 存储空间不一定是连续,且各元素的存储顺序是任意的
B) 存储空间不一定是连续,且前件元素一定存储在后件元素的前面
C) 存储空间必须连续,且前件元素一定存储在后件元素的前面
D) 存储空间必须连续,且各元素的存储顺序是任意的
(6)下列对于软件测试的描述中正确的是______。
A) 软件测试的目的是证明程序是否正确
B) 软件测试的目的是使程序运行结果正确
C) 软件测试的目的是尽可能多地发现程序中的错误
D) 软件测试的目的是使程序符合结构化原则
(7)为了使模块尽可能独立,要求______。
A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
(8)下列描述中正确的是______。
A)程序就是软件
B)软件开发不受计算机系统的限制
C)软件既是逻辑实体,又是物理实体
D)软件是程序、数据与相关文档的集合
(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指______。
A)数据与程序独立存放
B)不同的数据被存放在不同的文件中
C)不同的数据只能被对应的应用程序所使用
D)以上三种说法都不对
(10)用树形结构表示实体之间联系的模型是______。
A)关系模型 B)网状模型 C)层次模型 D)以上三个都是
(11)算法具有五个特性,以下选项中不属于算法特性的是______。
A)有穷性 B)简洁性 C)可行性 D)确定性
(12)以下选项中可作为C语言合法常量的是______。
A)-80. B) -080 C)-8e1.0 D)-80.0e
(13)以下叙述中正确的是______。
A)用C程序实现的算法必须要有输入和输出操作
B)用C程序实现的算法可以没有输出但必须要输入
C)用C程序实现的算法可以没有输入但必须要有输出
D)用C程序实现的算法可以既没有输入也没有输出
(14)以下不能定义为用户标识符的是______。
A)Main B)_0 C)_int D)sizeof
(15)以下选项中不能作为合法常量的是______。
A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0
(16)数字字符0的ASCII值为48,若有以下程序
main()
{ char a='1',b='2 ';
printf("%c,",b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是______。
A) 3,2 B)50,2 C)2,2 D)2,50
(17)有以下程序
main()
{ int m=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是______。
A)12353514 B)12353513 C)12343514 D)12343513
(18)有定义语句:int b;char c[10];,则正确的输入语句是______。
A) scanf("%d%s",&b,&c); B)scanf("%d%s",&b, c);
C) scanf("%d%s",b, c); D) scanf("%d%s",b,&c);
(19)有以下程序
main()
{ int m,n,p;
scanf("m=%dn=%dp=%d",&m,&n,&p);
printf("%d%d%d\n",m,n,p);
}
若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。
A)m=123n=456p=789 B) m=123 n=456 p=789
C) m=123,n=456,p=789 D)123 456 789
(20)有以下程序
main()
{ int a,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是______。
A)6,1 B)2,1 C)6,0 D)2,0
(21)有以下程序
main()
{
int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
}
程序运行后的输出结果是______。
A)1 2 3 B)2 3 4 C) 2 2 3 D)2 3 3
(22)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式aA)1 B)2 C)3 D)4
(23)有以下程序
main()
{
int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7) if(p%2) j+=p;
printf("%d\n",j);
}
程序运行后的输出结果是______。
A)42 B)45 C)56 D)60
(24)有以下程序
main()
{
char a[7]="a0\0a0\0"; int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d\n",i,j);
}
程序运行后的输出结果是______。
A)2 2 B)7 6 C)7 2 D)6 2
(25)以下能正确定义一维数组的选项是______。
A)int a[5]={0,1,2,3,4,5}; B)char a[]={0,1,2,3,4,5};
C)char a={'A','B','C'}; D)int a[5]="0123";
(26)有以下程序
int f1(int x,int y){return x>y?x:y;}
int f2(int x,int y){return x>y?y:x;}
main()
{
int a=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\n",e,f,g);
}
程序运行后的输出结果是______。
A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7
(27)已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是______。
A)数组a和b的长度相同 B)a数组长度小于b数组长度
C)a数组长度大于b数组长度 D)上述说法都不对
(28)有以下程序
void f(int *x,int *y)
{
int t;
t=*x;*x=*y;*y=t;
}
main()
{
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;q=&a[7];
while(p{f(p,q);p++;q--;}
for(i=0;i<8;i++)printf("%d,",a);
}
程序运行后的输出结果是______。
A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4,
C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,1,
(29)有以下程序
main()
{
int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p=i;
for(i=0;i<3;i++)printf("%d",a[1]);
}
程序运行后的输出结果是______。
A)012 B)123 C)234 D)345
(30)以下叙述中错误的是______。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D)可以通过赋初值的方式确定数组元素的个数
(31)有以下程序
#define N 20
fun(int a[],int n,int m)
{ int i,j;
for(i=m;i>=n;i--)a[i+1]=a;
}
main()
{
int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)printf("%d",a);
}
程序运行后的输出结果是______。
A)10234 B)12344 C)12334 D)12234
(32)有以下程序
main()
{
int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++) {ptr=a+i; scanf("%d",ptr); ptr++; }
for(i=0;i<3;i++)
{ for(j=0;j<2;j++) printf("%2d",a[j]);
printf("\n");
}
}
若运行时输入:1 2 3<回车>,则输出结果是______。
A)产生错误信息 B)1 0 C)1 2 D)1 0
2 0 3 0 2 0
0 0 0 0 3 0
(33)有以下程序
prt(int *m,int n)
{ int i;
for(i=0;i}
main()
{
int a[]={1,2,3,4,5},i;
prt(a,5);
for(i=0;i<5;i++)
printf("%d,",a);
}
程序运行后的输出结果是______。
A)1,2,3,4,5, B)2,3,4,5,6, C)3,4,5,6,7, D)2,3,4,5,1,
(34)有以下程序
main()
{ int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p}
程序运行后的输出结果是______。
A)1,2,3,4,5,6,7,8,9,0, B)2,3,4,5,6,7,8,9,10,1,
C)0,1,2,3,4,5,6,7,8,9, D)1,1,1,1,1,1,1,1,1,1,
(35)有以下程序
#define P 3
void F(int x){return(P*x*x);}
main()
{printf("%d\n",F(3+5));}
程序运行后的输出结果是______。
A)192 B)29 C)25 D)编译出错
(36)有以下程序
main()
{int c=35;printf("%d\n",c&c);}
程序运行后的输出结果是______。
A)0 B)70 C)35 D)1
(37)以下叙述中正确的是______。
A)预处理命令行必须位于源文件的开头
B)在源文件的一行上可以有多条预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间
(38)若有以下说明和定义
union dt
{int a;char b;double c;}data;
以下叙述中错误的是______。
A)data的每个成员起始地址都相同
B)变量data所占的内存字节数与成员c所占字节数相等
C)程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
D)data可以作为函数的实参
(39)以下语句或语句组中,能正确进行字符串赋值的是______。
A)char *sp;*sp="right!"; B)char s[10];s="right!";
C)char s[10];*s="right!"; D)char *sp="right!";
(40)设有如下说明
typedef struct ST
{long a;int b;char c[2];}NEW;
则下面叙述中正确的是______。
A)以上的说明形式非法 B)ST是一个结构体类型
C)NEW是一个结构体类型 D)NEW是一个结构体变量
(41)有以下程序
main()
{ int a=1,b;
for(b=1;b<=10;b++)
{ if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是______。
A)3 B) 4 C)5 D)6
(42)有以下程序
main()
{ char s[]="159",*p;
p=s;
printf("%c",*p++);printf("%c",*p++);
}
程序运行后的输出结果是______。
A)15 B)16 C)12 D)59
(43)有以下函数
fun(char *a,char *b)
{ while((*a!='\0')&&(*b!='\0')&&(*a==*b))
{ a++;b++; }
return(*a-*b);
}
该函数的功能是______。
A)计算a和b所指字符串的长度之差
B)将b所指字符串连接到a所指字符串中
C)将b所指字符串连接到a所指字符串后面
D)比较a和b所指字符串的大小
(44)有以下程序
main()
{ int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{ for(j=0;j<=i;j++) printf("%4c",' ');
for(j=_____;j<4;j++) printf("%4d",num[j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角
1 2 3 4
6 7 8
11 12
16
则在程序下划线处应填入的是______。
A)i-1 B)i C)i+1 D)4-i
(45)有以下程序
point(char *p){p+=3;}
main()
{ char b[4]={'a','b','c','d'},*p=b;
point(p);printf("%c\n",*p);
}
程序运行后的输出结果是______。
A)a B)b C)c D)d
(46)程序中若有如下说明和定义语句
char fun(char *);
main()
{
char *s="one",a[5]={0},(*f1)()=fun,ch;
......
}
以下选项中对函数fun的正确调用语句是______。
A)(*f1)(a); B)*f1(*s); C)fun(&a); D)ch=*f1(s);
(47)有以下结构体说明和变量定义,如图所示:
struct node
{int data; struct node *next;} *p,*q,*r;


data next data next data next

p q r
现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______。
A)P->next=q->next; B)p->next=p->next->next;
C)p->next=r; D)p=q->next;
(48)以下对结构体类型变量td的定义中,错误的是______。
A)typedef struct aa B)struct aa
{ int n; { int n;
float m; float m;
}AA; }td;
AA td; struct aa td;
C)struct D)struct
{ int n; { int n;
float m; float m;
}aa; }td;
struct aa td;
(49)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是______。
A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp)
(50)有以下程序
#include
void WriteStr(char *fn,char *str)
{ FILE *fp;
fp=fopen(fn,"w");fputs(str,fp);fclose(fp);
}
main()
{
WriteStr("t1.dat","start");
WriteStr("t1.dat","end");
}
程序运行后,文件t1.dat中的内容是______。
A)start B)end C)startend D)endrt
二、填空题(每空2分,共40分)
请将每空的正确答案写在【1】至【20】序号的横线上,答在试卷上不得分。
(1)某二叉树中度为2的结点有18个,则该二叉树中有 【1】 个叶子结点。
(2)在面向对象方法中,类的实例称为 【2】 。
(3)诊断和改正程序中错误的工作通常称为 【3】 。
(4)在关系数据库中,把数据表示成二维表,每一个二维表称为 【4】 。
(5)问题处理方案的正确而完整的描述称为 【5】 。
(6)以下程序运行时,若从键盘输入:10 20 30<回车>,输出的结果是 【6】 。 #include
main()
{ int i=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
(7)以下程序运行后的输出结果是 【7】 。
#define S(x) 4*x*x+1
main()
{ int i=6,j=8;
printf("%d\n",S(i+j));
}
(8)以下程序运行后的输出结果是 【8】 。
main()
{ int a=3,b=4,c=5,t=99;
if(b if(a printf("%d %d %d\n",a,b,c);
}
(9)以下程序运行后的输出结果是 【9】 。
main()
{ int a,b,c;
a=10; b=20; c=(a%b<1)||(a/b>1);
printf("%d %d %d\n",a,b,c);
}
(10)以下程序运行后的输出结果是 【10】 。
main()
{ char c1,c2;
for(c1='0',c2='9';c1 printf("\n");
}
(11)已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是 【11】 。
#include
main()
{ char a,b;
a=getchar();scanf("%d",&b);
a=a-'A'+'0';b=b*2;
printf("%c %c\n",a,b);
}
(12)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。
void fun(int,int,int(*)[4],int *);
main()
{ int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++) printf("%4d",b);
printf("\n");
}
void fun(int m,int n,int ar[][4],int *br)
{ int i,j,x;
for(i=0;i { x=ar[0];
for(j=0;j 【12】 =x;
}
}
(13)以下程序运行后的输出结果是 【13】 。
void swap(int x,int y)
{ int t;
t=x;x=y;y=t;printf("%d %d ",x,y);
}
main()
{ int a=3,b=4;
swap(a,b); printf("%d %d",a,b);
}
(14)以下程序运行后的输出结果是 【14】 。
#include
void fun(char *s,int p,int k)
{ int i;
for(i=p;i}
main()
{ char s[]="abcdefg";
fun(s,3,strlen(s)); puts(s);
}
(15)以下程序运行后的输出结果是 【15】 。
#include
main()
{ char ch[]="abc",x[3][4]; int i;
for(i=0;i<3;i++) strcpy(x,ch);
for(i=0;i<3;i++) printf("%s",&x);
printf("\n");
}
(16)以下程序运行后的输出结果是 【16】 。
fun(int a)
{ int b=0; static int c=3;
b++;c++;
return(a+b+c);
}
main()
{ int i,a=5;
for(i=0;i<3;i++) printf("%d%d",i,fun(a));
printf("\n");
}
(17)以下程序运行后的输出结果是 【17】 。
struct NODE
{ int k;
struct NODE *link;
};
main()
{ struct NODE m[5],*p=m,*q=m+4;
int i=0;
while(p!=q){
p->k=++i; p++;
q->k=i++; q--;
}
q->k=i;
for(i=0;i<5;i++) printf("%d",m.k);
printf("\n");
}
(18)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。
#include
char *huiwen(char *str)
{ char *p1,*p2; int i,t=0;
p1=str;p2= 【18】
for(i=0;i<=strlen(str)/2;i++)
if(*p1++!=*p2--){t=1;break;}
if( 【19】 ) return("yes!");
else return("no!");
}
main()
{ char str[50];
printf("Input:"); scanf("%s",str);
printf("%s\n", 【20】 );

查看详细资料
引用 使用道具 报告 回复 TOP


xingno
管理员



UID6 帖子2783 积分8199 威望7225  星诺币3330  阅读权限200 注册时间2007-3-13 最后登录2008-3-4 个人空间 发短消息 加为好友 当前离线  2# 大 中 小 发表于 2007-12-28 14:02  只看该作者 2005年4月笔试试卷参考答案
以下内容需要回复才能看到
一、选择题
1-5 DBDCA
6-10 CBDDC
11-15 BACDB
16-20 CABAB
21-25 DABCB
26-30 ACDDC
31-35 CBBAD
36-40 CDCDC
41-45 BADBA
46-50 ADCDB
二、填空题
(1) 【1】19
(2) 【2】 对象
(3) 【3】程序调试
(4) 【4】关系
(5) 【5】算法
(6) 【6】 10 30 0
(7) 【7】 81
(8) 【8】 4599
(9) 【9】 10 20 0
(10) 【10】 0918273645
(11) 【11】 1B
(12) 【12】br
(13) 【13】 4 3 3 4
(14) 【14】 abcfg
(15) 【15】abcbcc
(16) 【16】 0 10 1 11 2 12
(17) 【17】 13431
(18) 【18】str+strlen(str)-1【19】t==0或!t【20】huiwen(str)

TOP

发新话题