2011秋季江苏省计算机二级C语言试题与答案【本试卷的欠妥处】经过对2011秋江苏省C语言试卷仔细阅读和上机调试,本试卷卷面错误比2011春有较大改进。但还存在如下三处不足之处或命题欠妥处,有待改进:
1、选择题第25题,命题不正确,详见下面试卷剖析(底色:黄);
2、填空第5题,命题不正确,详见下面试卷剖析(底色:黄);
3、完善程序第14题命题的中文语法不严谨,“14.下列程序的功能是判断一个n阶对称方阵是否双对称矩阵”建议改为“14.下列程序的功能是判断一个n阶对称方阵是否为双对称矩阵”为妥。
【本试卷的网上答案与点评人答案差别:建议读者自己进行调试,判断那个答...
【本试卷的欠妥处】经过对2011秋江苏省C语言试卷仔细阅读和上机调试,本试卷卷面错误比2011春有较大改进。但还存在如下三处不足之处或命题欠妥处,有待改进:
1、选择题第25题,命题不正确,详见下面试卷剖析(底色:黄);
2、填空第5题,命题不正确,详见下面试卷剖析(底色:黄);
3、完善程序第14题命题的中文语法不严谨,“14.下列程序的功能是判断一个n阶对称方阵是否双对称矩阵”建议改为“14.下列程序的功能是判断一个n阶对称方阵是否为双对称矩阵”为妥。
【本试卷的网上答案与点评人答案差别:建议读者自己进行调试,判断那个答案更合适。】
1、 知识选择题第19题;
2、填空题第1、4、5、17、21、30题;
【试卷点评】与以往的江苏省高校计算机等级考试C语言笔试题相比,本次笔试试卷难度下降了5-10%。这也是广大考生所盼望的,但难度高于全国C试卷15-20%。建议对链
题下降难度,采用下面建议15题,采用完整
(底色:黄),以便于考生完整理解和答题。
【评者简介】苏州科技学院天平学院老师张柏雄(uuxzhang@21cn.com)。QQ:1035986156
【注意事项】
在搜集了近年的全国和江苏省高校计算机等级考试C语言笔试题基础上,通过解析,已将解析后的的试卷发布在www.docin.com网上。在此网上用“张柏雄”搜索或在百度网上用同样方式搜索也可,可获得近年来评者的全国和江苏省高校计算机等级考试C语言笔试题解、上机题解的word版。
1、 模拟江苏省和全国考试的上机环境:其上机题原始素材存储在“”网站上,可用Ctrl+点击“点击这里查看该用户更多公开文件...”,读者可免费上网下载有关文件进行练习。
网站www.njwww.net发布的2011年秋江苏省高校计算机二级C考试参考答案
一、选择题:
(1)B (2)B (3)B (4)A (5)D (6)B (7)A (8)B (9)D (10)C
(11)C(12)D (13)A (14)D (15)B (16)D (17)C (18)D (19) A (20)C
(21).D (22).C (23).A (24).D (25).B (26).A (27).C (28).A (29).D (30).C
二、填空题
(1)&H (2)do while (3)unsigned (4)2 (5)8
(6)Yellow (7)10 (8)1 (9)2 (10)0 2 3 (11)2 3 5 (12)7 11 13
(13)3 (14)1 (15)6 (16)6 (17)3 (18)Itis
(19)int x (20)n-1 (21)x[i] (缺22题答案)
(23)a[i][j] (24)a[i][j]!=a[j][i] (25)return 1 (26)a,n
(27)POT (28)head (29)p2->next (30)p->next
点评者答案:
一、计算机基础知识
1-5 B B B A D 6-10 B A B D C
11-15 C D A D B 16-20 D C D C C
二、C语言程序设计
选择21-25 D C A D B 26-30 A C A D C
填空(1). 0x (2). do-while (3). unsigned (4). 2.000000 (5). 4.
阅读程序(6). Yellow (7) 10 (8) 1 (9) 2 (10) 0 2 3 (11) 2 3 5 (12) 7 11 13
(13) 3 (14) 1 (15) 6 (16) 6 (17) 2 (18) Itis
完善程序 (19) int x[] (20) n-1 (21) x[i]
next (30) head
第一部份 计算机基础知识
1、下列有关信息、信息处理、信息技术的叙述中,错误的是___1_____。
A 信息与物质、能量是客观世界的三大构成要素
B. 与信息处理相关的行为和活动主要是指信息的分类、计算、分析等,但不包含信息的收集和传递
C. 现代信息技术的主要特征之一是以数字技术为基础
D. 计算机技术、通信技术均属于信息技术
第1题注释:信息技术处理包括了信息的发集、加工(分类、计算、分析等)、存储、传递和施用。
2、下列有关数字技术和微电子技术的叙述中,错误的是____2______。
A. 数字技术是采用有限个状态(主要是两个状态)来表示、处理、存储和传输信息的技术
B. 比特是信息的基本单位,1个比特可以表示为8位二进制数
C. 集成电路芯片是微电子技术的结晶,是现代信息产业的基础
D. Moore定律是指“单块集成电路的集成度平均每18-24个月翻一番”
第2题注释:字节为8位二进制数所组成。
选项D更正:根据国外网站陈述,Moore定律是:In 1965, Intel co-founder, Goorden Moore states that the number of transistors on a chip doubles about two years.(单片半导体芯片的集成度约为两年翻一番。)所以国内所有教科书的阐述:“每18-24个月翻一番”均为谬传,应予以更正。
3、下列有关计算机计算机发展与分类的叙述中,错误的是__3___。
A. 数字电子计算机诞生于20世纪40年代,个人计算机(微型计算机)产生于20世纪80年代初
B. 第4代计算机的CPU主要采用中小规模集成电路,第5代计算机的采用大规模集成电路
C. 计算机分类有多种方法,按其内部逻辑结构通常分为16位机、32位机或64位机等,目前使用的PC机大多是32位机或64位机
D. 巨型计算机一般采用大规模并行处理的体系结构,我国国防大学研制的“天河1号”巨型计算机,其性能可在全球巨型机排行榜中位居前10名
4、下列有关PC机微处理器的叙述中,错误的是_____4____。
A. 目前PC机所用的各种微处理器均由Intel公司设生产
B. 微处理器通常由单片集成电路制成
C. 一台高性能PC机中通常包含多个微处理器
D. 台式PC机与笔记本PC采用的微处理器通常有所不同
第4题注释:PC机所用的各种微处理器主要有Intel和AMD两大类。
5、下列有关PC机主板和芯片组的叙述中,错误的是___5_____。
A. 台式PC机主板的物理尺寸已经化
B. 有些主板将声卡、网卡、显卡的功能均集成在其中
C. 芯片组是PC机各组成部分相互连接和通信的枢纽,它们与CPU芯片以及I/O接口同步发展
D. PC机主板上可安装的内存条类型及内存最大容量与芯片组无关
第5题注释:南大“大学计算机信息技术教程(第5版修订本)”P49,芯片组还决定了所能安装的内存最大容量、速度及可使用的内存条的类型。
6、下列是PC机常用的四种外设接口,其中适合于连接硬盘和光驱的是___6_____。
A. RS-232 B. SATA C.IEEE-1394 D.VGA
第6题注释:南大“大学计算机信息技术教程(第5版修订本)”P56,RS-232是是标准串行口,可接鼠标器;IEEE-1394可接数字视频设备;VGA可接显示器;SATA可接硬盘和光驱。
7、下列有关显示器、显示卡、打印机的叙述中,错误的是____7_____。
A. 目前常见的“宽屏”LCD显示器,其屏幕的宽度与高度之比为4:3
B. 对于集成显卡来说,显卡的功能主要是由主板上的芯片组来实现的
C. 无论是针式打印机,还是激光/喷墨打印机,均有黑白打印机与彩色打印机之分
D. 打印机的主要性能指标之一是打印速度,其单位为PPM
第7题注释:南大“大学计算机信息技术教程(第5版修订本)”P65,传统显示器的宽度与高度之比一般为4:3,现在多数LCD的宽高比为16:9或16:10
8、下列有关光盘存储器的叙述中,错误的是____8______。
A. DVD光盘刻录机可以刻录光盘有CD-R、CD-RW、DVD-R和DVD-RW等类型
B.组合光驱(“康宝”)组合了CD刻录机与DVD刻录机的功能
C. 蓝光光驱(BD)使用蓝色激光在光盘上读写信息
D. 光盘刻录机的读/写速度通常是不同的,一般来说读取信息速度快于刻录速度
第8题注释:南大“大学计算机信息技术教程(第5版修订本)”P75,“康宝”的英文是CD-RW/DVD-ROM,简称COMBO。
9、按照软件著作权益的处置方式,软件可分为商品软件、共享软件、自由软件等类型。在下列相关的叙述中,错误的是___9_____。
A. 商品软件需要用户付费才能得到其使用权
B. 共享软件是具有版权的软件,允许用户有条件的使用
C. 自由软件允许使用者随意拷贝、传播、允许修改其源代码但必须公开修改
D. 共享软件、自由软件均属于免费软件
第9题注释:南大“大学计算机信息技术教程(第5版修订本)”P109,共享软件是一种“买前免费试用”的具有版权的软件,通常允许用户试用一段时间,过了试用期,交注册费后才能使用,只有自由软件才是免费软件。
10、下列有关Windows操作系统的叙述中,错误的是_____10_____。
A. Windows XP和Windows 7均分为32位版本和64位版本
B. 一般来说,能安装Windows 7的PC机也能安装Windows XP
C. 无论Windows XP还是Windows 7,其家庭版(基本版)均不支持多核处理器
D. 目前来看,Windows 比UNIX更容易受到病毒的侵扰
第10题注释:南大“大学计算机信息技术教程(第5版修订本)”P120叙述的内容
11、下列有关算法的叙述中,错误的是____11____。
A. 通俗地说,算法就是解决问题的方法和步骤
B. 算法总是在执行有限步的操作后终止
C. 程序是算法的实现,程序与算法是一一对应的
D. 算法解决的往往一类问题而不是一个特定的问题
第11题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P121-122的内容,采取排除法获得。也可参考2011春江苏省高校计算机等级笔试题目。
12、在下列Microsoft Office 2000(及以后续版本)的叙述中,错误的是____12____。
A. 由Word创建的文档,用户可以直接将其保存为HTML文件(即网页)
B. 在Excel中,用户可以直接打开一些数据库中的表文件(例如DBF文件)
C. 在Frontpage的“代码”视图中,用户可以直接对HTML网页进行编辑
D. 在Access数据库中,每个表可以有多个主键
第12题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P293,数据库每个二维表有一个重要的要求:必须确定惟一的主键来区分二维表中不同的元组。
13、在下列是与通信传输介质相关的叙述中,错误的是___13____。
A. 目前家用的电话线属于五类双绞线
B. 目前入户的有线电视电缆属于宽带同轴电缆
C. 光纤是光导纤维的简称,光纤的纤芯是细石英玻璃丝
D. 微波是一种电磁波,它具有类似光波的特性,在空间主要是直线传播
第13题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P150-151,五类双绞线主要用在计算机局域网中。
14、因特网中IP地址可以分为A类、B类、C、类D类等。在下列4个IP地址中,属于C类地址是___14____。
A. 28.129.200.19 B. 88.129.200.19 C. 188.129.200.19 D.222.129.200.19
第14题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P175,以IP地址的首字节值区分:0-127为A类;128-191为B类;192-223为C类。
15、在下列有关IP地址与域名的叙述中,错误的是___15_____。
A. 目前使用的IP主要是IPv4协议,其中IP地址长度为32位
B. 因特网是多个网络互联而成的,不同网络中的主机可以具有相同的IP地址
C. 域名是IP地址的文字表述形式,但不是所有的IP地址均有相应的域名
D. 一个IP地址可以有多个对应的域名
第15题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P181,通常一台主机只有一个IP地址,但可以有多个域名,主机从一个物理网络移到另一个网络时,其IP地址必须更换!
16、通常所说的TCP/IP协议,是指由100多个协议组成的协议系列(包含下列几个协议)。在下列协议中,发送电子邮件主要依赖____16_____。
A. HTTP协议
B. FTP协议
C. Telnet协议
D. SMTP协议
第16题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P188,SMTP是指(Simple Mail Transfer Protocol)简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则;HTTP是指超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议;FTP是指文件传输协议(File Transfer Protocol, FTP)是一个用于在两台装有不同操作系统的机器中传输计算机文件的软件标准;Telnet是指Internet远程登陆服务的标准协议和主要方式。
17、下列有关采用ADSL技术接入因特网叙述中,错误的是____17_______。
A.计算机中需要安装(集成)以太网卡
B. 需要使用专用的ADSL MODEM设备
C. 上行与下行传输速率相同,传输速率可达100Mbps
D. 可传输数据、音频、视频等信息
第17题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P183,ADSL利用普通电话线作为介质,实现三条信息通道:一条为为电话服务的语音通道;一条速率为64kbps-256kbps的上行数据通道;一条速率为1Mbps-8Mbps的高速下行通道。
18、下列有关汉字字符集及其编码的叙述中,错误的是___18___。
A. GB2312是我国颁布的第一个汉字编码国家标准,该标准包含了6000多个汉字
B. GB2312的所有字符在计算机内部都采用2个字节来表示
C. GBK收录了包括繁体字在内的20000多个汉字和符号,它向下兼容GB2312
D. GB18030是我国最新颁布的汉字编码标准,它与GB2312和GBK均不兼容
第18题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P228,进入21世纪后,我国发布并开始执行新的GB18030汉字国家编码标准。GB18030一方面与GB2312和GBK保持向下兼容性。。。。。。
19、语音在数字化时常用的取样频率为8kHz,量化位数为8bits。若声道数为2,则每分钟的数字语音数据量在未压缩量大约为___19____。
A. 64KB
B.128KB
C. 1MB
D. 2MB
第19题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P248,
波形声音的码率=取样频率×量化位数×声道数=8×8×2=128kb/s。
换算为每分钟的兆字节为128×000×60/8/1024/1024=0.9155MB/m≈1MB/m
20、数字图像文件有多种文件类型,不同类型的文件各有其特点。在下列4种文件类型中,能够将多种图片保存在一个文件中且能产生动画效果的是__20__。
A. BMP
B. JPG
C. GIF
D. PNG
第20题注释:根据南大“大学计算机信息技术教程(第5版修订本)”P239,GIF的突出的是,它可以将多张图像保存在同一个文件中,显示时按按预先规定的时间间隔逐一进行显示,形成动画效果。
第二部份 C语言程序设计
一、选择题(用答题卡答题,答案依次填在21~30答题号内,共10分)
21、某程序需要使用一个代表常数3.14的符号常量名P,以下定义中正确的是____(21)_____。
A. #define P 3.14; B. #define P(3.14)
C. #define P =3.14; D. #define P 3.14
22、下列四个选项中,属于C语言关键字的是______(22)_______。
A. Float B. single
C. double D. real
第22题注释:清华大学出版社“C程序设计”P365附录B规定只有32个小写的关键字,除此以外均不是关键字:包括附录B的大写字等等。本题附合要求的只有答案C
23、已知某编译系统中signed int 类型数据长度是16位,该类型数据的最大值是___(23)____。
A. 32767 B. 32768 C. 127 D. 65535
第23题注释: 此题signed int 类型数据长度是16位,意指TC3.0环境,在VC++6.0数据长度是32位。所以最大值=215-1=32767(清华大学出版社“C程序设计”P43表3-1)
24、以下关于if语句和switch语句的叙述中错误的是__(24)___。
A. if语句和switch语句都可以实现算法的选择结构
B. if语句和switch语句都能实现多路(两路以上)选择
C. if语句可以嵌套使用
D. switch语句不能嵌套使用
第24题注释:清华大学出版社“C程序设计”P104说明。switch语句多路功能都能用if语句实现嵌套处理,但程序冗长。switch语句无法实现嵌套嵌套使用。
25、已知声明“char *s1="China",s2[10],*s3="Nanjing",*s4;”,以下字符串赋值语句在执行时可能出现错误的是__(25)__。
A. strcpy(s3,s1); B. strcpy(s4,s1); C. strcpy(s2,s1); D. strcpy(s2,s3);
第25题注释:清华大学出版社“C程序设计”P:374和P251。字符串数组变量在定义和初始化时,s2[10]形式可以在初始化不赋值;但*s4形式初始化不赋值,在采用strcpy(s4,s1);时在编译时会产生“local variable 's4' used without having been initialized”警告,无法得出结果;而非编译错误。
建议该题正确命题是:已知声明“char *s1="China",s2[10],*s3="Nanjing",*s4;”,以下字符串赋值语句在执行时可能不能获得显示结果的是__(25)__。
26. 已有声明“int x=0,*p=&x;”,以下语句中有语法错误的是_______(26)_____。
A. printf("%d",*x); B. printf("%d",&x); C. printf("%d",*p); D. printf("%d",x);
第26题注释:清华大学出版社“C程序设计”P:221。变量x的值可以有如下形式输出:
x *p ;&x指输出变量x所在的地址;*x错误的原因是x是变量,不是指针!!编译时会产生“error C2100: illegal indirection”非法重定向的致命错误!
27. 以下叙述错误的是_____(27)_____。
A. 在函数外可以声明变量
B. 变量声明的位置决定了该变量名的使用范围
C. 函数调用时在函数内声明的变量所得到的值将无法保存到该函数的下一次调用
D. 在函数外声明的变量,其值可以保存到该程序运行结束
第27题注释:清华大学出版社“C程序设计”P:195。在被函数中含static声明的变量,具有两大特征:不初始化赋值,自动取0;每次函数调用开始,该项变量的起始值为上一次最终运行的结果。
28. 已有声明“int t=1;”,则执行printf("%d",(t+5,t++));时输出的结果是___(28)________。
A. 1 B. 6 C. 2 D. 7
第28题注释:清华大学出版社“C程序设计”P65逗号表达式;P57自增、自减运算符
29. 已有声明“static char *p="Apple";”,则执行puts(p+2));时输出结果是___(29)____。
A. Apple B. Cpple C. pple D. ple
30. 以下选区项均欲声明变量p,其中错误的是:___(30)____。
A. typedef struct Person B. struct Person
{ char name[20]; { char name[20];
int age; int age;
}Per; };
Per p; struct Person p;
C. struct D. struct
{ char name[20]; { char name[20];
int age; int age;
}Per; }p;
Per p;
第30题注释:清华大学出版社“C程序设计”P282和P315。按照结构体定义规定C.定义中Per是结构体变量,不是结构体变量类型,不准对其他变量定义!
二、填空题(请将答案填写在答题纸的相应答题号内,每个答案只占一行,共30分)
● 基本概念
1、 C语言源程序中用十六进制表示整型常数必须以______(1)___开头。 (0x)
第1题注释:清华大学出版社“C程序设计”P48表3-3。记住字符常量六种表示形式,可以推论所有结果:以'A'为例,一种存储格式;六种赋值格式;三种输出格式。
存储在计算机存储器形式:0100 0001
用%d输出:65 用%x输出:41 用%c输出:A
用十六进制形式赋值:char x=0x41; 或 char x= '\x41 ';
用八进制形式赋值:char x=0101; 或 char x= '\101 ';
用十进制形式赋值:char x=65; 或 char x= 'A';
由此推论本题答案为:0x
2、 如果一个循环结构体至少要执行一遍,则最适合描述该循环结构的语句是_______(2)___语句。(do while)
第2题注释:在三种循环语句(do {}while();,while(){},for())中后两种都要判别条件是否满足才能开始循环;而第一种循环,先做第一次循环体,后根据条件来判别跳出,还是继续做循环。
3、若要声明一个无符号整型变量x,则正确的声明形式是“___(3)___int x;”。(unsined)
第3题注释:清华大学出版社“C程序设计”P43表3-1。
4、已有声明“int n=12;double a=n/=5;”后,a的值为_______(4)_________。(2.000000)
第4题注释:清华大学出版社“C程序设计”P56。要理解C语言运算的“左结合性”,还是“右结合性”。符合右结合性的有:赋值运算符、自加或自减运算符。这里等于,先运算n=n/2;后n赋为2,后来以2赋给双精度变量a,所以其值为2.000000
5、若有数据类型定义如下:
union A{float a1;float a2;};
则表达式sizeof(union A)的值是_______(5)___。(4)
第4题注释:清华大学出版社“C程序设计”P308。union为共同体,它有三种标准定义:
union A{float a1;float a2; }a,b,c;
union A{float a1;float a2; }; union A a,b,c;
union {float a1;float a2; }a,b,c;
共同体所占内存容量是它的成员最长字节数,所以答案是4。
sizeof的功能:能测试变量、表达式、类型说明符在内存中所占的空间(单位:字节):
printf("%d\n",sizeof(int)); 对于TC30显示为2;对于VC++则为4
printf("%d\n",sizeof(float));其显示值为4
printf("%d\n",sizeof(double));其显示值为8
第5题命题欠妥处:A是共同体名,不是变量,而sizeof()测试要求是变量、表达式、类型说明符,否则出现编译错误!!
此题建议改为:
若有数据类型定义如下:
union A{float a1;float a2;}B;
则表达式sizeof(B)的值是_______(4)___。
调试程序:
include
void main()
{ union A{float a1;float a2;} B; printf("%d\n",sizeof(B));} 显示为4
见下面在VC++环境下调试结果:
● 阅读程序(13分)
6、以下程序运行时,输出到屏幕的结果为_______(6)___。
#include
enum color{BLACK,YELLOW,BLUE=3,GREEN,WHITE};
void main()
{ char *colorname[]={"Black","Yellow","Blue","Green","White " };
enum color c1=GREEN,c2=BLUE;
printf("%s",colorname[c1-c2]);
}
(答案:(6) Yellow)
7. 以下程序运行时,输出到屏幕的结果是_____(7)_____。
#include
void main()
{ int a=0,b=1,d=10;
if(a)
if(b)
d=20;
else d=30;
printf("%d\n",d);
}
(答案:(7) 10)
8. 以下程序运行时,输出到屏幕的结果中第一行是_____(8)_____,第二行是___(9)___。
#include
void fun(int a,int *b)
{ a++;
(*b)++;
}
void main()
{ int a[2]={1,1};
fun(a[0],&a[1]);
printf("%d\n%d ", a[0],a[1]);
}
(答:(8) 1 (9) 2)
第8、9填空注释:函数调用时形参与实参的结合原则:只有共用地址才能返回变量值。a[0]无法返回;而a[1]采用实参&a[1]、形参*b,达到共用地址,调用结束返回运算结果。
9. 以下程序运行时,输出到屏幕的结果中第一行是_____(10)____,第二行是_____(11)____,第三行是_____(12)____。
#include
#include
void main()
{ int a[100]={0},i,j,k;
for(i=1;i<100;i++) a[i]=i+1 ;
printf("%4d%4d%4d\n", a[0],a[1],a[2]);
for(j=1;j<100;j++)
{ if(a[j] !=0)
for(k=j+1 ;k<100 ;k++)
if(a[k]%a[j]==0) a[k]=0 ;
}
for(k=1,i=0 ;k<100 ;k++)
if(a[k] !=0)
{ printf("%4d ", a[k]);
i++;
if(i%3==0) printf("\n ");
}
}
(答案为(10)_0 2 3 (11) 2 3 5 (12)) 7 11 13
第10、11、12填空注释:首先给数组a赋初值 0 2 3 4 5 6 7 8 9 10,第一行显示为:0 2 3。进而对值为非素数,一律置0。最后输出非0的素数。2 3 5 7 11 13。。。。。
10. 以下程序运行时,输出到屏幕的结果是第一行是__(13)___,第二行是___(14)___。
#include
#include
int fun(int a,int b)
{ int n;
while(a!=b)
{ n=abs(a-b);
a=(a>b)?b:a;
b=n;
}
return a;
}
void main()
{ printf("%d\n%d\n ", fun(9,15),fun(9,5)); }
(答案:(13) 3 (14) 1 。)
第13、14填空注释:此题看起来容易,理解起来较难,最好办法用列表法一步一步写下来(见上图所示):函数fun第一次调用,为获得a==b,经历了3次才满足a==b,即n、a、b均为3时返回;第二次调用函数fun,经历了5次才满足a==b,即n、a、b均为1时返回。
11.以下程序运行时,输出到屏幕的结果中第一行是____(15)_____,第二行是_____(16)____。
#include
int fun1(int p[], int n)
{ int i,s=0;
for(i=0;i
#include
int fun(char str[])
{ int i,j,len;
len=strlen(str);
for(i=0,j=0;str[i];i++)
if(str[i]>= 'A'&& str[i]<= 'Z'|| str[i]>= 'a'&& str[i]<= 'z')
str[j++]=str[i];
str[j]= '\0';
return len-j;
}
void main()
{ char ss[80]= "It23is";
int n; n=fun(ss);
printf("\%d\n%s\n",n,ss);
}
(答案:第一行是(17) 2 第二行是(18) Itis )
第17、18填空注释:此题函数fun1调用的字符串处理比较简单。
● 完善程序(12分)
13. 以下程序中judge函数的功能是判断x指向的int类型数组(长度为n)中各元素之间的逻辑关系。若n个元素的值均相等则输出“all elements are same”;若n个元素的值无序则输出“no order”;若n个元素的值按升序排列则输出“ascend”;若若n个元素的值按降序排列则输出“descend”。
#include
void judge(__(19)___, int n)
{ int f,i=0;
while(ix[i+1]||!f&&__(21)___)
{ printf("\n no order"); return;}
if(__(22)___) printf("\n ascend");
else printf("\n descend");
}
void main()
{ int a[5]={1,2,3,4,5},b[5]={5,4,3,2,1},c[5]={1,4,2,3,5},d[5]={2,2,2,2,2};
judge(a,5);
judge(b,5);
judge(c,5);
judge(d,5);
}
(答案: (19)是 int x[] (20)是 i==n-1 (21)是 x[i]
#define N 10
void exchange(int a[][N], int n)
{ int i,j,t;
for(j=0;jnext!=NULL)
{ p1=p;
p2=p->next;
while(p2!=NULL)
{ if(p2->x==p->next)
{ p1->next=__(29)__;
free(p2);
p2=p1->next;
}
else
{ p1=p2;
p2=p2->next;
}
}
p=__(30)__;
}
return head;
}
答案:(27):POT (28):head (29):p2->next (30):head
链表调试程序
#include
#include /*free库函数需要*/
typedef struct point
{ int x;
struct point *next;
}POT;
POT *deletelist(POT *head)
{ POT *p,*p1,*p2; /*输入返回链表head,*/
p=head; /*head与p同一链表,但head不动,p移动并删除重复结点*/
while(p->next!=NULL)
{ p1=p;
p2=p->next;
while(p2!=NULL)
{ if(p2->x==p->x)
{ p1->next=p2->next;
free(p2);
p2=p1->next;
}
else
{ p1=p2;
p2=p2->next;
}
}
p=p->next; /*p移向下一个结点*/
}
return head;
}
POT *creatlist(int a[],int n) /*建立链表,参考2011年9月17日全国C上机第六题*/
{ POT *h,*p,*q; int i;
h=p=(POT *)malloc(sizeof(POT));
for(i=0; ix=a[i]; p->next=q; p=q;
}
p->next=0;
return h;
}
void outlist(POT *h) /*输出链表,参考2011年9月17日全国C上机第六题*/
{ POT *p;
p=h->next;
if (p==NULL) printf("The list is NULL!\n");
else
{ printf("\nHead ");
do
{ printf("->%d",p->x); p=p->next; }
while(p!=NULL);
printf("->End\n");
}
}
void main()
{ int a[20]={1,2,3,3,4,4,5,5,6,6,6},n=11;
POT *h1,*h3;
h1=creatlist(a,n); /*生成h1链表*/
printf("Output the original linking table");
outlist(h1); /*输出原始链表*/
printf("Output the result");
h3=deletelist(h1);
outlist(h3); /*输出无重复结点的链表*/
}
【调试结果】调试环境:TC30
15题建议,重点考核链表的指针移动、函数调用等。
15. 函数*creatlist(int a[],int n)是对主函数中数组a[20]建成链表功能;函数outlist(POT *h)的功能是输出链表到屏幕;函数deletelist的功能:在head指向的单向链表中查找是否出现多个x值相同的结点。如果发现存在这样的结点,则保留第一个结点,删除其他重复出现的结点。
#include
#include /*free库函数需要*/
typedef struct point
{ int x;
struct point *next;
}__(27)__;
POT *deletelist(POT *head)
{ POT *p,*p1,*p2; /*输入返回链表head,*/
p=head; /*head与p同一链表,但head不动,p移动并删除重复结点*/
while(p->next!=NULL)
{ p1=p;
p2=p->next;
while(p2!=NULL)
{ if(p2->x==p->x)
{ p1->next=p2->next;
free(p2);
p2=p1->next;
}
else
{ p1=p2;
p2=p2->next;
}
}
p=__(28)__; /*p移向下一个结点*/
}
return head;
}
POT *creatlist(int a[],int n) /*建立链表,参考2011年9月17日全国C上机第六题*/
{ POT *h,*p,*q; int i;
h=p=(POT *)malloc(sizeof(POT));
for(i=0; ix=a[i]; p->next=q; p=q;
}
p->next=0;
return h;
}
void outlist(POT *h) /*输出链表,参考2011年9月17日全国C上机第六题*/
{ POT *p;
p=h->next;
if (p==NULL) printf("The list is NULL!\n");
else
{ printf("\nHead ");
do
{ printf("->%d",p->x); p=__(29)__; }
while(p!=NULL);
printf("->End\n");
}
}
void main()
{ int a[20]={1,2,3,3,4,4,5,5,6,6,6},n=11;
POT *h1,*h3;
h1=creatlist(a,n); /*生成h1链表*/
printf("Output the original linking table");
outlist(h1); /*输出原始链表*/
printf("Output the result");
h3=deletelist(__(30)__);
outlist(h3); /*输出无重复结点的链表*/
}
本文档为【2011秋季江苏省计算机二级C语言试题与答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。