江苏省高等学校非计算机专业学生
计算机基础知识和应用能力等级考试
二级C语言程序设计2006年(春)笔试试卷
(考试时间120分钟,满分60分)
第一部分计算机基础知识
(1)信息技术指的是用来扩展人的信息器官功能、协助人们进行信息处理的一类技术。在下列基本信息技术中,用于扩展人的效应器官功能的是__________。
A)感测与识别技术B)通信与存储技术
C)计算与处理技术D)控制与显示技术
(2)微电子技术是以集成电路为核心的电子技术。在下列关于集成电路(IC)的叙述中,正确的是__________。
A)集成电路的发展导致了晶体管的发明
B)现代计算机的CPU均是超大规模集成电路
C)小规模集成电路通常以功能部件、子系统为集成对象
D)所有的集成电路均为数字集成电路
(3)通信技术的发展促进了信息的传播。在下列有关通信与通信技术的叙述中,错误的是__________。
A)通信系统必有“三要素”,即信源、信号与信宿
B)现代通信指的是使用电(光)波传递信息的技术
C)数据通信指的是计算机等数字设备之间的通信
D)调制技术主要分为三种,即调幅、调频和调相
(4)在计算机中,数值为负的整数一般不采用“原码”表示,而是采用“补码”方式表示。若某带符号整数的8位补码表示为1000 0001,则该整数为__________。
A)129 B)-1 C)-127 D)127
(5)在下列有关CPU(中央处理器)与Pentium微处理器的叙述中,错误的是__________。
A)CPU除包含运算器和控制器以外,一般还包含若干个寄存器
B)CPU所能执行的全部指令的集合,称为该CPU的指令系统
C)Pentium系列处理器在其发展过程中,其指令系统越来越丰富
D)Pentium处理器与PowerPC处理器虽然产自不同的厂商,但其指令系统相互兼容
(6)根据存储器芯片的功能及物理特性,目前用作优盘存储器芯片的是__________。
A)SRAM B)SDRAM
C)EPROM D)Flash ROM
(7)I/O接口指的是计算机中用于连接I/O设备的各种插头/插座,以及相应的通信规程及电气特性。在下列有关I/O总线与I/O接口的叙述中,错误的是__________。
A)PC机系统总线一般分为处理器总线和主板总线
B)PCI总线属于I/O总线
C)PC机的I/O接口可分为独占式和总线式
D)USB是以并行方式工作的I/O接口
(8)输入设备用于向计算机输入命令和数据,它们是计算机系统必不可少的重要组成部分。在下列有关常见输入设备的叙述中,错误的是__________。
A)目前数码相机的成像芯片仅有一种,即CCD成像芯片
B)扫描仪的主要性能指标包括分辨率、色彩位数和扫描幅面等
C)目前台式PC机普遍采用的键盘可直接产生一百多个按键编码
D)鼠标器一般通过PS/2接口或USB接口与PC机相连
(9)显示器的作用是将数字信息转换为光信息,最终将文字和图形/图像显示出来。在下列有关PC机显示器的叙述中,错误的是__________。
A)目前出厂的台式PC机大多数使用AGP接口连接显示卡
B)彩色显示器上的每个像素由RGB三种基色组成
C)与CRT显示器相比,LCD的工作电压高、功耗小
D)从显示器的分辨率来看,水平分辨率与垂直分辨率之比一般为4:3
(10)计算机软件(简称软件)指的是能指挥计算机完成特定任务的、以电子格式存储的程序、数据和相关的文档。在下列有关软件的叙述中,错误的是__________。
A)软件的版权所有者不一定是软件作者
B)共享软件指的是一种无版权的软件
C)用户购买一个软件后,仅获得了该软件的使用权,并没有获得其版权
D)软件许可证是一种法律合同,它确定了用户对软件的使用方式
(11)在下列有关Windows操作系统(这里指Windows 95及其以后的版本)的多任务处理功能的叙述中,正确的是__________。
A)在多任务处理过程中,前台任务与后台任务都能得到CPU的响应(处理)
B)由于CPU具有并行执行指令的功能,所以操作系统才能同时进行多个任务的处理
C)如果用户只启动一个应用程序,那么该程序就可以自始至终地独占CPU
D)Windows操作系统采用协作方式支持多个任务的处理
(12)文件管理是操作系统的基本功能之一。在Windows操作系统环境下,下列有关文件管理功能的叙述中,错误的是__________。
A)计算机中的所有程序、数据、文档都组织成文件存放在外存储器中
B)磁盘上的文件分配表(FAT)有两个,且内容相同
C)任何磁盘上的文件根目录表(FDT)仅有一个
D)文件管理以扇区为单位分配磁盘上的存储空间
(13)随着Internet的飞速发展,其提供的服务越来越多。在下列有关Internet服务及相关协议的叙述中,错误的是__________。
A)电子邮件是Internet最早的服务之一,主要使用SMTP/POP3协议
B)WWW是目前Internet上使用最广泛的一种服务,常使用的协议是HTTP
C)文件传输协议(FTP)主要用于在Internet上浏览网页时控制网页文件的传输
D)远程登录也是Internet提供的服务之一,它采用的协议称为Telnet
(14)在下列有关程序设计语言及其处理程序的叙述中,错误的是__________。
A)程序设计语言可以分为机器语言、汇编语言和高级语言
B)机器语言与计算机硬件关系紧密,用它编写的程序可移植性较差
C)用于辅助编写汇编语言程序的编辑软件称为汇编程序
D)高级程序设计语言可以有解释与编译两种工作方式
(15)在下列有关常见局域网、网络设备以及相关技术的叙述中,错误的是__________。
A)以太网是最常用的一种局域网,它采用总线结构
B)每个以太网网卡的介质访问地址(MAC地址)是全球惟一的
C)无线局域网一般采用无线电波或红外线进行数据通信
D)“蓝牙”是一种远距离无线通信的技术标准,适用于山区住户组建局域网
(16)字符编码标准规定了字种及其编码。在下列有关汉字编码标准的叙述中,错误的是__________。
A)我国颁布的第一个汉字编码标准是GB2312—80,它包含常用汉字6 000多个
B)GB2312—80和GBK标准均采用双字节编码
C)GB18030—2000标准使用3字节和4字节编码,与GB2312—80和GBK兼容
D)UCS-2是双字节编码,它包含拉丁字母文字、音节文字和常用汉字等
(17)不同格式的图像文件,其数据编码方式有所不同,通常对应于不同的应用。在下列几组图像文件格式中,制作网页时用得最多的是__________。
A)GIF与JPEG B)GIF与BMP
C)JPEG与BMP D)GIF与TIF
(18)计算机中处理的声音分为波形声音和合成声音两类。在下列有关波形声音的叙述中,错误的是__________。
A)波形声音的获取过程就是把模拟声音信号转换为数字形式,包括取样、量化和编码等步骤
B)声音信号的数字化主要由声卡来完成,其核心是数字信号处理器(DSP)
C)MP3采用MPEG-3标准对声音进行压缩编码
D)波形声音的主要参数包括取样频率、量化位数和声道数目等
(19)在下列有关数据库技术的叙述中,错误的是__________。
A)关系模型是目前在数据库管理系统中使用最为广泛的数据模型之一
B)从组成上看,数据库系统由数据库及其应用程序组成,它不包含DBMS及用户
C)SQL语言不限于数据查询,还包括数据操作、定义、控制和管理等多方面的功能
D)Access数据库管理系统是Office软件包中的软件之一
(20)Microsoft Word是目前最常用的文字处理软件之一。在下列有关Microsoft Word(97及其以后的版本)功能的叙述中,错误的是__________。
A)在默认情况下,页面的版面(纸张大小)为A4
B)在同一个文档中,所有页面的版面(纸张大小)只能相同
C)系统具有基于字典的拼写检查功能
D)在普通视图中,可以显示表格,但不能显示所插入的图片
第二部分C语言程序设计
一、选择题
(21)下列各选项都是在C语言程序段中增加的注释,其中注释方法错误的是__________。
A)void main(/*int argc,char*argv[]*/) B)void main()
{ } {pri/*remark*/ntf("name");}
C)void main() D)void main()
{int x/*=10*/; { int x=10;
printf("%d",x); /*printf(”%d",x);*/
} }
(22)设有声明“int value='5';”,则执行下列选项的赋值语句后,value的值不等于5的是__________。
A)value=value-'0"; B)value=value-0x30;
C)value=value-49; D)value=value-'\060';
(23)若有定义和声明“typedef enum{green,red,yellow,blue,black}color;color flower;”,则下列语句中正确的是__________。
A)green=red; B)flower=red;
C)color=red; D)enum=red;
(24)设有下列程序段:
static char b=2; int a=1;
void Y() void X()
{ static float d=4;…} { int c=3;…}
关于程序段中各变量的属性,以下叙述中错误的是__________。
A)a是全局变量,函数X可以访问,函数Y不能访问
B)b是全局变量,函数X和函数Y都可以访问
C)C是动态变量,函数X可访问,函数Y不可访问
D)d是静态变量,函数X和函数Y都可以访问
(25)若有如下声明和语句:
int t[3][3],*pt[3],k;
for(k=0;k<3;k++) pt[k]=&t[k][0];
则表达式*(*(pt+1)+2)所引用的是__________。
A)t[2][0] B)&t[2][0]
C)t[1][2] D)&t[1][2]
(26)设有声明“float a=1.23456;int i;”,欲将a中的数值保留小数点后两位,第三位进行四舍五入运算,能实现该功能的表达式是__________。
A)i=a*100+0.5,a=i/100.0 B)a=(a*100+0.5)/100.0
C)a=((int)a*100+0.5)/100.0 D)a=(a/100+0.5)/100.0
(27)设有如下程序:
#include
main()
{ char s[128]={'\0'},*p=s;
while(strcmp(s,"END")){ gets(s);while(*p)putchar(*p++);}}
(27)gets函数每次输入一个字符串。以下关于该程序运行时输出结果的叙述中正确的是__________。
A)所有输入的字符串都能被完整输出
B)所有输入的字符串都不能被完整输出
C)只能完整输出第一个字符串
D)只能完整输出最后一个字符串
(28)若已定义一个有返回值的函数,则以下关于调用该函数的叙述中错误的是__________。
A)函数调用可以作为独立的语句存在
B)函数调用可以出现在表达式中
C)函数调用可以作为一个函数实参
D)函数调用可以作为一个函数形参
(29)对应main函数中的fun函数调用语句,以下给出的四个fun函数首部中错误的是__________。
main()
{ int a[50],n;fun(n,&a[9]); }
A)void fun(int m,int x[]) B)void fun(int s,int h[41])
C)void fun(int p,int*s) D)void fun(int n,int a)
(30)以下所列对结构类型变量tdl的声明中错误的是__________。
A)typedef struct aa B)#define AA struct aa
{ int n;float m;}AA; AA { int n;float m;}tdl;
AA tdl;
C)struct D)struct
{ int n;float m;}aa; {int n;float m;}tdl;
struct aa tdl;
二、填空题
●基本概念题(共5分)
(1)执行以下程序段后,number的值是【1】。
char sir[]="Hello!";int number;number=sizeof(sty);
(2)关键字case和default只能在【2】语句中出现。
(3)若有说明“int a[]-[4]={1, 2, 3, 4, 5, 6, 7, 8, 9};”,则数组a第一维的大小是【3】。
(4)设有如下声明和语句:
int a=2,b,c=5;scanf("%d",&b);b=c--||scanf("%d",&c)&&a++;
该程序段执行时,若从键盘输入的数据是4__3(__代表空格键),则变量c的值为【1】。
(5)在用fopen函数打开一个已经存在的数据文件abc时,若要求既可以读出abc文件中原来的内容,也
可以用新的数据覆盖文件原来的数据,则调用fopen函数时,使用的存取方式参数应当是【5】。
●阅读程序题(共13分)
(6)以下程序运行时输出结粜是【6】。
#include
#include
main()
{ char arr[2][4];
strcpy(arr[0],"you");strcpy(arr[1],"me"); arr[0][3]='&';printf("%s\n" arr[0]);}
(7)以下程序运行时输出结果是【7】。
#include
main()
{ int s,i,sum(int);
for(i=1;i<=5;i++) s=sum(i); printf("%d\n",s);}
sum(int k)
{ static int x=0;return x+=k;}
(8)以下程序运行时输出结果为【8】。
#include
main()
{ printf("%d\n",f(21,35));}
int f(int a,int b)
{ if(a==b)return a;
else if(a>b) return f(a-b,b);
else retum f(a,b-a);}
(9)以下程序运行时,输出结果的第一行是【9】,第二行是【10】。
#include
int t(int x,int y,int*ep,int*dp)
{ x=x*x;y=y*y; *cp=x+y; *dp=x-y;}
main()
{ int a=4,b=3,c=5,d=6; t(a,b,&c,&d); printf("%d,%d\n%d,%d",a,b,c,d);}
(10)以下程序运行时,输出结果的第一行是【11】,第二行是【12】。
#include
void change(int x,int m)
{ char ch[]={'0','2','3','4','5','6','7','8','9'},b[80];int i=0,r;
while(x) { r=x%m;x/=m;b[i++]=ch[r];}
for(--i;i>=0;i--) printf("%c",b[i]);}
main()
{ int a,b; change(10,2);printf("\n");change(10,8);}
(11)以下程序执行时,输出结果的第一行是【13】,第二行是【14】,第三行是【15】。
#include
#define N20
main()
{ int i,j,k,n,arr[N][N]; k=1,i=0;n=3;
while(i { for(j=i;j for(j=n-i-2;j>=i;j--) arr[n-i-1][j]=k++; for(j=n-i-2;j>=i;j--) arr[j][i]=k++; for(j=i+1;j<=n-i-2;j++) arr[i][j]=k++; i++:} if(n%2) arr[i][i]=k; for(i=0;i prinrf("\n");}} (12)以下程序运行时,输出结果的第一行是【16】,第二行是【17】,第三行是【18】。 #include #include struet node { char info[5];struct node*link;}; main() { struct node*create(char*); void print(struet node*); struct node*head=NULL; char c[]="the teacher"; head=create(c); print(head); struct node*create(char*s) { int k;struct node *h,*p; h=NULL; while(*s) { k=0; p=(struct node *)malloc(sizeof(struct node)); while(k<4&&*s) P->info[k++]=* s++; P->info[k]='\0';p->link=h; h=p;} return h;} void print(struct node *head) { struct node *P=head; while(p!=NULL) { puts(p->info); p=p->link; }} ●完善程序题(共12分) (13)以下程序的功能是:实现两个复数相加的计算并输出运算结果。 #include #include struct complex { float r,i;}; struct complex *cal(struct complex *x1,strnct complex *x2) { struct complex *p; p=( 【19】) malloc(sizeof(struct complex)); p=>r=(*x1).r+(*x2).r; p=>i=(*x1).i+(*x2).i; 【20】;} main() { struct complex *p,x,y; scanf("%f%f%f%f",&x.r,&x.i,&y.r,&y.i); p=cal(&x,&y); printf("result:%.2f+%.2fi", 【21】; free(p);} (14)以下程序中函数float fun(int n)的功能是:根据下列公式计算并返回s的值(n≥0)。 s=n∑i=0 (-1)i 2×i+1 #include float fun(int n) { float s=0.0,w,f=-1.0;int i; for(i=0;i<=n;i++) {f= 【22】;w=f/(2*i+1); 【23】;} return s;} main() { int n=5;float s; 【24】; printf("%f\n",s);} (15)以下程序的功能是:首先对字符串s1和s2分别按字典序排序,然后将sl和s2有序合并为字符串 s3并同时删除s3中重复出现的字符,最后输出字符串s3。例如,当字符串sl和s2分别是“good” 和“morning”时,程序应输出“dgimnor”。 #include #include void merge(char *x,char *y,char *z) { char t;int i=0,j=0,k=-1; while( 【25】) { if(x[i] else t=y[j++]; while(x[i]==t) i++; while(y[j]==t) j++; 【26】=t;} while(x[i]) if(x[i]!=z[k]) z[++k]=x[i++]; else i++; while(y[j]) if(y[j]!=z[k]) z[++k]=y[j++]; else j++; z[++k]='\0';} void sort(char s[]) { int i,j,k,n;char t; n=strlen(s); for(i=0;i { 【27】; for(j=i+1;j { char s1[100]="good",s2[100]="moming",s3[200]; sort(s1);sort(s2); merge(sl,s2,s3);puts(s3);} (16)以下程序的功能是:对于一个长度不超过50的字符串S,按输入的命令进缔删除、插入字符的操作。 删除和插入命令的格式如下: 1.删除命令格式:D a (a表示被删除的字符)。 命令功能:从字符串S中删除字符a,若S串中有多个a,只删除第一个。 例如,S字符串为“This is a book.”,执行命令“D s”后,S字符串变为“Thi is a book.” 2.插入命令格式:I al a2(a1表示定位字符,a2表示要插入的字符)。 命令功能:将字符a2插入到字符串S中最后一个出现的字符a1的前面。 例如,S字符串为“This is a book.”,执行命令“I s d”后,S字符串变为“This ids a book.” #include #inelude void delete(char s[],char c); void insert(char s[],char c1,char c2) main() { char s[50]="This is a book.",op,c1[2],c2[2];int i,p,k; printf("\nInput command\n"); scanf("%c", 【28】; switch(op) { case'D':scanf("%s",c1);delete(s,c1[0]);break; case'I':scanf("%s%s",c1,c2); insert(s,c1[0],c2[0]);break; defauIt:printf("\nCommand format error!\n");return 1; } printf("%s\n",s);} void delete(char s[],char c) { int i,n=-1; for(i=0;s[i]!='\0';i++) if(s[i]==c) { n=i;break;} if(n==-1) {printf("\nThere is no\'%c\'in the\"%s\"\n",c,s);exit(1);} for(i=n;s[i]!='\0';i++) s[i]= 【29】;} void insert(char s[],char c1,char c2) { int i,n=-1,m; for(i=0;s[i]!='\0';i++) if(s[i]==c1) n=i; if(n==-1) { printf("\nThere is no\'%c\'in the\"%s\"\n",c1,s);exit(0);} m=strlen(s); for(i=m;i>n;i--) s[i]=s[i-1]; 【30】;}