2008(秋)江苏省计算机二级C语言试题与答案(笔试)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江苏省二级C 语言程序设计2008 年(秋)
第一部分计算机基础知识
(1)信息技术指的是用来扩展人们信息器官功能、协助人们更有效地进行信息处理的一类技术。
在下列有关信息技术的叙述中,错误的是__________。
A)现代信息技术的主要特征之一是以数字技术和电子技术为基础
B)遥感遥测技术、自动控制技术等均属于现代信息技术
C)微电子技术是信息技术领域的关键技术,它以集成电路为核心
D)利用磁带、光盘、电话、传真等进行信息传递均属于现代通信
(2)二进制数10111000 和11001010 进行逻辑“与”运算,结果再与10100110 进行逻辑“或”运算,最终结果的十六进制形式为__________。
A)A2 B)DE C)AE D)95
(3)计算机的性能在很大程度上是由CPU 决定的。
在下列有关CPU 结构和原理的一些叙述中,错误的是__________。
A)目前PC 机所使用的CPU 均是Intel 公司的产品
B)从逻辑组成上看,CPU 主要由寄存器组、运算器和控制器等部分组成
C)目前CPU 中的运算部件ALU 有多个,每个ALU 均可独立完成运算
D)不同CPU 能执行的指令有所不同,但同一系列CPU 产品通常是“向下兼容的”
(4)在下列有关目前PC 机主板及其组件的叙述中,正确的是__________。
A)主板的物理尺寸没有标准,通常不同品牌的主板采用不同的尺寸
B)主板上的BIOS 芯片是一种RAM 芯片,因而其存储的信息是可以随时刷新的
C)主板上的存储器控制和I/O 控制功能大多集成在芯片组内
D)主板上的CMOS 芯片是一种非易失性存储器,其存储的信息永远不会丢失
(5)在下列有关PC 机硬盘存储器的叙述中,错误的是__________。
A)硬盘上的数据块要用柱面号、扇区号和磁头号这三个参数来定位
B)目前硬盘一般都含有DRAM 芯片构成的高速缓存(Cache)
C)目前硬盘与主机的接口大多为串行ATA 接口
D)硬盘容量的增加主要是靠碟片数增加,目前硬盘一般均有数十个碟片组成
(6)在下列有关PC 机I/O 总线和接口的叙述中,错误的是__________。
A)可用于连接键盘或鼠标器的PS/2 接口是一种并行数据传输接口
B)USB 2.0 接口的数据传输速率可达每秒几十MB
C)通过USB 集线器,USB 接口连接设备数最多可达100 多个
D)目前数字视频设备常用IEEE-1394 接口与主机连接
(7)在下列有关PC 机软件的叙述中,错误的是__________。
A)任何软件都具有版权,因此均不能随意复制和使用
B)软件由程序及相关的数据和文档组成
C)数据库管理系统属于系统软件
D)Outlook Express 属于应用软件
(8)操作系统产品有许多种。
在下列软件中,不属于操作系统产品类型的是__________。
A)UNIX B)Linux
C)Access 2000 D)Windows Server 2003
(9)在下列有关Windows 操作系统的叙述中,错误的是__________。
A)Windows 操作系统采用图形用户界面
B)Windows XP 操作系统分为家庭版、专业版、平板PC 版等多种版本
C)在Windows XP 环境下,用户可以通过“任务管理器”查看CPU 的使用率
D)在Windows XP 中,作为虚拟内存使用的交换文件的文件名是Win386.swp
(10)在下列有关算法和数据结构的叙述中,错误的是__________。
A)算法描述解决问题的步骤,数据结构描述求解问题的对象
B)算法应具有确定性、有穷性和能行性
C)数据结构研究的内容包括数据的逻辑结构和存储结构,与数据的运算无关
D)精心选择和设计的数据结构可以提高算法的时间效率和空间效率
(11)常用局域网有以太网、FDDI 网等类型。
下面的相关叙述中,错误的是__________。
A)总线式以太网采用带冲突检测的载波侦听多路访问(CSMA/CD)方法进行通信
B)以太网交换机比集线器具有更高的性能,它能提高整个网络的带宽
C)FDDI 网通常采用光纤双环结构,具有高可靠性和数据传输的保密性
D)FDDI 网的MAC 地址和帧格式与以太网相同,因此这两种局域网可以直接互连
(12)路由器用于连接多个异构的计算机网络。
下列是一些有关网络中路由器与IP 地址的叙述,其中正确的是__________。
A)路由器不能有IP 地址
C)路由器只需要分配一个IP 地址B)路由器可不分配IP 地址
D)路由器应分配两个或两个以上IP 地址
(13)下列关于利用有线电视网和电缆调制解调技术(Cable MODEM)接入互联网的优点的叙述中,错误的是__________。
A)每个用户独享带宽且速率稳定C)不占用电话线B)无需拨号D)可永久连接
(14)Web 浏览器和Web 服务器都遵循__________协议,该协议定义了浏览器和服务器的网页请求格式及应答格式。
A)TCP B)HTTP C)UDP D)FTP
(15)下列有关网络信息安全的叙述中,正确的是__________。
A)只要加密技术的强度足够高,就能保证数据不被非法窃取
B)访问控制的任务是对每个文件或信息资源规定各个(类)用户对它的操作权限
C)硬件加密的效果一定比软件加密好
D)根据人的生理特征进行身份鉴别的方式在单机环境下无效
(16)若内存中相邻2 个字节的内容为十六进制7451,则它们不可能是__________。
A)2 个西文字母的ASCII 码C)1 个16 位整数B)1 个汉字的机内码D)一条指令的组成部分
(17)以下关于汉字编码标准的叙述中,错误的是__________。
A)Unicode 和GB18030 中的汉字编码是相同的
B)GB18030 汉字编码标准兼容GBK 标准和GB 2312 标准
C)我国台湾地区使用的汉字编码标准主要是BIG 5
D)GB18030 编码标准收录的汉字数目超过2 万个
(18)不同的图像文件格式往往具有不同的特性。
有一种格式具有图像颜色数目不多、数据量不大、能实现累进显示、支持透明背景和动画效果、适合在网页上使用等特性,这种图像文件格式是
__________。
A)TIF B)GIF C)BMP D)JPEG
(19)制造业信息系统是一个复杂的信息系统,它可分为辅助技术系统和管理业务系统两大类。
在下列缩写中,不属于计算机辅助技术系统的是__________。
A)CAD B)CAPP C)CEO D)CAM
(20)在信息系统的结构化生命周期开发方法中,具体的程序编写属于__________阶段的工作。
2008 年(秋)笔试试卷第2 页(共7 页)
A )系统规划
B )系统分析
C )系统设计
D )系统实施
一、选择题
第二部分 C 语言程序设计
(21)以下叙述中正确的是__________。
A )在编译时可以发现注释中的拼写错误
B )
C 语言程序的每一行只能写一条语句 C )main(){}必须位于程序的开始
D )C 语言程序可以由一个或多个函数组成 (22)以下选项中不能用作变量名的是__________。
A )_float
B )switch
C )sum
D )_123
(23)已知 sizeof(int)的值为 2,为将 10!的值存储到变量 f 中(10!=3628800),变量 f 的类型应声明为
__________。
A )long int B )int C )short int D )unsigned int (24)若有声明“double x=3,c ,* a=&x,* b=&c;”,则下列语句中错误的是__________。
A ))a=&c,b=a; C )&a=&b; D )*b= * a; (25)数学式a
2b 在
C 程序中正确的表示形式为__________。
A )sqrt(a)/2 * b
B )sqrt(a)/2/b
C )sqrt(a)/2b
D )sqrt a/(2 * b)
(26)已知有程序段“char str[][10]={"Aoyun","Beijing"},* p=&str[0][0];printf("%s\n",p+10);",则执行 printf 语
句后输出为__________。
A )Beijing B )Aoyun (27)以下声明中错误的是__________。
C )ing
D )ng A )int a[2] B )int a[]={0,1} C )int a[3]=0 D )int a[3][4]={0}
(28)已知有结构定义和变量声明如下:
struct student
{ char name[20];int score; struct student * h;}stu,* p;int * q; 以下选项中错误的是__________。
A )p=&stu ; C )scanf("%s%d",&stu); B )q=&stu.score ; D )stu.h=p ;
(29)已有声明“int a=3,b=3,c=2;”,以下选项中值为 0 的表达式是__________。
A )!a&&! b&&c
B )!a||!b||c
C )a==b&&b>=c
D )a>=b&&b>c
(30)若有声明“char ss[8]="Red";”,则 sizeof(ss)的值是
__________。
A )8
B )4
C )3
二、填空题
● 基本概念题(共 5 分)
D )1 (1)已知有函数定义“int fun(){return(3,4);}”,则调用 fun 后的函数返回值是 【1】 。
(2)设有声明“int a=3,b=4;float x=4.5,y=3.5;”,则表达式“(float)(a+b)/2+(int)x%(int)y ”的值是 【2】 。
(3)若已有定义“enum TP{A ,B ,C};”,则执行语句“printf("%d\n",A+1);”后输出结果是
【3】 。
(4)若需要打开 D 盘上 user 子目录下已经存在的名为 abc.txt 的文本文件,先读出文件中数据,后追加写
入新数据,则正确的函数调用语句是:“fp=fopen("D:\\user\\abc.txt", 【4】 );”。
● 阅读程序题(共 13 分)
(5)以下程序运行时输出结果的最后一行是 【5】 。
#include<stdio.h>
void main()
2008 年(秋)笔试试卷第3 页(共7 页)
{ int a=1,b=1,i;
for(i=1;i<=2;i++)
{ a=a+b; printf("%d/%d,",b,a); b=a+b; printf("%d/%d\n",a,b);} printf("\n");}
(6)以下程序运行时输出结果为【6】。
#include<stdio.h>
void main()
{ int i,sum=0;
for(i=0;i<5;i++)
{ switch(i)
{ case 0:
case 1:sum++;
case 3:sum++;
case 4:sum--;break;}}
printf("%d\n",sum);}
(7)以下程序运行时输出结果是【7】。
#include<stdio.h>
void func(int b)
{ int a;a=b;b=10; }
void main()
{ int a=10,b=20; func(b); printf("%d,%d",a,b);}
(8)以下程序运行时输出结果的第一行是【8】,第二行是【9】。
#include<stdio.h>
int f1()
{ static int i=0,f=1; return f*=++I;}
int f2()
{ int i=0,f=1; return f*=++i:}
void main()
{ printf("%d\n",f1()+f1()); printf("%d\n",f2()+f2());}
(9)以下程序运行时输出结果是【10】。
#include<stdio.h>
#include<string.h>
void sf(char * s1,char * s2)
{ if( * s1= * s2) sf(s1+1,s2+1);}
void main()
{ char a[20]="ABC",b[20]="xyz";
sf(a+strlen(a),b); puts(a);}
(10)以下程序运行时输出结果的第一行是【13】,第三行是【12】。
#include<stdio.h>
void main()
{ int i,j,a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i<j) a[i][j]=1;
else a[i][j]=i-j+1;
for(i=0;i<3;i++)
{for(j=0;j<3;j++) pfintf("%4d",a[i][j]);
2008 年(秋)笔试试卷第4 页(共7 页)
pfintf("\n");}}
(11)以下程序运行时输出结果是【13】。
#include<stdio.h>
void sort(int a[],int n)
{ int i,j,p;int t;
for(i=1;i<n-1;i+=2)
{ p=i;
for(j=i+2;j<n;j+=2)
if(a[j]>a[p]) p=j;
if(p!=i) { t=a[i];a[i]=a[p];a[p]=t;}}}
void main()
{ int s[]={8,1,4,3},n=4,k;
sort(s,n);
for(k=0;k<n;k++) printf("%4d",s[k]);
pfintf("\n");}
(12)以下程序运行时输出结果的第一行是【14】,第二行是【15】。
#include<stdio.h>
struct s
{ int x,* y; } * p;
int d[5]={10,20,30,40,50};
struct s a E5]={100,&d[0],200,&d[1],300,&d[2],400,&d[3],500,&d[4]};
void main()
{ p=a; printf("%5d",p->x++); pfintf("%5d\n",p->x);
pfintf("%5d",* p->y); printf("%5d\n",* ++p->y);}
(13)以下程序运行时若输入8,则输出结果中第一行是【16】,第二行是【17】,第三行是【18】。
#include<stdio.h>
void main()
{ int k,i,m,n,num[20];
scanf("%d",&n);
for(i=0;i<n;i++) num[i]=i+1;
i=k=m=0;
while(m<n-1)
{ if(num[i]!=0) k++;
if(k==3)
{ printf("%4d",num[i]);
num[i]=0;
k=0; m++;
if(m%3==0) printf("\n");}
i++;
if(i==n) i=0;}
i=0;
while(num[i]==0) i++;
printf("%4d",num[i]);}
●完善程序题(共12 分)
(14)以下程序的功能是:求 a 数组中前 4 个元素之和及后 6 个元素之和。
试完善程序以达到要求的功能。
int fsum(int * array,int n) { int i,s;
s=0:
for(i=0; 【19】;i++) s+=array[i];
return(s);}
void main(void)
{ int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int sumh,sumt;
sumh=fsum(a,4); sumt= 【20】; printf("%d%d\n",sumh,sumt);}
(15)以下程序对二维数组 a 中存储的N×N 矩阵做如下操作:先将每一行中值最大的元素与该行位于主对角线处的元素交换值,然后对主对角线上的所有元素排序使其自左上角到右下角升序排列,最后
输出排序后主对角线上各元素的值。
试完善程序以达到要求的功能。
#include<stdio.h>
#define N 5
void fun(int x[][N],int n)
{ int i,j,t,arr,col;
for(i=0;i<n;i++)
{ arr=x[i][0];col=0;
for(j=0;j<n;j++) if(x[i][j]>=arr) { arr=x[i][j]; 【21】;}
t=x[i][i]; 【22】; x[i][col]=t;}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++) if( 【23】) {t=x[i][i]; x[i][i]=x[j][j];x [j][j]=t; }} void main()
{ int a[N][N]={{10,25,24,13,23},{11,22,12,21,14},{20,15,19,16,18},
{17,9,4,5,3},{2,1,6,7,8}},i;
fun(a,N);
for(i=0;i<N;i++) printf("%3d",a[i][i]);
printf("\n");}
(16)以下程序中函数replace 的功能是:将字符串s 中所有属于字符串s1 中的字符都用s2 中的对应位置的字符替换。
假如s 为“ABCBA”,s1 为“AC”,s2 为“ac”,则调用replace 函数后,字符串s 的
内容将变换为“aBcBa”。
试完善程序以达到要求的功能。
#include<stdio.h>
#define MAX 20
void replace(char * S,char * s1,char * s2)
{ char * p;
for(;*s;s++)
{ p=s1;
while(*p&& 【24】) p++;
if(*p)*s= 【25】;}}
void main()
{ char s[MAX]="ABCBA",s1[MAX]="AC",s2[MAX]="ac";
【26】; printf("The string of s is:"); printf("%s\n",s);}
(17)以下程序的功能是:函数struct node * insert(struct node * head,struct node * p)将p 指向的结点作为首结点插入head 指向的链表中。
main 函数接收从键盘输入的一行字符,每接收一个字符后,申请一个新结点保存该字符,并调用insert 函数将新结点插入链表中。
最后从表头开始依次输出该链表
各结点成员c 的值。
试完善程序以达到要求的功能。
#include<stdio.h>
#include<stdlib.h>
struct node
.
'. { char c; struct node * next;};
void main()
{ struct node * insert(struct node * head,struct node * p);
char ch; struct node * head,* p;
head=NULL;
while((ch=getchar())!='\n')
{ p=(struct node * )malloc(sizeof(struct node));
【27】=ch; p->next=NULL; 【28】; }
P=head;
while(p!=NULL) { printf("%c",p->c); 【29】;}} struct node * insert(struct node * head,struct node * p)
{ if(head==NULL) head=p;
else { 【30】; head=p;}
return head;}。