欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】全国计算机等级考试二级C语言真题2005年9月及答案解析.doc

    • 资源ID:1329713       资源大小:118.50KB        全文页数:21页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】全国计算机等级考试二级C语言真题2005年9月及答案解析.doc

    1、全国计算机等级考试二级 C 语言真题 2005 年 9 月及答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.下列叙述中正确的是 _。(分数:1.00)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试D.程序经调试改错后不必进行再测试2.下列数据结构中,能用二分法进行查找的是 _。(分数:1.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表3.下列关于栈的描述正确的是 _。(分数:1.00)A.在栈中能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的

    2、线性表,只能在一端插入或删除元素D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素4.下列叙述中正确的是_。(分数:1.00)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响5.下列描述中正确的是 _。(分数:1.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D.软件工程只是解决软件开发中的技术问题6.在软件设计

    3、中,不属于过程设计工具的是 _。(分数:1.00)A.PDL(过程设计语言)B.PAD 图C.N-S 图D.DFD 图7.下列叙述中正确的是 _。(分数:1.00)A.软件交付使用后还需要进行维护B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令8.数据库设计的根本目标是要解决(分数:1.00)A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护9.设有如下关系表 _。 (分数:1.00)A.B.C.D.10.数据库系统的核心是 _ 。(分数:1.00)A.数据模型B.数据库管理系统C.数据库D.数据库管理员11.以下

    4、叙述中错误的是 _。(分数:1.00)A.用户所定义的标识符允许使用关键字B.用户所定义的标识符应尽量做到“见名知意”C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识12.以下叙述中错误的是 _。(分数:1.00)A.C 语句必须以分号结束B.复合语句在语法上被看作一条语句C.空语句出现在任何位置都不会影响程序运行D.赋值表达式末尾加分号就构成赋值语句13.以下叙述中正确的是 _。(分数:1.00)A.调用 printf 函数时,必须要有输出项B.使用 putchar 函数时,必须在之前包含头文件 stdihC.在 C 语言中,整数可以以十二进制、八

    5、进制或十六进制的形式输出D.调用 getchar 函数读入字符时,可以从键盘上输入字符所对应的 ASCII 码14.以下关于函数的叙述中正确的是 _。(分数:1.00)A.每个函数都可以被其他函数调用(包括 main 函数)B.每个函数都可以被单独编译C.每个函数都可以单独运行D.在一个函数内部可以定义另一个函数15.若有语句 char *line5;,以下叙述中正确的是 _。(分数:1.00)A.定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量B.定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组C.定义 line 是一个指针数组,语句中的

    6、*号称为间址运算符D.定义 line 是一个指向字符型函数的指针16.有以下程序段: typedef struct NODE int num; struct NODE *next; OLD; 以下叙述中正确的是 _。(分数:1.00)A.以上的说明形式非法B.NODE 是一个结构体类型C.OLD 是一一个结构体类型D.OLD 是一个结构体变量17.以下叙述中错误的是_。(分数:1.00)A.C 语言中对二进制文件的访问速度比文本文件快B.C 语言中,随机文件以二进制代码形式存储数据C.语句 FILE fp:定义了一个名为 fp 的文件指针D.C 语言中的文本文件以 ASCII 码形式存储数据1

    7、8.当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是 _。(分数:1.00)A.k%2B.k%2=1C.(k%2)!=0D.!k%2=119.以下不能正确计算代数式 1/3sin2(1/2)值的 C 语言表达式是 _。(分数:1.00)A.1/3*sin(1/2)*sin(1/2)B.sin(0.5)*sin(0.5)/3C.pow(sin(0.5),2)/3D.1/3.0*pow(sin(1.0.2),2)20.以下能正确定义且赋初值的语句是 _。(分数:1.00)A.int n1=n2=10;B.char c=32;C.float f=f+1.

    8、1;D.double x=12.3E2.5;21.以下程序的功能是:给 r 输入数据后计算半径为 r 的圆面积 s,程序在编译时出错。 main() /* Beginning */ int r;float s; scanf(“%d“, printf(“%d/n“,y); 程序运行后的输出结果是 _。(分数:1.00)A.10B.11C.14D.1538.有以下程序: void sort(int a,int n) int i,j,t; for(i=0;in;i+) for(j=i+1;n;j+) if(aiaj) t=ai; ai=aj; aj=t; main() int aa10=1,2,3,

    9、4,5,6,7,8,9,10,i; sort(aa+2,5); for(i=0;i10;i+)printf(“%d,“,aa i);printf(“/n“); 程序运行后的输出结果是 _ 。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.1,2,7,6,3,4,5,8,9,10,C.1,2,7,6,5,4,3,8,9,10,D.1,2,9,8,7,6,5,4,3,10,39.有以下程序: void sum(int a) a0=a-1+a1; main() int a10=1,2,3,4,5,6,7,8,9,10; sum(c10=t; void swap2(int *c0,

    10、iht *c1) int t; t=*c0; *c0=*c1; *c1=t; main() int a2=3,5,b2=3,5; swapl(a,a+1); swap2(jn;j+) if strcmp(pi,pj)0t=pi pi=pj; pj=t; main() char* p5=(“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“; f(p,5); printf(“%d/n“,strlen(p1); 程序运行后的输出结果是 _。(分数:1.00)A.2B.3C.6D.443.有以下程序: #includestring.h void f(char *s,char *t)

    11、char k; k=*s; +s=*t; *t=k; S+; t-; if(*s) f(s,t); main() char.str10=“abcdefg“,*p; p=str+strlen(str) /2+1; f(p,p-2); printf(“%s/n“,str); 程序运行后的输出结果是 _。(分数:1.00)A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg44.有以下程序: float f1(float n) return n*n; float f2(float n) return 2*n; main() float(*p1)(float),(*p2)(floa

    12、t),(*t)(float),y1,y2; p1:f1; p2=f2; y1=p2(p1(2.0); t=p1; p1=p2; p2=t; y2=p2(p1(2.0); printf(“%3.0f,%3.0f/n“,y1,y2); 程序运行后的输出结果是 _。(分数:1.00)A.8, 16B.8, 8C.16, 16D.4, 845.有以下程序: int a=2; int f(int n) static int a=3; int t=0; if(n%2)static int a=4;t+=a+; else static int a=5; t+=a+; return t+a+; main()

    13、int s=a,i; for(i=0;i3;i+) s+=f(i); printf(“%d/n“,s); 程序运行后的输出结果是 _。(分数:1.00)A.26B.28C.29D.2446.有以下程序: #include strino.h struct STU int num; float TotalScore; ; void f(struct STU p) struct STU s2=20044,550,20045,537; pnum=s1num;pTotalScore=s1TotalScore; main() struct STU s2=20041,703,20042,580; f(s0)

    14、; printf(“%d%3.0t/n“,s0num,s0TotalScore); 程序运行后的输出结果是 _。(分数:1.00)A.20045 537B.20044 550C.20042 580D.20041 70347.有以下程序: #include string.h struct STU (char name10; int num; ; void f(char *name, int num) struct STU s2=“SunDan“,20044“Penghua“,20045; num=s0num; strcpy(name,s0name); main() struct STU s2=“

    15、YangSall“,20041,“LiSiGao“,20042,*p;p= int sum=0; s0next=s+1;s1next=s+2;s2next=s; p=s; q=p-next; r=q-next; sum+=q-next-num; sum+=r-next-next-num; printf(“%d/n“,sum); (分数:2.00)填空项 1:_67.以下程序的功能是输出如下形式的方阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 请填空。 main() int i,j,x; for(j=4;jU 【17】/U;j-) for(i=1;i=4;i

    16、+) x=(j-1)*4 +U 【18】 /U; printf(“%4d“,x); printf(“/n“); (分数:2.00)填空项 1:_68.以下函数 rotate 的功能是:将 a 所指 N 行 N 列的二维数组中的最后一行放到 b 所指二维数组的第 0 列中,把 a 所指二维数组中的第 0 行放到 b 所指二维数组的最后一列中,b 所指二维数组中的其他数据不变。#define N 4 void rotate(int aN,int bN int i,j; for(i=0;iN;i+) biN-1=U 【19】 /U;U 【20】 /U=aN-1i; (分数:2.00)填空项 1:_全

    17、国计算机等级考试二级 C 语言真题 2005 年 9 月答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.下列叙述中正确的是 _。(分数:1.00)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试 D.程序经调试改错后不必进行再测试解析:评析程序调试的任务是诊断和改正程序中的错误,改正以后还需要再测试。2.下列数据结构中,能用二分法进行查找的是 _。(分数:1.00)A.顺序存储的有序线性表 B.线性链表C.二叉链表D.有序线性链表解析:评析;二分法查找只适用于顺序存储的有序表。在此所说的有序表

    18、是指线性表中的元素按值非递减排列(即从小到大,(即从小到大,但允许相邻元素值相等)。3.下列关于栈的描述正确的是 _。(分数:1.00)A.在栈中能插入元素而不能删除元素B.在栈中只能删除元素而不能插入元素C.栈是特殊的线性表,只能在一端插入或删除元素 D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素解析:评析;栈实际上也是线性表,只不过是一种特殊的线性表。在这种特殊的线性表中,其插入和删除只在线性表的一端进行。4.下列叙述中正确的是_。(分数:1.00)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结

    19、构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响 解析:评析一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。5.下列描述中正确的是 _。(分数:1.00)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D.软件工程只是解决软件开发中的技术问题解析:评析软件工程是计算机软件开发和维护的工程学科,它采用工程的概念原理、技术和方法来开发和维护软件,它把经过时

    20、间考验而证明正确的管理技术和当前能够得到的最好技术结合起来。6.在软件设计中,不属于过程设计工具的是 _。(分数:1.00)A.PDL(过程设计语言)B.PAD 图C.N-S 图D.DFD 图 解析:评析软件设计工具包括:程序流程图、N-S、PAD、H1PO,判定表,PDL(伪码)。而 DFD(数据流图)属于结构化分析工具。7.下列叙述中正确的是 _。(分数:1.00)A.软件交付使用后还需要进行维护 B.软件一旦交付使用就不需要再进行维护C.软件交付使用后其生命周期就结束D.软件维护是指修复程序中被破坏的指令解析:评析软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据

    21、新提出的需求进行必要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的过程。8.数据库设计的根本目标是要解决(分数:1.00)A.数据共享问题 B.数据安全问题C.大量数据存储问题D.简化数据维护解析:评析由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享本身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。因此,数据库设计的根本目标是要解决数据共享问题。9.设有如下关系表 _。 (分数:1.00)A.B. C.D.解析:评析 从图中可以看出,关系

    22、 T 是关系 R 和关系 S 的简单合并,而合并的符号为 u,所以答案为T=RUS。10.数据库系统的核心是 _ 。(分数:1.00)A.数据模型B.数据库管理系统 C.数据库D.数据库管理员解析:评析数据库管理系统 DBMS 是数据库系统的核心。DBMS 是负责数据库的建立、使用和维护的软件。DBMS 建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过 DBMS。另外,DBMS 还承担着数据库的安全保护工作,按照 DBA 所规定的要求,保证数据库的完整性和安全性。11.以下叙述中错误的是 _。(分数:1.00)A.用户所定义的标识符允

    23、许使用关键字 B.用户所定义的标识符应尽量做到“见名知意”C.用户所定义的标识符必须以字母或下划线开头D.用户定义的标识符中,大、小写字母代表不同标识解析:评析C 语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应做到“见名知意”,且不允许使用关键字作标识符。12.以下叙述中错误的是 _。(分数:1.00)A.C 语句必须以分号结束B.复合语句在语法上被看作一条语句C.空语句出现在任何位置都不会影响程序运行 D.赋值表达式末尾加分号就构成赋值语句解析:评析“空语句出现在任何位置都不会影响程序运行”

    24、这句话是错误的,例如在 for 循环中,循环条件语句为空时,则不判断循环条件,循环将无终止地进行下去,导致了此循环为死循环。13.以下叙述中正确的是 _。(分数:1.00)A.调用 printf 函数时,必须要有输出项B.使用 putchar 函数时,必须在之前包含头文件 stdih C.在 C 语言中,整数可以以十二进制、八进制或十六进制的形式输出D.调用 getchar 函数读入字符时,可以从键盘上输入字符所对应的 ASCII 码解析:评析在使用标准输入输出库函数(除了 Printf 和 scanf)前,必须要用预编译命令“#include”将头文件“stdio.h”包括到用户源文件中。1

    25、4.以下关于函数的叙述中正确的是 _。(分数:1.00)A.每个函数都可以被其他函数调用(包括 main 函数)B.每个函数都可以被单独编译 C.每个函数都可以单独运行D.在一个函数内部可以定义另一个函数解析:评析C 语言中函数是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义;函数可以分别编写、分别编译,提高调度效率,但函数不能单独运行:函数间可以互相调用,但不能调用main 函数。15.若有语句 char *line5;,以下叙述中正确的是 _。(分数:1.00)A.定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量 B.定义 line 是一个指针变量

    26、,该变量可以指向一个长度为 5 的字符型数组C.定义 line 是一个指针数组,语句中的*号称为间址运算符D.定义 line 是一个指向字符型函数的指针解析:评析由于运算符优先级比*高,所以“char*line5;”相当于“char*(line5;”,表示line 是一个数组,每个数组元素是一个基类型为 char 的指针变量。16.有以下程序段: typedef struct NODE int num; struct NODE *next; OLD; 以下叙述中正确的是 _。(分数:1.00)A.以上的说明形式非法B.NODE 是一个结构体类型C.OLD 是一一个结构体类型 D.OLD 是一个

    27、结构体变量解析:评析typedef 关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用 typedef 进行定义的话,则 struct NODE 为结构体类型,现在用 typedef 定义后,相当于用 OLD 代表了 struct NODE这一结构体类型,故 OLD 为结构体类型。17.以下叙述中错误的是_。(分数:1.00)A.C 语言中对二进制文件的访问速度比文本文件快B.C 语言中,随机文件以二进制代码形式存储数据C.语句 FILE fp:定义了一个名为 fp 的文件指针 D.C 语言中的文本文件以 ASCII 码形式存储数据解析:评析FILE 是由系统定义的一个结构体类型,

    28、并用该类型来定义若干个 FILE 类型的变量,以便存放若干个文件。所以用 FILE 定义的变量必须是数组或指针,所以选项 C 中的“FILE fp;”改为“FILE*fp;”就对了。18.当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是 _。(分数:1.00)A.k%2B.k%2=1C.(k%2)!=0D.!k%2=1 解析:评析本题选项 A、B、C 中表达式用作 if 语句表达式时,其值一致,即判断 k 的值是否为奇数,若为奇数,其表达式为真,否则为假;而选项 D 的表达式“!k%2=1”相当于“!(k%2)=1,若 k 的值为奇数,则此表达式的

    29、值为假。19.以下不能正确计算代数式 1/3sin2(1/2)值的 C 语言表达式是 _。(分数:1.00)A.1/3*sin(1/2)*sin(1/2) B.sin(0.5)*sin(0.5)/3C.pow(sin(0.5),2)/3D.1/3.0*pow(sin(1.0.2),2)解析:评析如果算远算符“/”中参与运算的变量都是整型变量,则“/”表示整除运算,所以“1/3”的值应为 0,故选项 A 的表达式值为 0,而事实上代数式“1/3sin 2(1/2)”的值并不为 0,所以选项 A 不能正确计算题目所要求的代数式。20.以下能正确定义且赋初值的语句是 _。(分数:1.00)A.int

    30、 n1=n2=10;B.char c=32; C.float f=f+1.1;D.double x=12.3E2.5;解析:评析语句“int n1=n2=10;”中,由于变量 n2 未定义,所以此赋值语句错误:由于赋值语句中不能存在运算表达式,所以选项 C 中的赋值语句错误;选项 D 中指数表示错误,C 语言规定,e 后面的指数必须为整数;选项 B 中的“32”是 ASCII 码的表示形式,这是 C 语言中字符型数据和整型数据通用的表现,即一个字符数据可以以字符形式出现,也可以以整数形式出现。21.以下程序的功能是:给 r 输入数据后计算半径为 r 的圆面积 s,程序在编译时出错。 main(

    31、) /* Beginning */ int r;float s; scanf(“%d“,”得 n=3,然后执行default;当 k=2 时,执行“case2:case3:n+=k”得 n=5,然后执行 default;当 k=1 时,执行“case1:n+=k;case2:case3:n+=k;”使得 n 加两次 k,得到 n=7。37.有以下程序: main() int a=2,4,6,8,10,y=0,x,*p; p= printf(“%d/n“,y); 程序运行后的输出结果是 _。(分数:1.00)A.10B.11C.14 D.15解析:评析本题通过语句“p=n;j+) if(aiaj

    32、) t=ai; ai=aj; aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10,i; sort(aa+2,5); for(i=0;i10;i+)printf(“%d,“,aa i);printf(“/n“); 程序运行后的输出结果是 _ 。(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.1,2,7,6,3,4,5,8,9,10,C.1,2,7,6,5,4,3,8,9,10, D.1,2,9,8,7,6,5,4,3,10,解析:评析本题 sort 函数的作用是将指定的数由大到小排序。主调函数“sort(aa+2,5);”中的实参aa+2 是

    33、指 aa2的地址,将其传给了形参 a,使得形参中 a0的值为主函数中 aa2的值,即 3;实参中的 5 传绐形参中的 n,在 sort 函数中起着限制循环次数的作用,即使得参加排序的只有 5 个数,从aa2到 aa6,所以本题输出的结果是 1,2,7,6,5,4,3,8,9,10,。39.有以下程序: void sum(int a) a0=a-1+a1; main() int a10=1,2,3,4,5,6,7,8,9,10; sum(c10=t; void swap2(int *c0,iht *c1) int t; t=*c0; *c0=*c1; *c1=t; main() int a2=3

    34、,5,b2=3,5; swapl(a,a+1); swap2(jn;j+) if strcmp(pi,pj)0t=pi pi=pj; pj=t; main() char* p5=(“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“; f(p,5); printf(“%d/n“,strlen(p1); 程序运行后的输出结果是 _。(分数:1.00)A.2B.3C.6D.4 解析:评析字符串比较函数“strcmp(char*s1,char*s2)”的比较规则是对两个字符串自左至右逐个字符相比(按 ASCII 码值大小比较),直到出现不同的字符或遇到到“/0“为止。如果全部相同,则

    35、认为相等:若出现不相同的字符,则以第一个不相同的字符的比较结果为准。当 s1s2,返回值0;当 s1=s2 时,返回值二 0:当 s1s2 时,返回值0。故本题经过排序后,得到第二个字符串是“abbd”,所以输出结果是 4。43.有以下程序: #includestring.h void f(char *s,char *t) char k; k=*s; +s=*t; *t=k; S+; t-; if(*s) f(s,t); main() char.str10=“abcdefg“,*p; p=str+strlen(str) /2+1; f(p,p-2); printf(“%s/n“,str); 程

    36、序运行后的输出结果是 _。(分数:1.00)A.abcdefgB.gfedcba C.gbcdefaD.abedcfg解析:评析本程序的作是将字符串 str 倒序。语句“p=str+strlen(str)/2+1;”用于将指针变量 p 指向e 字符所在的存储单元,p-2 指向了 c 字符所在的存储单元,在函数 f 中将这两个存储单元的内容交换,并使得 f 函数中指向 c 字符的指针变量 s 加 1。指向 c 字符的指针变量 t 减 1,然后继续将 s 和 t 指向的存储单元的内容进行交换,直到 s 指向的存储单元的内容为空为止。所以本题程序输出的结果是字符串“abcdefg”的倒序形式“gfe

    37、dcba”。44.有以下程序: float f1(float n) return n*n; float f2(float n) return 2*n; main() float(*p1)(float),(*p2)(float),(*t)(float),y1,y2; p1:f1; p2=f2; y1=p2(p1(2.0); t=p1; p1=p2; p2=t; y2=p2(p1(2.0); printf(“%3.0f,%3.0f/n“,y1,y2); 程序运行后的输出结果是 _。(分数:1.00)A.8, 16 B.8, 8C.16, 16D.4, 8解析:评析题中“(*p1)(float)”定

    38、义了一个指向函数的指针变量 p1,此函数的返回值是 float 类型。在 main 函数中,使得 p1 指向了函数 f1,P2 指向了函数缀。语句“y1=p2(p1(2.0);”先调用了 p1 函数,将其返回值 4.000000 传递给了 f2 的形参 n,并使其函数返回值 8.000000 赋值给 y1。然后在 main 函数中交换了 p1、p2 指针变量的指向,使 p1 指向了函数侵,p2 指向了函数 f1,并先调用函数 f2,得到返回值4.000000,使其传递给 f1 函数的形参 n,并带回返回值 16.000000 赋值给 y2。在输出 y1、y2 时,各浮点数占 3 列,小数位数为

    39、 0,即输出了 8,16。45.有以下程序: int a=2; int f(int n) static int a=3; int t=0; if(n%2)static int a=4;t+=a+; else static int a=5; t+=a+; return t+a+; main() int s=a,i; for(i=0;i3;i+) s+=f(i); printf(“%d/n“,s); 程序运行后的输出结果是 _。(分数:1.00)A.26B.28C.29 D.24解析:评析解本题耍弄清楚这样几点:1、定义“int a=2;”中的全局变量 a,其作用范围是从定义此变量的位置开始到本源

    40、文件结束;2、“static int a=3;”中的静态局部变量 a 的作用范围是其所在的函数 f,并对其只赋一次初值,以后每次调用函数时不再重新赋初值,而只是保留上次函数调用结束时的值;3、复合语句“static int a=4;t+=a+; ”和“static int a=5;t+=a+;”中定义的两个变量 a 属于复合语句中定义的变量,作用范围只在其本身所在的复合语句内。对于本程序来讲,第三行定义的静态局部变量并不会对四、五两行的复合语句产生作用,这是因为复合语句中也定义了与其同名的静态局部变量。46.有以下程序: #include strino.h struct STU int num

    41、; float TotalScore; ; void f(struct STU p) struct STU s2=20044,550,20045,537; pnum=s1num;pTotalScore=s1TotalScore; main() struct STU s2=20041,703,20042,580; f(s0); printf(“%d%3.0t/n“,s0num,s0TotalScore); 程序运行后的输出结果是 _。(分数:1.00)A.20045 537B.20044 550C.20042 580D.20041 703 解析:评析本题定义了结构体类型的变量 P 作为形参,并将

    42、结构体变量 s0中的值传递给了形参变量p,在函数 f 中,又对 p 中的内容作了改变,但这种改变对工函数中 s0的值并不产生影响,所以主函数中输出 s0的数据依然是在主函数中初始化时的数据。47.有以下程序: #include string.h struct STU (char name10; int num; ; void f(char *name, int num) struct STU s2=“SunDan“,20044“Penghua“,20045; num=s0num; strcpy(name,s0name); main() struct STU s2=“YangSall“,2004

    43、1,“LiSiGao“,20042,*p;p=”依次前移,直到*p 指向的存储单元中的值为空为止;最后通过语句“*(p-1)=t;”将保存在 t 中的字符放到移动后的字符串的末尾,所以本题输出的结果是 bcdefgha。65.以下程序运行后的输出结果是U 【15】 /U。 int f(int a,int n) if(n=1 return f(a,n-1)+an-1); else return 0; main() int aa5=(1,2,3,4,5),s; s=f(aa,5); printf(“%d/n“,s); (分数:2.00)填空项 1:_ (正确答案:15)解析:评析本题通过递归调用实

    44、现了数组 aa 各元素之和,即 a4+a3+a2+a1+a0=15。66.以下程序运行后的输出结果是U 【16】 /U。 struct NODE int num;struct NODE *next; ;main() struct NODE s3=1,/0,2,/0,3,0,*p,*q,*r; int sum=0; s0next=s+1;s1next=s+2;s2next=s; p=s; q=p-next; r=q-next; sum+=q-next-num; sum+=r-next-next-num; printf(“%d/n“,sum); (分数:2.00)填空项 1:_ (正确答案:5)解

    45、析:评析程序通过语句“s0.next=s+1;s1.next=s+2;s2.next=s;”将结构体变量 s 中各结点链接成了一个循环链表,即最后一个结点的指针域指向了头结点(s2.next=s;),整个链表形成一个环,并通过语句“p=s;q=p-next;r=q-next;”将结构体指针变量 p、q、r 指向了各结点,具体结构如下图: 故本题输出的 sum=3+2=5。67.以下程序的功能是输出如下形式的方阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 请填空。 main() int i,j,x; for(j=4;jU 【17】/U;j-) for(i=1

    46、;i=4;i+) x=(j-1)*4 +U 【18】 /U; printf(“%4d“,x); printf(“/n“); (分数:2.00)填空项 1:_ (正确答案:【17】=1 或0)解析:【18】i 评析本程序有两重 for 循环,外层 for 循环控制输出数据的行数,故第【17】空填“=1”或“0”,内层循环控制每行输出的个数。在内层 for 循环中,用语句“x=(j-1)*4+【18】;”控制输出方阵中的具体数据,由于这些数据与其所在的行、列(j,i)有关系 x=(j-1)*4+i,故此此空填 i。68.以下函数 rotate 的功能是:将 a 所指 N 行 N 列的二维数组中的最后一行放到 b 所指二维数组的第 0 列中,把 a 所指二维数组中的第 0 行放到 b 所指二维数组的最后一列中


    注意事项

    本文(【计算机类职业资格】全国计算机等级考试二级C语言真题2005年9月及答案解析.doc)为本站会员(李朗)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开