当前位置:文档之家› 2008年(秋)江苏二级C语言笔试试卷及答案和答案分析

2008年(秋)江苏二级C语言笔试试卷及答案和答案分析

2008年(秋)江苏二级C语言笔试试卷及答案和答案分析
2008年(秋)江苏二级C语言笔试试卷及答案和答案分析

江苏省高等学校非计算机专业学生

计算机基础知识和应用能力等级考试

二级C语言程序设计2008年(秋)笔试试卷

(考试时间120分钟,满分60分)

第一部分计算机基础知识

(1)信息技术指的是用来扩展人们信息器官功能、协助人们更有效地进行信息处理的一类技术。在下列有关信息技术的叙述中,错误的是___D_______。

A)现代信息技术的主要特征之一是以数字技术和电子技术为基础

B)遥感遥测技术、自动控制技术等均属于现代信息技术

C)微电子技术是信息技术领域的关键技术,它以集成电路为核心

D)利用磁带、光盘、电话、传真等进行信息传递均属于现代通信

(2)二进制数10111000和11001010进行逻辑“与”运算,结果再与10100110进行逻辑“或”运算,最终结果的十六进制形式为____C______。

A)A2B)DE C)AE D)95

(3)计算机的性能在很大程度上是由CPU决定的。在下列有关CPU结构和原理的一些叙述中,错误的是____A______。

A)目前PC机所使用的CPU均是Intel公司的产品

B)从逻辑组成上看,CPU主要由寄存器组、运算器和控制器等部分组成

C)目前CPU中的运算部件ALU有多个,每个ALU均可独立完成运算

D)不同CPU能执行的指令有所不同,但同一系列CPU产品通常是“向下兼容的”

(4)在下列有关目前PC机主板及其组件的叙述中,正确的是____C______。

A)主板的物理尺寸没有标准,通常不同品牌的主板采用不同的尺寸

B)主板上的BIOS芯片是一种RAM芯片,因而其存储的信息是可以随时刷新的

C)主板上的存储器控制和I/O控制功能大多集成在芯片组内

D)主板上的CMOS芯片是一种非易失性存储器,其存储的信息永远不会丢失

(5)在下列有关PC机硬盘存储器的叙述中,错误的是____D______。

A)硬盘上的数据块要用柱面号、扇区号和磁头号这三个参数来定位

B)目前硬盘一般都含有sRAM芯片构成的高速缓存(Cache)

C)目前硬盘与主机的接口大多为串行ATA接口

D)硬盘容量的增加主要是靠碟片数增加,目前硬盘一般均有数十个碟片组成

(6)在下列有关PC机I/O总线和接口的叙述中,错误的是_____A_____。

A)可用于连接键盘或鼠标器的PS/2接口是一种并行数据传输接口

B)USB2.0接口的数据传输速率可达每秒几十MB

C)通过USB集线器,USB接口连接设备数最多可达100多个

D)目前数字视频设备常用IEEE-1394接口与主机连接

(7)在下列有关PC机软件的叙述中,错误的是____A______。

A)任何软件都具有版权,因此均不能随意复制和使用

B)软件由程序及相关的数据和文档组成

C)数据库管理系统属于系统软件

D)OutlookExpress属于应用软件

(8)操作系统产品有许多种。在下列软件中,不属于操作系统产品类型的是_____C_____。

A)UNIX B)Linux

(9)在下列有关Windows操作系统的叙述中,错误的是__D________。

A)Windows操作系统采用图形用户界面

B)WindowsXP操作系统分为家庭版、专业版、平板PC版等多种版本

C)在WindowsXP环境下,用户可以通过“任务管理器”查看CPU的使用率

D)在WindowsXP中,作为虚拟内存使用的交换文件的文件名是

Win386.swp

(10)在下列有关算法和数据结构的叙述中,错误的是___C_______。

A)算法描述解决问题的步骤,数据结构描述求解问题的对象

B)算法应具有确定性、有穷性和能行性

C)数据结构研究的内容包括数据的逻辑结构和存储结构,与数据的运算无关

D)精心选择和设计的数据结构可以提高算法的时间效率和空间效率

(11)常用局域网有以太网、FDDI网等类型。下面的相关叙述中,错误的是_____D_____。

A)总线式以太网采用带冲突检测的载波侦听多路访问(CSMA/CD)方法进行通信

B)以太网交换机比集线器具有更高的性能,它能提高整个网络的带宽

C)FDDI网通常采用光纤双环结构,具有高可靠性和数据传输的保密性

D)FDDI网的MAC地址和帧格式与以太网相同,因此这两种局域网可以直接互连

(12)路由器用于连接多个异构的计算机网络。下列是一些有关网络中路由器与IP地址的叙述,其中正确的是_____D_____。

A)路由器不能有IP地址

C)路由器只需要分配一个IP地址B)路由器可不分配IP地址

D)路由器应分配两个或两个以上IP

地址

(13)下列关于利用有线电视网和电缆调制解调技术(CableMODEM)接入互联网的优点的叙述中,错误的是___A_______。

A)每个用户独享带宽且速率稳定

C)不占用电话线B)无需拨号D)可永久连接

(14)Web浏览器和Web服务器都遵循__B________协议,该协议定义了浏览器和服务器的网页请求格式及应答格式。

A)TCP B)

HTTP

C)UDPD)FTP

(15)下列有关网络信息安全的叙述中,正确的是____B______。

A)只要加密技术的强度足够高,就能保证数据不被非法窃取

B)访问控制的任务是对每个文件或信息资源规定各个(类)用户对它的操作权限

C)硬件加密的效果一定比软件加密好

D)根据人的生理特征进行身份鉴别的方式在单机环境下无效

(16)若内存中相邻2个字节的内容为十六进制7451,则它们不可能是______B____。

A)2个西文字母的ASCII码C)1个16位整数B)1个汉字的机内码D)一条指令的组成部分

(17)以下关于汉字编码标准的叙述中,错误的是____A______。

A)Unicode和GB18030中的汉字编码是相同的

B)GB18030汉字编码标准兼容GBK标准和GB2312标准

C)我国台湾地区使用的汉字编码标准主要是BIG5

D)GB18030编码标准收录的汉字数目超过2万个

(18)不同的图像文件格式往往具有不同的特性。有一种格式具有图像颜色数目不多、数据量不大、能实现累进显示、支持透明背景和动画效果、适合在网页上使用等特性,这种图像文件格式是

_____B_____。

写中,不属于计算机辅助技术系统的是____C______。

A )CAD

B )CAPP

C )CEO

D )CAM (20)在信息系统的结构化生命周期开发方法中,具体的程序编写属于___B_______阶段的工作。

A)系统规划

B)系统分析C)系统设计D)系统实施

一、选择题

第二部分C语言程序设计

(21)以下叙述中正确的是___D_______。

A)在编译时可以发现注释中的拼写错误

B)C语言程序的每一行只能写一条语句

C)main(){}必须位于程序的开始

D)C语言程序可以由一个或多个函数组成

(22)以下选项中不能用作变量名的是_____B_____。

A)_floatB)switchC)sumD)_123

(23)已知sizeof(int)的值为2,为将10!的值存储到变量f中(10!=3628800),变量f的类型应声明为____A______。

A)longint B)intC)shortint D)unsignedint (24)若有声明“doublex=3,c,*a=&x,*b=&c;”,则下列语句中错误的是______C____。

A)a=b=0;B)a=&c,b=a;C)&a=&b;D)*b=*a;

(25)数学式a

2b在

C程序中正确的表示形式为_____B____。

A)sqrt(a)/2*b B)sqrt(a)/2/b C)sqrt(a)/2b D)sqrta/(2*b)

(26)已知有程序段“charstr[][10]={"Aoyun","Beijing"},*p=&str[0][0];printf("%s\n",p+10);",则执行printf语句后输出为_____A_____。

A)BeijingB)Aoyun

(27)以下声明中错误的是___C_______。

C)ing D)ng

A)inta[2]B)inta[]={0,1}C)inta[3]=0D)inta[3][4]={0}(28)已知有结构定义和变量声明如下:

Struct st udent

{char name[20];int score;struct student*h;}stu,*p;int*q;

以下选项中错误的是____C______。

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)!a&&!b&&c B)!a||!b||c C)a==b&&b>=cD)a>=b&&b>c

(30)若有声明“char ss[8]="Red";”,则sizeof(ss)的值是

______a____。

A)8B)4C)3

二、填空题

●基本概念题(共5分)

D)1

(1)已知有函数定义“intfun(){return(3,4);}”,则调用fun后的函数返回值是【1】。

(2)设有声明“inta=3,b=4;floatx=4.5,y=3.5;”,则表达式“(float)(a+b)/2+(int)x%(int)y”的值是【2】。(3)若已有定义“enumTP{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

voidmain()

{inta=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

voidmain()

{inti,sum=0;

for(i=0;i<5;i++)

{switch(i)

{case0:

case1:sum++;

case3:sum++;

case4:sum--;break;}}

printf("%d\n",sum);}

(7)以下程序运行时输出结果是【7】。

#include

voidfunc(intb)

{inta;a=b;b=10;}

voidmain()

{inta=10,b=20;func(b);printf("%d,%d",a,b);}

(8)以下程序运行时输出结果的第一行是【8】,第二行是【9】。

#include

intf1()

{staticinti=0,f=1;returnf*=++I;}

intf2()

{inti=0,f=1;returnf*=++i:}

voidmain()

{printf("%d\n",f1()+f1());printf("%d\n",f2()+f2());}

(9)以下程序运行时输出结果是【10】。

#include

#include

voidsf(char*s1,char*s2)

{if(*s1=*s2)sf(s1+1,s2+1);}

voidmain()

{chara[20]="ABC",b[20]="xyz";

sf(a+strlen(a),b);puts(a);}

(10)以下程序运行时输出结果的第一行是【13】,第三行是【12】。

#include

voidmain()

{inti,j,a[3][3];

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(i

elsea[i][j]=i-j+1;

for(i=0;i<3;i++)

{for(j=0;j<3;j++)pfintf("%4d",a[i][j]);

pfintf("\n");}}

(11)以下程序运行时输出结果是【13】。

#include

voidsort(inta[],intn)

{inti,j,p;intt;

for(i=1;i

{p=i;

for(j=i+2;j

if(a[j]>a[p])p=j;

if(p!=i){t=a[i];a[i]=a[p];a[p]=t;}}}

voidmain()

{ints[]={8,1,4,3},n=4,k;

sort(s,n);

for(k=0;k

pfintf("\n");}

(12)以下程序运行时输出结果的第一行是【14】,第二行是【15】。

#include

structs

{intx,*y;}*p;

intd[5]={10,20,30,40,50};

structsaE5]={100,&d[0],200,&d[1],300,&d[2],400,&d[3],500,&d[4]};

voidmain()

{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

voidmain()

{intk,i,m,n,num[20];

scanf("%d",&n);

for(i=0;i

i=k=m=0;

while(m

{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个元素之和。试完善程序以达到要求的功能。

intfsum(int*array,intn)

{inti,s;

s=0:

for(i=0;【19】;i++)s+=array[i];

return(s);}

voidmain(void)

{inta[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

intsumh,sumt;

sumh=fsum(a,4);sumt=【20】;printf("%d%d\n",sumh,sumt);}

(15)以下程序对二维数组a中存储的N×N矩阵做如下操作:先将每一行中值最大的元素与该行位于主对角线处的元素交换值,然后对主对角线上的所有元素排序使其自左上角到右下角升序排列,最后

输出排序后主对角线上各元素的值。试完善程序以达到要求的功能。

#include

#defineN5

voidfun(intx[][N],intn)

{inti,j,t,arr,col;

for(i=0;i

{arr=x[i][0];col=0;

for(j=0;j=arr){arr=x[i][j];【21】;}

t=x[i][i];【22】;x[i][col]=t;}

for(i=0;i

for(j=i+1;j

voidmain()

{inta[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

printf("\n");}

(16)以下程序中函数replace的功能是:将字符串s中所有属于字符串s1中的字符都用s2中的对应位置的字符替换。假如s为“ABCBA”,s1为“AC”,s2为“ac”,则调用replace函数后,字符串s的

内容将变换为“aBcBa”。试完善程序以达到要求的功能。

#include

#defineMAX20

voidreplace(char*S,char*s1,char*s2)

{char*p;

for(;*s;s++)

{p=s1;

while(*p&&【24】)p++;

if(*p)*s=【25】;}}

voidmain()

{chars[MAX]="ABCBA",s1[MAX]="AC",s2[MAX]="ac";

【26】;printf("Thestringofsis:");printf("%s\n",s);}

(17)以下程序的功能是:函数structnode*insert(structnode*head,structnode*p)将p指向的结点作为首结点插入head指向的链表中。main函数接收从键盘输入的一行字符,每接收一个字符后,申请一个新结点保存该字符,并调用insert函数将新结点插入链表中。最后从表头开始依次输出该链表

各结点成员c的值。试完善程序以达到要求的功能。

#include

#include

structnode

{charc;structnode*next;};

voidmain()

{structnode*insert(structnode*head,structnode*p); charch;structnode*head,*p;

head=NULL;

while((ch=getchar())!='\n')

{p=(structnode*)malloc(sizeof(structnode));

【27】=ch;p->next=NULL;【28】;} P=head;

while(p!=NULL){printf("%c",p->c);【29】;}} structnode*insert(structnode*head,structnode*p) {if(head==NULL)head=p;

else{【30】;head=p;}

returnhead;}

2008年(秋)笔试试卷参考答案及解析

第一部分计算机基础知识

(1)D)【解析】现代通信往往被理解为单一的电信通信、数字通信、IT产业及电子产品制造业

等高新技术通信而忽略了通信的本质。邮政通信也是现代通信的一部分,邮政通信是以实物传递为基础通过对文字、图片、实物的空间转移传递信息,是国家安全建设基础个人通信自由及隐私保护的体现。

(2)C)【解析】二进制数10111000和11001010进行逻辑“与”运算结果为10001000,结果再

与10100110进行逻辑“或”运算结果为10101110,最终结果的十六进制形式为AE。

(3)A)【解析】目前PC机所使用的大多数CPU均是Intel公司的产品。

(4)C)【解析】BIOS芯片是特殊的ROM(ReadOnlyMemory,只读存储器)芯片,其中的内

容只能读取,若要改变,必须采用专用的软件(就是通常我们说的刷BIOS,使用诸如AWDFLSH等)。CMOS采用互补金属氧化物半导体制作的一块RAM(RandomAccessMemory,随机存取存储器)芯片,它也是固定在计算机主板上的。它用来保存当前系统的硬件配置和用户对某些参数的设定。由于是RAM 芯片,它必须由主板上的电池供电来保持芯片中的数据。

(5)D)【解析】硬盘容量的增加主要是靠碟片数增加和单碟容量的增加来改变。

(6)A)【解析】可用于连接键盘或鼠标器的PS/2接口是一种串行数据传输接口。

(7)A)【解析】任何软件都具有版权,但是自由软件是能随意复制和使用。

(8)C)【解析】Access2000是Office办公软件中的数据库软件。

(9)D)【解析】在WindowsXP中,作为虚拟内存使用的交换文件的文件是Win386.swp。

(10)C)【解析】数据结构与算法主要研究内容有:数据的逻辑结构,即数据关系之间的逻辑关系;数据的存储结构,即数据的逻辑结构在计算机中的表示;操作算法,即插入、删除、修改、查询、排序等。

(11)D)【解析】FDDI网和以太网不可以直接进行互连,局域网交换机可以在以太网或令牌环

网与FDDI主干网之间起着网桥的作用,专注于简单的帧格式的转换而避开了所有网络层复杂的处理。交换机仅以路由器一小部分的代价达到与FDDI主干网连接的目的。

(12)D)【解析】路由器用于连接多个异构的计算机网络。网络中路由器应分配两个或两个以上

的IP地址。

(13)A)【解析】CableModem与以往的Modem在原理上都是将数据进行调制后在Cable(电缆)

的一个频率范围内传输,接收时进行解调,传输机理与普通Modem相同,不同之处在于它是通过有线电视CATV的某个传输频带进行调制解调的。而普通Modem的传输介质在用户与交换机之间是独立的,即

用户独享通信介质。CableModem属于共享介质系统,其他空闲频段仍然可用于有线电视信号的传输。

(14)B)【解析】Web浏览器和Web服务器都遵循HTTP协议,该协议定义了浏览器和服务器的

网页请求格式及应答格式。

(15)B)【解析】访问控制的任务是对每个文件或信息资源规定各个(类)用户对它的操作权限。

(16)B)【解析】ASCII码只占用1个字节,而汉字机内码要占用2字节,十六进制7451不可能

是1个汉字的机内码。

(17)A)【解析】Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0~0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。

码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。GB18030标准采用单字节、双字节和四字节三种方式对字符编码。单字节部分采用GB/T11383的编码结

构与规则,使用0×00至0×7F码位(对应于ASCII码的相应码位)。双字节部分,首字节码位从0×81至0×FE,

尾字节码位分别是0×40至0×7E和0×80至0×FE。四字节部分采用GB/T11383未采用的0×30到0×39作

为对双字节编码扩充的后缀,这样扩充的四字节编码,其范围为0×81308130到0×FE39FE39。其中第一、三个字节编码码位均为0×81至0×FE,第二、四个字节编码码位均为0×30至0×39。

(18)B)【解析】GIF格式的特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到

了广泛的应用。最初的GIF只是简单地用来存储单幅静止图像(称为GIF87a),后来随着技术的发展,可

参考答案及解析第1页共5页

以同时存储若干幅静止图象进而形成连续的动画,使之成为当时支持2D动画为数不多的格式之一(称为GIF89a),而在GIF89a图像中可指定透明区域,使图像具有非同一般的显示效果,这更使GIF风光十足。目前Internet上大量采用的彩色动画文件多为这种格式的文件,也称为GIF89a格式文件。

(19)C)【解析】首席执行官(ChiefExecutiveOfficer,CEO)是在一个企业中负责日常经营管

理的最高级管理人员,又称作行政总裁(香港和东南亚的称呼)或最高执行长(日本的称呼)。

(20)D)【解析】在信息系统的结构化生命周期开发方法中,具体的程序编写属于系统实施阶段

的工作。

第二部分C语言程序设计

一、选择题

(21)D)【解析】在一个C程序中放在符号“/*”和“*/”之间的内容,称为对程序的注释。注

释是对程序的说明。注释从“/*”开始到最近的一个“*/”结束,其间的任何内容都被编译程序忽略。换句话说,注释只是为了更好地看懂程序而做的标记,不对程序产生任何影响。C程序书写格式的基本习惯有:①一行内可以写几个语句,一个语句可以分写在多行上。②每个语句和数据定义的最后必须由一个

分号“;”结束(分号是C语句的一部分,不是语句之间的分隔符)。一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。程序中可以有多个函数,但是main函数只能有一个。

(22)B)【解析】C语言合法标识符的命名规则是:①标识符由字母、数字和下划线组成;②第

一个字符必须为字母或下划线;③大写字母与小写字母被认为是两个不同的字符——区分大小写;④C

语言规定了一个标识符允许的字符个数,即标识符的前若干个字符有效,超过的字符将不被识别。C语言预先规定了一批标识符,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键字。变量的命名不能包括关键字。选项B)中的switch就是一个C语言的关键字,不能作为变量名。

(23)A)【解析】下表列出了C语言中各类整型量所分配的内存字节数及数的表示范围。

(24)C)【解析】本小题考查的是指针变量的运算,指针变量可以进行相减,取数值运算,不能

进行取地址的运算,只能对非指针变量进行取地址的运算,所以C)是不正确的。

(25)B)【解析】C语言中的加减乘除运算符分别是:+,-,*,/。选项A)错误在于2*b应该

用括号括起来,选项C)的错误:*和括号不能省略,选项D)的错误在于sqrt没有括号,求根函数是C

的库函数,和普通的函数一样,实际参数应该用括号括起来。

(26)A)【解析】printf语句中,变量的参数列表,指针向后移动了10个位置,即指向了第二个

字符串,所以输出:“Beijing”。选择选项A)。

(27)C)【解析】选项A)定义了一个长度是2的一维数组,没有初始化。选项B)定义了一个

整型的数组,虽然没有定义数组的长度,但是在初始化的过程中,给出了数组的长度。选项C)定义了一个整型数组,但是初始化错误,正确的应该是:inta[3]={0}。

(28)C)【解析】结构体变量的指针可以指向结构体变量,所以选项A)和选项D)是正确的。

选项C)想要打印输出结构体变量stu中的两个变量的值。正确的输出方式是:scanf("%s%d",&stu. name,&stu.score);。

(29)A)【解析】选项A)是与运算,第一项!a的值就是0,所以整个表达式的值也是零。B是

或运算,只要有一项不为零,结果就不是零,显然最后一项C是非零的数,所以B非零,同样可以得到C

和选项D)的结果,都是非零。

(30)A)【解析】注意sizeof函数返回的值是数组的大小,定义时是多大,返回值就是多大。与strlen函数是有很大区别的,strlen求出字符串中字符的多少,确切的说是第一个‘\0’之前的字符的多少。本题中,strlen(ss)的值是3。

二、填空题

●基本概念题

(1)【1】4

【解析】return语句后面跟着的是一个逗号表达式,逗号表达式的结果是其最后一项的结果,所以,(3,

4)的值等于4,所以fun函数的返回值是4。

(2)【2】4.5

【解析】考查的知识点是强制转换类型。在C语言的表达式中,如果运算符两边的整型类型不相同,将进行类型之间的转换。转换规则如下:①当赋值运算符左边的变量为短整型变量,右边的值为长整型

变量,短整型变量只能接受长整型变量低位上两个字节中的数据,高位上两个字节中的数据将丢失。②当赋值运算符左边的变量为无符号整型,右边的值为有符号整型时,则把内存中的内容原样复制。右边数值的范围不应超出左边变量可以接受的数值范围。同时注意,这时负数将转换为正数。③当赋值运算符左

边的变量为有符号整型,右边的值为无符号整型时,复制的机制同上。这时若符号位为1,将按负数处理。

第一项(float)(a+b)/2结果是3.5,第二项(int)x%(int)y=4%3=1,所以最后的结果是4.5。

(3)【3】1

【解析】枚举的定义枚举类型定义的一般形式为:enum枚举名{枚举值表};在枚举值表中应罗列出

所有可用值。这些值也称为枚举元素。枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。

这里A的值是0,所以A+1=1。所以打印输出1。

(4)【4】"a+"或"at+"或"ab+"

【解析】主要考查的是常用文件使用方式及其含义。

●阅读程序题

(5)【5】3/5,5/8

【解析】main函数的for循环中,i只能等于1或者2。i=1时,输出2/1,2/3(回车)。i=2时,输出3/5,

5/8(回车)。即最后一行输出的是:3/5,5/8。

(6)【6】1

【解析】第一次for循环,i=0,从case0开始的操作:sum++;sum++;sum--;最后的sum=1。

第二次for循环,i=1,从case1始的操作:sum++;sum++;sum--;最后的sum=2。

第三次for循环,i=2,没有符合的语句,没有操作。

第四次for循环,i=3,从case3始的操作:sum++;sum--;最后的sum=2。

第五次for循环,i=4,从case4开始的操作:sum--;最后的sum=1。

所以最后的结果是输出1。

(7)【7】10,20

【解析】main函数对a和b变量赋以初值,进入func函数,函数中对a和b分别赋以数值,但是func

函数返回main函数的时候,形式参数的空间得以释放,所以func函数中对a和b的赋值并没有保留下来。

所以main函数最后打印a,b的时候,还是原来main函数中定义的a和b的值,即10,20。

(8)【8】3【9】2

【解析】main函数中只有两个printf函数,打印函数f1和函数f2的返回值。分析f1函数,定义了一

个静态的变量i,第一次调用f1,返回值f=f*(++i)=f*1=1。第二次调用f1函数,f=f*(++i)=f*2=2。所以第

一个printf函数的输出结果是f1()+f1()=1+2=3.

函数f2中定义的变量没有静态变量,所以每次调用的结果是相同的,返回值f=f*(++i)=f*1=1,所以

第二个printf函数的输出结果是:f2()+f2()=1+1=2。

(9)【10】ABCxyz

【解析】main函数中定义了两个字符串数组,a是字符串数组的首地址,指向‘A’,a+strlen(a)指向的是C后面的第一个‘\0’。sf函数的功能是把字符串b复制到a中,直到字符串a结束即遇到第一个‘\0’

为止。所以之后的a就是“ABCxyz”。打印输出。

(10)【11】111【12】321

【解析】main函数定义了一个3×3的数组,行号小于列号的元素都赋值1,其他的元素是行号减去列号加一。所以数组成为:111,211,321。最后一个嵌套的for循环是按照3×3的格式输出这个数组,

所以第一行和第三行就是数组的第一行和第三行,即:111,321。

(11)【13】8341

【解析】main函数中调用了sort函数。子函数中的外层for循环只能循环一次,i只能等于1,p=1,内

层的for循环也只能运行一次,j只能等于3。a[j]=3>a[P]=1,if条件满足,所以p=3。因为p不等于i,所

以a[i]与a[P]做一次交换,也就是a[1]与a[3]交换。所以数组变成8341。打印输出即可。

(12)【14】100101【15】1020

【解析】首先定义了一个结构体s,包含一个整型的变量和一个指向整型变量的指针。接着定义了一个指向结构体的指针p,在main函数的外部定义了一个大小为5的整型的数组d和一个大小为5的结构体数

组a。main函数中是的指针p指向结构体数组a,然后打印一系列的数据。第一个printf函数打印输出结构

体数组的第一个元素的x值100,之后x做加加运算。第二个printf函数打印输出结构体数组的第一个元

素的x值101(第一个printf操作之后第一个元素的x的值做了变化)和回车,输出结果的第一行结束。

第三个printf函数打印输出结构体数组的第一个元素的y指向的数字,*p->y=&d[0],所以打印输出d[0]=10。

第四个printf函数打印输出结构体数组的第二个元素的y指向的数字,*++p->y=&d[1],所以打印输出

d[1]=20。

(13)【16】361【17】528【18】47

【解析】main函数先用一个for循环给num数组的前13个元素赋以初值(1~13)。进入while循环,

此时n=8,所以循环的条件是m<7。循环体中如果当前数组元素不为零,则打印输出,然后对当前数组元素置零,k置零,如果已经输出了三个元素,则输出一个回车。数组元素指针i向后移动一位,如果i增加到n则i等于0。

第一次输出,i=3,也就是数组的第三个元素,即3。hum[2]=0。同理第二次输出i=6,,hum[5]=0。数组的第6个元素,即6。第三次输出,i=1(i=8时,最后一个if语句把i置零),hum[0]=0。输出回车,第一

行输出完毕,m=2。

第二行的第一次输出:从hum[0]开始的不为零的第三个数字,显然是hum[4]=5。之后hum[4]=0。同理第二次输出从hum[4]开始的第三个不为零的数,注意i=8的时候i跳回零,所以此次输出hum[1]=2。之

后hum[1]=0。第三次输出,i=7,hum[7]=8,另以hum[7]=0。输出回车,第二行输出完毕。m=5。

第三行输出:第一次,上一次循环中i=8,置零,所以i从0开始查找第三个不为零的数字:4(i=3),

此时m=6。第二次,i从3开始查找第三个不为零的数字:7,此时m=7,while的循环条件不满足,循环

结束,输出完毕。

●完善程序题

(14)【19】i

【解析】main函数中的“sumh=fsum(a,4);”语句,实现的功能是求a数组中前4个元素之和。所以函

数fsum中的n是所要求和的元素的个数,for循环实现的就是元素的相加,总共n个,所以循环结束的条

件是:i

参照上面一行语句:“sumh=fsum(a,4);”可以看出下面的一行语句要实现的是:数组的后6个元素之和,fsum函数中的第一个参数是所要求和的首地址,这里后六个元素的和,所以首地址应该是数组的倒数第六个元素的地址,即&a[9]或者a+9,第二个参数所求数组元素的个数,这里=6。所以这里应该填写的是:fsum (&a[9],6)或fsum(a+9,6)。

(15)【21】col=j【22】x[i][i]=x[i][col]【23】x[i][i]>x[j][j]

【解析】main函数中定义了一个5×5的二维数组,并对其初始化。紧接着调用了函数fun实现题目中

所要求的功能。分析fun函数:用一个嵌套的for循环实现“将每一行中值最大的元素与该行位于主对角

线处的元素交换”内层for循环中找到一个比当前数大的值,保存在arc中,if语句之后,做对角线上元素

与最大元素的交换,所以if语句中必须记录最大元素的位置,即列号。所以第21题应该是col=j。

第22题和其上下两行实现的是最大值与对角线上元素的交换,显然应该写:x[i][i]=x[i][col]。

第22题之后的这一个嵌套的for循环实现的是:“对主对角线上的所有元素排序使其自左上角到右下

角升序排列”if语句是两个对角线的元素的相互交换,显然if的条件应该是相互交换的两个对角线元素中,第一个大于第二。即:x[i][i]>x[j][j]。

(16)【24】*p!=*s【25】*(s2+p-s1)

【26】replace(s,s1,s2)

【解析】函数replace的功能是:将字符串s中所有属于字符串s1中的字符都用s2中的对应位置的字

符替换。for循环终止条件是字符串s指向的不是‘\0’,循环体中包含一个while循环,实现的是找到s1

指向的字符在s中的位置,if语句实现替换操作。

第24题,while语句条件是p指针不是‘\0’并且p与s指向的字符不相同。所以应该填写:*p!=*s。

第25题,实现替换功能。“用s2中的对应位置的字符替换”。p-s1就是当前的字符偏离s1的长度,加

s2就得出对应的字符的地址。对应位置的字符就是:*(s2+p-s1)。

第26题,就是调用子函数的语句,把相应的形式参数换成实际参数即可。即:replace(s,s1,s2)。

(17)【27】p->c【28】head=insert(head,p)

【29】p=p->next;【30】p->next=head

【解析】由题目可以看出:“每接收一个字符后,申请一个新结点保存该字符”第一个while循环条件

是把输入的不是回车的字符放到ch中,作为结点,循环体中首先为结点p开辟了一个空间,显然ch应该

放到结构体变量的c中。即p->c=ch。

把字符放到结构体中之后,要做的是把这个结构体插入到链表的里头。用insert函数可以实现,即head=insert(head,p)。

第29题是把结构体链表中的字符都输出来。while循环的条件是p指向的不是空指针,但是循环体中

应该有p的更新,也就是指向下一个结点,即p=p->next。

由题目知函数insert实现的功能是:“将P指向的结点作为首结点插入head指向的链表中。”if语句是:

当前的head是空,把p作为head结点。

如果head不是空的,也就是说链表已经建立了的话,那么这个head结点就应该作为p的后续结点。

而p作为head结点返回。所以第30题要填写的是p->next=head。

计算机c语言二级考试复习资料

第一章C语言概述 一、选择题: 1、一个C程序的执行是从( A )。 A本程序的main函数开始,到main函数结束 B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束 2、在 C 语言中,每个语句必须以( D )结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 3、C 语言规定:在一个源程序中,main函数的位置( C )。 A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后 4、一个C 语言程序是由( B )。 A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成 5、下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D. 自动保存源文件 二、填空题: 1、C 语言只有 32 个关键字和 9 种控制语句。 2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。 3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。 4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。 5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。 6、C 语言的标识符只能由字母、数字和下划线三种字符组成。 第三章数据类型、运算符和表达式

计算机二级考试C语言练习题及答案

一、选择题 1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用putchar( )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C 语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 2). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一 D.多对多 正确答案:B 答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。 4). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程序中用到的所有变量都必须先定义后才能使用 D.由三条下划线构成的符号名是合法的变量名 正确答案:B

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

全国计算机等级考试二级C语言考点(完整版)

C语言二级考点(完整版) 第一章…… C语言基础知识 第二章……顺序结构 第三章……选择结构 第四章. ……循环结构 第五章……函数 第六章……指针 第七章……数组与指针 第八章……数组与函数 第九章……字符串 第十章……结构体与共用体 第十一章……文件 第一章C语言基础知识 考点1. C语言程序的结构认识 本节通过一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。 例1 计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf("a=%d,b=%d,sum=%d\n",a,b,sum); /*把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c语言程序都必须包括以下格式: main() { } 这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。 5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头(2)不以分号结尾

全国计算机二级考试C语言(最全复习资料)

二级公共基础知识作为必考内容出现,出题形式为选择题前10道,占考试总分的10%。 考试其它比重: 1、C语言程序的结构占总分1% 2、数据类型及其运算占总分4% 3、选择结构程序设计占比分的3% 4、循环结构占比分的5% 5、数组的定义和引用占比分的5% 6、函数占比分的5% 7、编译预处理占比分1% 8、指针占比分的5% 9、结构体占比分的3% 10、位运算占比分的2% 11、文件操作占比分的2% 考试方式 上机考试,时长120分钟 单选题40分(含公共基础10分),操作题60分(包括程序填空题、程序修改题、程序设计题) 第一部分 C语言知识复习资料 第一章C语言基本知识(90分) 【考点1】C程序 用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数 又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main 函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。 【考点3】存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 是标识名字的有效字符序列,可以理解为C程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【考点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。 【考点8】整型数据 整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。 整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。 【考点9】实型数据 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。 口诀:E前E后必有数,E后必须为整数。 实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。 【考点10】算术运算 算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。 【考点11】强制类型转换 将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。 【考点12】赋值 赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。

计算机二级C语言要求

基本要求 1. 熟悉Visual C++ 6. 0 集成开发环境。 2. 掌握结构化程序设计的方法,具有良好的程序设计风格。 3. 掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4. 在Visual C++ 6. 0 集成环境下,能够编写简单的C 程序,并具有基本的纠错和调试程序的能力。 考试内容 一、C 语言程序的结构 1. 程序的构成,main 函数和其他函数。 2. 头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3. 源程序的书写格式。 4. C 语言的风格。 二、数据类型及其运算 1. C 的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。 2. C 运算符的种类、运算优先级和结合性。 3. 不同类型数据间的转换与运算。 4. C 表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。 三、基本语句 1. 表达式语句,空语句,复合语句。 2. 输入输出函数的调用,正确输入数据并正确设计输出格式。 四、选择结构程序设计 1. 用if 语句实现选择结构。 2. 用switch 语句实现多分支选择结构。 3. 选择结构的嵌套。 五、循环结构程序设计 1. for 循环结构。 2. while 和do-while 循环结构。 3. continue 语句和break 语句。 4. 循环的嵌套。 六、数组的定义和引用 1. 一维数组和二维数组的定义、初始化和数组元素的引用。 2. 字符串与字符数组。 七、函数 1. 库函数的正确调用。 2. 函数的定义方法。 3. 函数的类型和返回值。 4. 形式参数与实在参数,参数值的传递。 5. 函数的正确调用,嵌套调用,递归调用。 6. 局部变量和全局变量。 7. 变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。 八、编译预处理 1. 宏定义和调用(不带参数的宏,带参数的宏)。 2. “文件包含冶处理。 九、指针 1. 地址与指针变量的概念,地址运算符与间址运算符。

C语言二级考试试题及答案

1.若i,j和k都是int型变量,则表达式(i=4,j=16,k=32,i=j)的值为 A. 4 B. 16 C. 32 D. 52 2.若有函数内部说明:int a[3][4];则数组a中各元素 A. 可在程序的运行阶段得到初值0 B. 可在程序的编译阶段得到初值0 C. 不能得到确定的初值 D. 可在程序的编译或运行阶段得到初值0 3.一个C语言程序是由 A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成 4.若有说明 int a[2][4];则a数组元素的非法引用是 A. a[0][2*1] B. a[1][3] C. a[4-3][0] D. a[0][4] 5.阅读下面程序,则执行后的输出结果是___。 #include "stdio.h" main() {int x,y,z; x=1;y=2;z=3; if(x>y)if(x>z)printf("%d",x); else printf("%d",y); printf("%d\n",z); } A. 0 B. 1 C. 2 D. 3 6.下面程序的输出结果为 main() { int a,b;b=(a=3*5,a*4,a*5); printf("%d",b ;} A. 60 B. 75 C. 65 D. 无确定值 7.下列选项中不是结构化程序基本结构的是 A. 顺序结构 B. 跳转分支结构 C. 选择结构 D. 循环结构 8.所有C函数的结构都包括的三部分是 A. 语句、花括号和函数体 B. 函数名、语句和函数体 C. 函数名、形式参数和函数体 D. 形式参数、语句和函数体 9.设int a=5,b=6,表达式(--b==6)?++a:--b的值是___ A. 5 B. 6 C. 7 D. 4 10.下列叙述中不是C语言的特点的是______。 A. 简洁、紧凑,使用方便、灵活,易于学习和应用 B. C语言是面向对象的程序设计语言 C. C语言允许直接对位、字节和地址进行操作 D. C语言数据类型丰富、生成的目标代码质量高 11.下列关于C语言注释的叙述中错误的是______。 A. 以“/*”开头并以“*/”结尾的字符串为C语言的注释符 B. 注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义 C. 程序编译时,不对注释作任何处理 D. 程序编译时,需要对注释进行处理 12.s1和s2已正确定义并分别指向两个字符串。 若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是 A. if(s1>s2)S; B. if(strcmp (s1,s2))S; C. if(strcmp(s2,s1)>0) S; D. if(strcmp (s1,s2)>0)S; 13.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为___ 。 for(i=0, j=10; j>=i; i++, j--) k=i+j; A. 10 B. 20 C. 8 D. 0 14.已知:int c[3][4];则对数组元素引用正确的是 A. c[1][4] B. c[1.5][0] C. c[1+0][0]

全国计算机等级考试二级笔试样卷C语言程序设计(含答案)

全国计算机等级考试二级笔试样卷C语言程序设计 【打印】【字体:大中小】【关闭】 一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列选项中不符合良好程序设计风格的是 A)源程序要文档化B)数据说明的次序要规范化 C)避免滥用goto语句D)模块设计要保证高耦合、高内聚 (2)从工程管理角度,软件设计一般分为两步完成,它们是 A)概要设计与详细设计B)数据设计与接口设计

C)软件结构设计与数据设计 D)过程设计与数据设计 (3)下列选项中不属于软件生命周期开发阶段任务的是 A)软件测试B)概要设计 C)软件维护 D)详细设计 (4)在数据库系统中,用户所见的数据模式为 A)概念模式B)外模式C)内模式D)物理模式 (5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和A)编码设计B)测试阶段C)运行阶段 D)物理设计 (6)设有如下三个关系表 R S T

下列操作中正确的是 A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S (7)下列叙述中正确的是 A)一个算法的空间复杂度大,则其时间复杂度也必定大 B)一个算法的空间复杂度大,则其时间复杂度必定小 C)一个算法的时间复杂度大,则其空间复杂度必定小 D)上述三种说法都不对 (8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A)63 B)64 C)6 D)7 (9)数据库技术的根本目标是要解决数据的

计算机二级考试C语言知识点总结

计算机二级考试C语言知识点总结 (完全针对考试大纲) 概述 总体上必须清楚的: 1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 5)一定要记住二进制如何划成十进制。 概念常考到的: 1)、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2)、每个C语言程序中main函数是有且只有一个。 3)、在函数中不可以再定义函数。 4)、算法的是一定要有输出的,他可以没有输入。 5)、break可用于循环结构和switch语句。 6)、逗号运算符的级别最低。 第一章 1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。 5)转义字符的考查: 在程序中int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。 在程序中int a = 06d, 是一个八进制的形式。 在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。 ‘\141’是合法的。 ‘\108’是非法的,因为不可以出现8。 转义字符意义ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT) 011 \\ 反斜杠092 \? 问号字符063 \' 单引号字符039 \" 双引号字符034

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

C语言二级考试重点_看完必过

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 5)一定要记住二进制如何划成十进制。 概念常考到的: 1、编译预处理不是C语言的一部分,不再运行时间。C 语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、每个C语言程序中main函数是有且只有一个。 3、在函数中不可以再定义函数。 4、算法的是一定要有输出的,他可以没有输入。 5、break可用于循环结构和switch语句。 6、逗号运算符的级别最低。 第一章

1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.333×10-1。考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。

计算机二级c语言考试习题及答案

1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用put )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节get )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 2). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名{成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一

2013计算机二级考试C语言试题及答案第一套

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。) (1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 A)PAD图B)N-S图C)结构图D)数据流图 (2)结构化程序设计主要强调的是 A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性 (3)为了使模块尽可能独立,要求 A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 (4)需求分析阶段的任务是确定 A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能 (5)算法的有穷性是指 A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用 (6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是 A)快速排序B)冒泡排序C)直接插入排序D)堆排序 (7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序 (8)将E-R图转换到关系模式时,实体与联系都可以表示成 A)属性B)关系C)键D)域 (9)有三个关系R、S和T如下: R B C D a 0 k1 b 1 n1 S B C D f 3 h2 a 0 k1 n 2 x1 T B C D a 0 k1 由关系R和S通过运算得到关系T,则所使用的运算为 A)并B)自然连接C)笛卡尔积D)交 (10)下列有关数据库的描述,正确的是 A)数据处理是将信息转化为数据的过程 B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变 C)关系中的每一列称为元组,一个元组就是一个字段

全国计算机二级C语言考试题型及考试重点

全国计算机二级C语言资格考试分析 ◆考试方式 全国计算机等级考试二级C语言每年上半年3月份与9月份两次考试,报名时间查看通知。 1.笔试:90分钟,满分100分,其中含公共基础知识部分的30分。 2.上机:90分钟,满分100分 3.上机操作包括: (1)填空。 (2)改错。 (3)编程。 ◆题型分析 二级C考试分笔试和机试两部分,两部分总分均为100分,两部分考试均需60分以上才能合格发放证书。若其中一科(笔试或机试)通过,另一科可在下一次考试中补考,若补考合格发放证书。若二科均在85分以上,在合格证书上将加印“优秀”字样,若二科均在70分以上,在合格证书上将加印“良好”字样。 (一)笔试 笔试内容分两部分。公共基础知识考核内容:30分;C语言基础知识考核内容:70分。题型分析如下: 1、单向选择题40道题,共70分。 分值分布如下: 其中(1)-(10)、(21)-(40)小题,每題2分,(11)-(20)小题,每题1分。 考核内容分布如下: (1)-(10)小题为公共基础知识考核内容,共计20分; (11)-(40)小题为C语言知识考核内容,共计50分。 2、填空题15个空,每空2分,共30分。 考核内容分布如下: (1)-(5)空为公共基础知识考核内容,共计10分; (6)-(15)空为C语言知识考核内容,共计20分。 ◆基本要求 1.熟悉Visual C++ 6.0 集成开发环境。 2.掌握结构化程序设计的方法,具有良好的程序设计风格 3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4.在Visual C++ 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序能力 ◆考试内容 一、C语言程序的结构 1.程序的构成,main函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3.源程序的书写格式。 4.C语言的风格。

全国计算机等级考试二级C语言模拟试题及答案(一)

全国计算机等级考试二级C语言模拟试题及答案(一) 一、选择题 (1)栈和队列的共同特点是 A)都是先进先出 B)都是先进后出 C)只允许在端点处插入和删除元素 D)没有共同点 正确答案: C (2)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 A)acbed B)decab C)deabc D)cedba 正确答案: D (3)链表不具有的特点是 A)不必事先估计存储空间 B)可随机访问任一元素 C)插入删除不需要移动元素

D)所需空间与线性表长度成正比 正确答案: B (4)结构化程序设计的3种结构是 A)顺序结构、选择结构、转移结构 B)分支结构、等价结构、循环结构 C)多分支结构、赋值结构、等价结构D)顺序结构、选择结构、循环结构 正确答案: D (5)为了提高测试的效率,应该 A)随机选取测试数据 B)取一切可能的输入数据作为测试数据C)在完成编码以后制定软件的测试计划D)集中对付那些错误群集的程序 正确答案: D (6)算法的时间复杂度是指 A)执行算法程序所需要的时间 B)算法程序的长度 C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数 正确答案: C

(7)软件生命周期中所花费用最多的阶段是 A)详细设计 B)软件编码 C)软件测试 D)软件维护 正确答案: D (8)数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为A)C B)Basic C)DDL D)DML 正确答案: C (9)下列有关数据库的描述,正确的是 A)数据库是一个DBF文件 B)数据库是一个关系 C)数据库是一个结构化的数据集合 D)数据库是一组文件 正确答案: C (10)下列有关数据库的描述,正确的是 A)数据处理是将信息转化为数据的过程 B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

计算机二级考试C语言操作题题库

1. 下列程序定义了n×n的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][n]),该函数的功能是:使数组左下半三角元素中的值全部置成0。答案: int fun(int a[][N]) { int I,j; for(i=0;i<N;i++) for(j=0;j<=I;j++) a[i][j]=0; } 2. 请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ascii 码降序排列。答案: void fun(char *s,int num) { char t; int I,j; for(i=1;i<num-2;i++) for(j=i+1;j<num-1;j++) 3. 请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。答案: void fun(char *s,char t[]) { int I,j=0,n; n=strlen(s); for(i=0;I,n;i++) if(i%2==0&&s[i]%2==0) { t[j]=s[i]; j++; } t[j]=‘\0’; } 4. 请编写函数fun,该函数的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。答案: void fun(char (*s)[n] ,char *b) { int i,j,k=0; for(j=0;j<n;j++) for(i=0;i<m;i++) { b[k]=*(*(s+i)+j) k++; } b[k]=‘\0’; } 5. 请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。答案: void fun(int m,int *k,int xx[]) { int i,j; int n=0; for(i=4;i

全国计算机等级考试二级C语言考试大纲

二级C语言程序设计考试大纲 ㈠公共基础知识 基本要求 1. 掌握算法的基本概念。 2. 掌握基本数据结构及其操作。 3. 掌握基本排序和查找算法。 4. 掌握逐步求精的结构化程序设计方法。 5. 掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。 6. 掌握数据库的基本知识,了解关系数据库的设计。 考试内容 一、基本数据结构与算法 1. 算法的基本概念;(计算机算法分为数值运算和非数值运算算法。特性:有穷性、有效性、确定性、输入、输出) 算法复杂度的概念和意义(时间复杂度:程序运行从开始到结束所需要的时间。空间复杂度:程序运行从开始到结束所需存储量。)。 2. 数据结构的定义;数据的逻辑结构与存储结构(数据逻辑结构可以看作是从具体问题抽象出来的数学模型,它与数据的存储无关。数据在计算机中的映像称为物理结构,即存储结构,可采用顺序存储和链式存储的方法。);数据结构的图形表示;线性结构与非线性结构的概念(线性结构的特点是数据元素之间是一种线性关系数据元素一个接一个排列。)。 3. 线性表的定义;线性表的顺序存储结构及其插入与删除运算。 4. 栈和队列的定义;栈和队列的顺序存储结构及其基本运算。 5. 线性单链表、循环链表与双向链表的结构及其基本运算。 6. 树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。 7. 顺序查找与二分查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。 二、程序设计基础 1. 程序设计方法与风格。 2. 结构化程序设计。 3. 面向对象的程序设计方法,对象,方法,属性及继承与多态性。 三、软件工程基础 1. 软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。 2. 结构化分析方法,数据流图,数据字典,软件需求规格说明书。 3. 结构化设计方法,总体设计与详细设计。 4. 软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和

全国计算机C语言2级考试试题

1、有以下程序: 程序运行后的输出结果是( )。 A.1,2,6,24,120, B.1,2,3,4,5, C.1,1,1,1,1, D.1,2,4,6,8, 2、下列叙述中正确的是( )。 A.软件是程序、数据和文档 B.软件是程序和数据 C.软件是算法和数据结构 D.软件是算法和程序 3、语句prinff(”%d\n”,strlen(”\t\”\、、n\"\065\08AB”));的输出结果是( )。A.6 B.7 C.8 D.9 4、函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,函数不完整。 在if语句下划线处应填人的选项是( )。 A.O>s B.* P>*s C.a[p]>a[s] D.p—a>P—s 5、若有语句:int a[3][4],(。P)[4];P=a;,则以下选项中叙述错误的是()。 A.系统将开辟一个名为P的二维数组,“o][o]中的值即为a[o][o]中的值 B.P+1代表a[1][0]的地址 C.P中将存放a数组的首地址 D.P+2代表a数组最后一行的首地址 6、有以下程序:

程序运行后的输出结果是( )。 A.4,5,2,4,1,3, B.4,4,2,2,1,1, C.5,5,3,3,2,2, D.4,4,2,2,1,3 7、若有定义:int a,b,C;以下程序段的输出结果是( )。 a=11;b=3;C=0; pfinff(”%d\n”,c=(a/b,a%B.); A.2 B.0 C.3 D.1 8、若有定义:doublea,b,c;能正确给a,b,c输入数据的语句是( )。A.seanf(”%lf%1f%1P‘&a,&b,&C.; B.scanf(-t%f%f%f¨,&a,&b。&C.: C.scanf(”%If%lf%lf’,a,b,C.; D.scanf(”%lf%lf%lf'’,&a,&b,&C.; 9、有以下程序段: 以下选项中不能正确引用字符串的是( )。 A.3 B.p[3] C.str[2] D.*P 10、在最坏情况下,二分查找法的时间复杂度为( )。 11、有以下程序: 程序运行后的输出结果是( )。 A.2

2018计算机二级C语言考试真题汇总

模拟卷1 1 [填空题] 下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若s所指字符串为“baacda”,c中的字符为a,执行后S所指字符串为“baaaacdaa”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序:

参考解析: 【参考答案】 【解题思路】 填空1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘\0’。 填空2:while语句用以确定字符串的长度,所以变量n赋初值为0。 填空3:题目要求如果找到与参数c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为c。 二、程序修改题 2 [简答题] 下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII 值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。 例如,若主函数中a字符串为“aBCDeFgH”,b字符串为"Abcd",则c中的字符串应为“aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODl1.C中,不得增行或删行,也不得更改程序的结构! 参考解析: 【参考答案】 (1)int k=0; (2)while(*p||*q) 【考点分析】 本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。 【解题思路】 (1)变量k存放数组e的下标,因此应初始化为0。 (2)while循环语句的循环条件是判断两个字符串是否到达结尾。 三. 程序设计题 3 [简答题]

相关主题
文本预览
相关文档 最新文档