江苏省计算机二级C语言历年真题及答案Word格式文档下载.docx
《江苏省计算机二级C语言历年真题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《江苏省计算机二级C语言历年真题及答案Word格式文档下载.docx(114页珍藏版)》请在冰豆网上搜索。
12•在下列有关ADSL技术及利用该技术接入因特网的叙述中,错误的是12。
A.从理论上看,其上传速度与下载速度相同B.一条电话线上可同时接听/拨打电话和进行数据传输
C.利用ADSL技术进行数据传输时,有效传输距离可达几公里
D.目前利用ADSL技术上网的计算机一般需要使用以太网网卡
13.人们往往会用"
我用的是10M宽带上网"
来说明白己计算机连网的性能,这里的"
10M"
指的是数据通信中的13指标。
A.最高数据传输速率B.平均数据传输速率
C.每分钟数据流量D.每分钟IP数据包的数
14•计算机局域网按拓扑结构进行分类,可分为环型、星型和14型等。
A.电路交换B.以太C.总线D.对等
15.网络信息安全主要涉及数据的完整性、可用性、机密性等问题。
保证数据的完整性就是15。
A.保证传送的数据信息不被第三方监视和窃取B.保证发送方的真实身份
C.保证传送的数据信息不被篡改D.保证发送方不能抵赖曾经发送过某数据信息
16.某计算机系统中,西文使用标准ASCII码、汉字采用GB2312编码。
设有一段纯文本,其机内码为CBF5DOB45043CAC7D6B8,则在这段文本中含有:
16。
A.2个汉字和1个西文字符B.4个汉字和2个西文字符
C.8个汉字和2个西文字符D.4个汉字和1个西文字符
17.以下关于汉字编码标准的叙述中,错误的是17。
A.GB2312标准中所有汉字的机内码均用双字节表示
B.我国台湾地区使用的汉字编码标准BIG5收录的是繁体汉字
C.GB18030汉字编码标准收录的汉字在GB2312标准中一定能找到
D.GB18030汉字编码标准既能与UCS(Unicode)接轨,又能保护已有中文信息资源
18.若波形声音未进行压缩时的码率为64kb/s,已知取样频率为8kHz,量化位数为8,那么它的声道数是
A.1B.2C.4D.8
19.从信息处理的深度来区分信息系统,可分为业务处理系统、信息检索系统和信息分析系统等。
在下列几种信息系统中,不属于业务处理系统的是19。
A.DSSB.CAIC.CAMD.OA
20.在下列有关信息系统开发、管理及其数据库设计的叙述中,错误的是20。
A.常用的信息系统开发方法可分为结构化生命周期方法、原型法、面向对象方法和CASE方法等
B.在系统分析中常常使用结构化分析方法,并用数据流程图和数据字典来表达数据和处理过程的关系
C.系统设计分为概念结构设计、逻辑结构设计和物理结构设计,通常用E-R模型作为描述逻辑结构的工具
D.从信息系统开发过程来看,程序编码、编译、连接、测试等属于系统实施阶段的工作
第二部分C程序设计
21.以下定义和声明中,语法均有错误的是____(21)_________
①intj(intx){}②intf(intf){}③int2x=1;
④struetfor{intx;
};
A.②③B.③④C.①④D.①②③④
22.设有定义和声明如下:
#defined2
intx=5;
floatY=3.83;
charc='
d'
;
以下表达式中有语法错误的是_(22)______
A.x++B.y++C.c++D.d++
23.以下选项中,不能表示函数功能的表达式是___(23)______。
A.s=(X>
0)?
1:
(X<
-1:
0B.s=X<
0?
(X>
0)
C.s=X<
=0?
(X==0?
0:
1)D.s=x>
x==0?
-1
24.以下语句中有语法错误的是____(24)______。
A.printf("
%d"
0e);
B.printf("
%f"
0e2);
C.printf("
Ox2);
D.printf("
%s"
"
0x2"
);
25.以下函数定义中正确的是___(25)_________。
A.doublefun(doublex,doubley){}B.doublefun(doublex;
doubleY){}
C.doublefun(doublex,doubleY);
{}D.doublefun(doubleX,Y){}
26.若需要通过调用f函数得到一个数的平方值,以下f函数定义中不能实现该功能的是_____(26)______。
A.voidf(double*a){*a=(*a)*(*a);
}B.voidf(doublea,double*b){*b=a*a;
}
C.voidf(doublea,doubleb){b=a*a;
}D.doublef(doublea){returna*a;
27.设有声明"
intP[10]={1,2},i=0;
"
以下语句中与"
P[i]=P[i+1],i++;
等价的是____(27)_______。
A.P[i]=P[i++];
B.P[++i]=P[i];
C.P[++i]=P[i+1];
D.i++,P[i-1]=P[i];
28.已知有声明"
chara[]="
Itismine"
*p="
下列叙述中错误的是28。
A.strcpy(a,"
yes"
)和strcpy(p,"
)都是正确的B.a="
和p="
都是正确的
C.*a等于*pD.sizeof(a)不等于sizeof(p)
29.已知有声明"
inta[3][3]={0},*p1=a[1],(*p2)[3]=a;
以下表达式中与"
a[1][1]=1"
不等价的表达式是29。
A.*(p1+1)=1B.p1[1][1]=1C.*(*(p2+1)+1)=1D.p2[1][1]=1
30.设有结构定义及变量声明如下:
structproduct
{charcode[5];
floatprice;
}y[4]={"
100"
100}"
以下表达式中错误的是____(30)_____。
A.(*y).code[0]='
2'
B.y[0].code[0]='
C.y->
price=10;
D.(*y)->
二、填空题(将答案填写在答题纸的相应答题号内,每个答案只占一行,共30分)
●基本概念
1.在一个C语言源程序中,必不可少的是
(1)。
2.若有声明"
intx;
且sizeof(x)的值为2,则当x值为
(2)时"
x+1>
x"
为假。
3.若有声明"
floaty=3.14619;
则计算表达式"
x=y*100+0.5,Y=x/100.0"
后y
的值是(3)。
4.执行以下程序段中的语句"
k=M*M+1"
后k的值是(4)
#defineN2
#defineMN+1
k=M*M+1:
●阅读程序
5.以下程序运行时输出结果是(5)
#include<
stdio.h>
voidmain()
{doublex[3]={1.1,2.2,3.3},Y;
FILE*fp=fopen("
d:
\\a.out"
wb+"
fwrite(x,sizeof(double),3,fp)"
fseek(fp,2L*sizeof(double),SEEK_SET);
fread(&
y,sizeof(double),1,fp)"
printf("
%.1f"
y);
fclose(fp)"
}
6.以下程序运行时输出结果是(6)。
{intk=5,n=0;
while(k>
{switch(k)
{case1:
case3:
n+=1;
k--;
break"
default:
n=0;
case2:
case4:
n+=2;
break;
%3d"
n);
7.以下程序运行时输出结果是(7)。
voidchange(intx,intY,int*z)
{intt;
t=x;
x=y;
y=*z;
*z=t;
{intx=18,y=27,z=63;
change(x,y,&
z);
x=%d,y=%d,z=%d\n"
x,y,z);
8.以下程序运行时输出结果是(8)。
intf(intx,inty)
{retumx+y;
}
{doublea=5.5,b=2.5;
f(a,b));
9.以下程序运行时输出结果中第-行是(9),第三行是(10)。
defineN5
{staticchara[N][N];
inti,j,t,start=0,end=N-1;
charstr[]="
123"
ch;
for(t=0;
t<
=N/2;
t++)
{ch=str[t];
for(i=j-start;
i<
end;
i++)a[i][j]=ch;
for(j=start;
j<
j++)a[i][j]=ch;
for(i=end;
i>
start;
i--)a[i][j]=ch;
for(j=end;
j>
j--)a[i][j]=ch;
if(start==end)a[start][end]=ch;
start++,end--;
for(i=O;
N;
i++)
{for(j=0;
j++)
%c"
a[i][j]);
\n"
10.以下程序运行时输出结果中第一行是(11),第二行是(12)。
voidfun(intx,intP[],int*n)
{inti,j=O;
for(i=1;
=x/2;
i++)
if(x%i==0)p[j++]=i;
*n=j:
{intx,a[10],n,i;
fun(27,a,&
n);
for(i=0;
n;
%5d"
a[i]);
\n%5d"
11.以下程序运行时输出结果是(11)。
ctype.h>
intcount(chars[])
{inti=0;
if(s[i]=='
\0'
)return0;
while(isalpha(s[i]))i++;
while(!
isalpha(s[i])&
&
s[i]!
='
\O'
)i++;
return1+count(&
s[i]);
{charline[]="
oneworld,onedream."
count(line));
}.
12.以下程序运行时输出结果中第一行是(14),第二行是(15)
intfun(char*a,char*b)
{intm=0,n=0:
while(*(a+m)!
)m++;
while(b[n])
{*(a+m)=b[n];
m++;
n++;
*(a+m)='
returnm;
{chars1[20]="
s2[5]="
no"
%d\n"
fun(s1,s2));
puts(s1);
13.以下程序运行时输出结果中第-行是(16),第二行是(17),第三行是(18)
typedefstruct{intx;
inty;
}S;
voidfun(Spp[],intn)
{inti,j,k;
St;
n-1;
{k=i;
for(j=i+1;
if((pp[j].x<
pp[k].x)||(pp[j].x==pp[k].x&
pp[j].y<
pp[k].y))
k=j;
if(k!
=i)
{t=pp[i];
pp[i]=pp[k];
pp[k]=t;
{Sa[5]={{3,2},{3,1},{1,2},{2,4},{2,3}};
inti,n=5;
fun(a,n);
%d,%d\n"
a[i].x,a[i].y);
●完善程序
14?
以下程序求一组整数的最大公约数。
试完善程序以达到要求的功能。
intgcd(inta,intb)i
{intr;
while(_____(19)_______)
{r=a%b;
a=b;
(_____20_____);
returna;
{intx,i,a[6]={12,56,48,32,16,24};
x=(___21_____);
6;
x=gcd(___(22)_____,a[i]);
(%d,"
a[O])
5;
%d,"
%d)=;
d\n"
a[5],x);
15.以下程序完成两个长正整数的加法运算并输出计算结果。
函数add模拟手工加法运算的过程,将a和b指向的数组中存储的两个以字符串形式表示的n位正整数相加,并将运算结果以字符串形式保存到c指向的数组中。
main函数中pl和p2数组分别存放被加数字符串和加数字符串,p3数组存放运算结果字符串。
若p1中的字符串为"
1000000001"
、p2中的字符串为"
9000000009"
调用add函数后p3得到的是以字符串表示的这两个整数相加的结果"
10000000010"
。
#include"
stdio.h"
string.h"
voidadd(chara[],charb[],charc[],__(23)____)
{inti,k;
c[n]='
k=0;
for(i=n-1;
=0;
i--)
{c[i]=(a[i]-'
O'
)+(b[i]-'
0'
)+k;
k=______(24)______;
c[i]=c[i]%10+'
if(k)
{for(i=n+1;
O;
c[i]=___(25)____;
c[i]=k+'
{charp1[80]="
pz[80]="
p3[80];
inti,x=strlen(p1),y=strlen(p2);
if(x<
y)
{for(i=x;
{p1[i+y-x]=p1[i];
p1[i]='
_____(26)______;
if(x>
for(i=y;
{p2[i+x-y]=p2[i];
p2[i]='
add(p1,p2,p3,x);
puts(p3);
16.以下程序创建-个链表并实现数据统计功能。
函数WORD*create(chara[][20],intn)创建-个包含n个结点的单向链表,结点数据来自a指向的数组中存储的n个单词(字符串)。
函数voidcount(WORD*h)统计h指向的单向链表中不同单词各自出现的次数,将统计结果保存到局部数组c中并输出。
程序运行时输出结果为"
red:
1green:
2blue:
3"
stdlib.h"
typedefstructw
{charword[20];
structw*next:
}WORD;
WORD*create(chara[][20],intn)
{WORD*p1,*p2,*h=0;
inti;
{p1=(WORD*)malloc(sizeof(WORD));
strcpy(___(27)___,a[i]);
if(h==O)
h=p2=p1:
else
{p2->
next=p1;
p2=pl;
p2->
next=_____(28)____;
returnh;
voidcount(WORD*h)
{struct
intnum;
}c[6]={0};
intm=0,i;
while(h)
{if(m==O)
{strcpy(c[0].word,h->
word);
c[0].num=1;
{for(i=O;
m;
if(strcmp(c[i].word,h->
word)==0
{______(29)_____;
break;
if(i>
=m)
{strcpy(c[m].word,h->
c[m++].num=1;
____(30)_____;
%s:
c[i].word,c[i].num);
{charwords[6][20]={"
red"
green"
blue"
WORD*head=0:
head=create(words,6);
count(head);
答案
1.D2.B3.B4.D5.B6.D7.A8.C9.D10.A11.B12.A13.A14.C15.C16.B17.C18.A19.A20.C
21.B22.D23.C24.A25.A26.C27.D28.B29.B30.D
二:
填空
(1)main函数定义
(2)32767(3)3.15(4)6(5)3.3(6)2356(7)x=18,y=27,z=18(8)7
(9)11111(10)12321(11)139(12)3(13)4(14)5(15)yesno(16)1,2(17)2,3(18)2,4(19)b或b!
=0
(20)b=r(21)a[0](22)x(23)intn(24)c[i]/10(25)c[i-1](26)x=y(27)p1->
word
(28)0或NULL(29)c[i].min++(30)h=h->
next
2009秋季C