欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    全国计算机等级考试C语言2级笔试题.docx

    • 资源ID:68387996       资源大小:253.97KB        全文页数:120页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    全国计算机等级考试C语言2级笔试题.docx

    2007年4月全国等级考试题目第25次(已经修改)一、选择题下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。(1-11题,软件技术基础单向选择题目)1 .下列叙述中正确的是()A)算法的效率只与问题的规模有关,而与数据的存储结构无关B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的D)算法的时间复杂度与空间复杂度一定相关解析根据时间复杂度和空间复杂度的定义可知,算法的时间复杂度与空间复杂度并不相 关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间关系的, 是独立于计算机中的,数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机 中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构 有关。2 .在结构化程序设计中,模块划分的原则是()A)各模块应包括尽量多的功能B)各模块的规模应尽量大C)各模块之间的联系应尽量紧密D)模块内具有高内聚度、模块间具有低耦合度D解析在结构化程序设计中,一般较优秀的软件设计尽量做到高内聚、低耦合,这样有利 于提高软件模块的独立性,这也是模块划分的原则。3 .下列叙述中正确的是()A)软件测试的主要目的是发现程序中的错误B)软件测试的主要目的是确定程序中错误的位置C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D)软件测试是证明软件没有错误A解析软件测试是为了发现错误而执行程序的过程,且为了达到好的测试效果,应该由独 立的第三方来构造测试,程序员应尽量避免检查自己的程序。4 .下面选项中不属于面向对象程序设计特征的是()A)继承性 B)多态性 C)类比性 D)封装性c解析面向对象程序设计的3个主要特征是:封装性、继承性和多态性。5 .下列对队列的叙述正确的是()A)队列属于非线性表B)队列按“先进后出”原则组织数据C)队列在队尾删除数据D)队列按“先进先出”原则组织数据D解析队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进 行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的端称为队首(front)。队列 具有先进先出的特点,它是按''先进先出”的原则组织数据的,故本题答案为D)。6.对下列二叉树进行前序遍历的结果为()A) DYBEAFCZXB) YDEBFZXCA C) ABDYECFXZ D) ABCDEFXYZC解析二叉树前序遍历的含义是:首先访问根结点,然后按前序遍历根结点的左子树,最 后按前序遍历根结点的右子树,前序遍历二叉树的过程是一个递归的过程。根据题目中给出 的二叉树的结构可知前序遍历的结果是:ABDYECFXZ«7 .某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()A) n+1 B) n-1 C) 2n D) n/2A解析对于任何一棵二叉树T,如果其终端结点(叶子)数为nl,度为2的结点数为n2,则 nl=n2+L所以该二叉树的叶子结点数等于n+1。8 .在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()A)并 B)交 C)投影 D)笛卡儿乘积B解析在关系运算中,“交”的定义如下:设R1和R2为参加运用算的两个关系,它们具 有相同的度n,且相对应的属性值取自同一个域,则Rin R2为交运算,结果仍为度等于n 的关系,其中的元组既属于R1又属于R2。根据定义可知,不改变关系表的属性个数但能减少元组个数的是交运算,故本题答案为B)。9 .在E-R图中,用来表示实体之间联系的图形是()A)矩形 B)椭圆形 C)菱形 D)平行四边形C解析E-R模型可用E-R图来表示,它具有3个要素:实体(型)用矩形框表示,框内为实 体名称。属性用椭圆型来表示,并用线与实体连接。属性较多时也可以将实体及其属性单 独列表。实体间的联系用菱形框表示。用线将菱形框与实体相连,并在线上标注联系的类 型。10 .下列叙述中错误的是()A)在数据库系统中,数据的物理结构必须与逻辑结构致B)数据库技术的根本目标是要解决数据的共享问题C)数据库设计是指在已有数据库管理系统的基础上建立数据库D)数据库系统需要操作系统的支持A解析数据库设计(Database Design)是指根据用户的需求,在某一具体的数据库管理系统上 设计数据库的结构并建立数据库的过程;数据库技术的根本目标是要解决数据共享的问题; 数据库需要操作系统的支持;数据的物理结构又称数据的存储结构,就是数据元素在计算机 存储器中的表示及其配置。数据的逻辑结构是指数据元素之间的逻辑关系,它是数据在用户 或程序员面前表现的方式,在数据库系统中,数据的物理结构不一定与逻辑结构一致。11 .算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的()A)正当性 B)可行性 C)确定性 D)有穷性C解析一个算法应当具有5个特性,即有穷性、确定性、可行性、有零个或多个输入以及 有一个或多个输出。算法的确定性是指:算法中每一条指令必须有确切的含义,读者理解时 不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只 能得出相同的执行结果。(12-50),C语言综合单向选择题12 .以下叙述中错误的是()A)计算机不能直接执行用C语言编写的源程序8) C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行D解析一个C语言的源程序(后缀名为.c)在经过编译器编译后,先生成一个汇编语言程序, 然后由编译程序再将汇编语言程序翻译成机器指令程序,即目标程序(后缀名为.。切),目标 程序不可以宜接运行,它要和库函数或其它目标程序连接成可执行文件(后缀名为.exe)后方 可运行。故本题答案为D)。13 .按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()A)大写字母B)连接符 C)数字字符D)下划线解析在C语言中,用户标识符命令规则规定:变量名只能由字母、数字或下划线3种字 符组成,且第一个字符必须为字母或下划线。在C语言中,大写字母和小写字母被认为是 两个不同的字符。据此规定A)、D)、C)三个选项是正确的,而B)选项是连字符,不在C语 言规定的命名变量标识符的范围内。14 .以下叙述中错误的是()A) C语言是一种结构化程序设计语言B)结构化程序由顺序、分支、循环三种基本结构组成C)使用二种基本结构构成的程序只能解决简单问题D)结构化程序设计提倡模块化的设计方法C解析结构化程序设计是指在程序的构成上只使用顺序、选择(即分支)和循环3种结构组成 的编程方式。它强调程序设计风格和程序结构的规范化,提倡清晰的结构。结构化程序设计 方法的基本思路,是把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在 人们容易理解和处理的范围内。结构化程序设计提倡模块化的设计方法。15 .对于一个正常运行的C程序,以下叙述中正确的是()A)程序的执行总是从main函数开始,在main函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束A解析一个C程序总是从main函数开始执行,而不论其在程序中的位置。在main函数中 可以调用程序中的其他函数,而其他函数却不可以调用main函数。程序最后再从main函 数中结束。16 .设变量均已正确定义,若要通过scanf("%d%c%d%c", &al, &cl, &a2, &c2);语句为 变量al和a2赋数值10和20,为变量cl和c2赋字符X和丫。以下所示的输入形式中正确 的是(注:代表空格字符)()A) 10 X 20 丫回车B) 10 口 X20 口 丫回车C) 10 口 Xv回车 20 口 丫回车D) 10X回车20丫回车D解析本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第一 个空格会作为字符赋值给变量cl,而不会被解释成分隔符。17 .若有代数式I"'(其中e仅代表自然对数的底数,不是变量),则以下能够正确 表示该代数式的C语言表达式是()A) sqrt(abs(nAx+eAX)B) sqrt(fabs(pow(n, x)+pow(x, e)C) sqrt(fabs(pow(n, x)+exp(X) D) sqrt(fabs(pow(x, n)+exp(x)C解析本题主要考查C语言的库函数。abs求整数的绝对值,fabs求双字节型的绝对值, pow函数的原形是double pow(double X,double Y),谢 x的y次方;exp函数的原形是double exp(double X),求10的X次方;sqrt函数的原形是double sqrt(double x),为x的平方根。故本题答案为C)o18 .设有定义:intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是()A)k+B)k+=1 C) +k D) k+1A解析因为“intk=0;",阳 B)、C)、D)三个选项的表达式的值都等于1,而A)选项的表 达式的值等于0。这是因为“k+”这个表达式先进行取k值的运算,然后是k值自加1。 故本题答案为A)o19 .有以下程序,其中u表示按无符号整数输出main()(unsigned int x=0xFFFF; /* x 的初值为 + 六进制数 */ printf("%un", x);)程序运行后的输出结果是()A)-l B) 65535 C) 32767 D) OxFFFFB解析"u”格式符用来以+进制形式输出无符号整型变量,其取值范围是065535。本 题中无符号整型变量x=0xFFFF(+六进制)表示的是无符号整型变量的最大值65535«20 .设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是() A)if(x+);B) if(x>y&&y!=O);C) if(x>0)x- else y+;D) if(y<0); else x+;C解析C语言规定,在“if(表达式)语句l;else语句2;”这种形式的if语句中,在每一个else 前面有一个分号,整个语句结束处有一分号。在本题的C)选项中,else前面少了一个分号, 这样程序在编译时,会出现语法错误。21 .以下选项中,当x为大于1的奇数时,值为0的表达式是()A) x%2=l B) x/2 C) x%2!=0 D) x%2=0解析因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表 达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的 结果为假,即等于0。22 .以下叙述中正确的是()A) break语句只能用于switch语句体中B) continue语句的作用是:使程序的执行流程跳出包含它的所有循环C) break语句只能用在循环体内和switch语句体内D)在循环体内使用break语句和continue语句的作用相同C解析break语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在switch语句 中,也可以出现在循环语句中。continue语句只是结束本次循环,即跳过本次循环体中余下 尚未执行的语句,接着再一次进行循环的条件判断。23 .有以下程序main() int k=5» n=0;do switch(k) case 1 :case 3: n+=l; k; break;default: n=0; k;case 2:case 4: n+=2; k; break;)printf("d",n); while(k>0&&n<5);)程序运行后的输出结果是()A) 235 B) 0235 C) 02356 D) 2356A解析因为变量的初始值分别为“k=5, n =0",所以程序第一次进入循环时,执行default 语句,这时k=4,执行"case 4:”这个分支,结果是“n=2, k=3",持I出2;程序然后进行 第二次循环,这时“n=2, k=3",执行"case 3:”这个分支,结果是“n=3, k=2”,打印出3; 程序进行第三次循环,这时“n=3, k=2”,执行“case 2: case 4:”这两个分支,结果是“n=5, k=l",出5,这时因为n=5不满足n<5的循环条件,因此退出循环,程序运行结束。因 此输出结果是235。24 .有以下程序main()inti, j;for(i= 1 ; i<4; i+)j> i*j)for(j=i; j<4; j+) printf("%d*%d=%d ", i,printf("n");)程序运行后的输出结果是()A) 1*1=11*2=21*3=32*1=22*2=43*1=3B) 1*1=11*2=21*3=32*2=42*3=63*3=9C) 1*1=11*2=22*2=41*3=32*3=63*3=9D) 1*1=12*1=22*2=43*1=33*2=63*3=9B解析本题主要考查了 for循环的嵌套。外层for循环的自变量i从1开始,每次循环后增1, 至到i等于3结束。内层循环的自变量j每次从i开始,每次循环后增1,至到j等于3结束。 在每次外循环开始后,内层循环在一行上先打印"i*j=两个乘数的积”,然后换行,下次循 环从下一行开始打印。25 .以下合法的字符型常量是()A) xl3' B) 081' C) '65' D) "n"A解析C语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在C语言中还 允许用以一个开头的字符序列来表示字符常量。其中,形式“ddd”表示1到3位8 进制数所代表的字符;形式“xhh”表示1到2位16进制数所代表的字符。在本题中xl3' 表示回车符,是一个字符常量;081'用8进制数所代表的字符,但形式不正确,因为8 进制数所表示的字符中不会出现数字“8"; 65'不是一个字符,而是一个+进制数字;“n” 是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。26 .在C语言中,函数返回值的类型最终取决于()A)函数定义时在函数首部所说明的函数类型B) return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型A解析在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律 自动按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型 一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数类型为主。即函数 类型决定返回值的类型。27 .已知大写字母A的ASCII码是65,小写字母a的ASCH码是97。以下不能将变量c中 的大写字母转换为对应小写字母的语句是()A) c=(c-'A')%26+'a' B) c=c+32 C) c=c-'A'+'a'D)c=('A'+c)%26-'a'D解析C语言中,字符数据参加运算时,实际上是其ASCII码参与计算。大写字母的ASCH 码比其对应的小写字母的ASCII码小31»因此要将大写字母转化为小写字母只需将其加上 32即可。所以选项B)、C)都符合条件,因为变量C中存储的是大写字母,所以“c-A”的 值定小于26,故选项A)与选项C)的含义相同。故本题答案为D)。28 .有以下函数int fiin(char *s) char *t=s;while(*t+);retum(t-s);)该函数的功能是A)比较两个字符串的大小B)计算s所指字符串占用内存字节的个数C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中解析循环语句while(*t+);执行完时,指针变量t就指向了字符中结束符'o'之后的位 置,所以语句但tum(t-s);返回的就是字符串s所用内存的字节个数。29 .设已有定义:float X;,则以下对指针变量p进行定义且赋初值的语句中正确的是()A) float *p=1024; B) int *p=(float)x; C) float p=&x;D) float *p=&x;D解析指针变量只能存储地址,选项A)错误。只有浮点型指针才能指向浮点型数据,选项 B)错误。在定义指针变量时必须加上星号"*",邈 C)错误。故本题答案为D)。30 .有以下程序#include <stdio.h>main() int n, *p=NULL;*p=&n;printf('Input n:");scanf("d”, &p);printf(''output n: ”);printf(H%dnM, p);)该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是() A) int n, *p=NULL: B) *p=&n; C) scanf("d”,&p) D) printf(u%dnn, p): 解析指针变量在定义时需要加星号,而在赋值时则不用,故选项B)错误。本题中,scanf() 函数和printf()函数都是要对指针变量p指向的地址处的数据进行访问,不是变量本身。选 项C)中多了取地址运算符,选项D)中少了指针运算符。31 .以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行 由大到小排序。void f(int b| , int n, int flag) int i, j, t;for(i=0; i<n-l ; i+)for(j=i+l ; j<n; j+)if(flag?bi>bj: bi<bUDt=bi; bi=bU; bj=t5 )main() int a10=5, 4, 3, 2, 1, 6, 7, 8, 9, 10), i; f(&a2, 5, 0); f(a, 5, 1); for(i=0: i<10; i+)printf(M%d, ", ai); )程序运行后的输出结果是()A) 1,2,3,4,5,6,7,8,9,10,B)3,4,5,6,7,2,1,8,9,10,C)5,4,3,2,1,6,7,8,9,10,D) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,B解析在main。中“f(&a,5, 0); ”语句的功能是对数组a10中从a到a6的数宇(即 3, 2, 1, 6,7)进行从大到小排序,这时数组a10中的数字序列变为5, 4, 7, 6, 3, 2, 1, 8, 9, 10o "f(a,5, 1);” 语句的功能是对数字序列5, 4, 7, 6, 3, 2, 1, 8, 9, 10中的 5, 4,7, 6, 3进行从小到大的排序,所以数组a10中的数字序列最终变为3, 4, 5, 6, 7, 2, 1, 8, 9, 10o32 .有以下程序void f(int b) inti;for(i=2; i<6; i-H-)b|i*=2;)main() int a10=l, 2, 3, 4, 5, 6, 7, 8, 9, 10), i;f(a):for(i=0;i<10, i+)printf(n%d, ",ai);程序运行后的输出结果是()A) 1,2,3,4,5, 6, 7, 8,9,10,B) 1,2,6,8,10,12,7, 8, 9, 10,C) 1,2,3,4,10,12,14,16,9,10,D) 1,2,6,8,10,12,14,16,9,10,B解析在main()中,f(a)语句的作用是对数组讥10中从a2到a的各个数字乘以2,所以 数组a10中的数字就变成了1, 2, 6, 8, 10, 12, 7, 8, 9, 10),最后在屏幕上输出。33 .有以下程序typedef structint b, p; A;void f(Ac) /*注意:c是结构变量名*/ intj;c.b+=l ;c.p+=2;)main() int i ;A a= 1 f 2;f(a):printf(n%d, %dnn, a.b, a.p);)程序运行后的输出结果是()A) 2, 3B)2, 4 C) 1, 4 D) 1, 2D解析本题考查的是函数调用时的数据传递问题。因为在调用函数f()时只是进行的值传递, 即单向传递,函数的调用及对形参的处理过程并不会引起实参数值的变化。故本题答案为 D)o34 .有以下程序main() int a44=l,4, 3, 2), 8, 6, 5, 7), 3, 7, 2, 5, 4, 8, 6, 1, i, j, k, t; for(i=0; <4: i+)for(j=0; j<3; j+)fbr(k=j+1; k<4; k+)if(aji>akit=aji; aji=aki=aki=t; )/*按列排序*/foiti=0; i<4: i+)printf("%d, ", aii);程序运行后的输出结果是()A) 1, 6, 5, 7, B) 8, 7, 3, 1,C)4, 7, 5, 2,D) 1, 6, 2, 1,解析本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来 实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列。最后输出 对角线上的元素值。故本题答案为A)。35 .有以下程序main() int a44=l, 4, 3, 2, 8, 6, 5, 7, 3, 7, 2, 5, 4, 8, 6, 1, i, k, t; for(i=0; i<3: i+)for( k=i+1; k<4 ; k+)if(aii<akk)t=aii; aii=akk; akk=t; for(i=0; i<4; i+)printf(M%d, a0i);)程序运行后的输出结果是()A) 6, 2, 1, 1,B)6, 4, 3, 2,C) 1, L 2, 6,D) 2, 3, 4, 6,B解析本题使用选择法对二维数组对角线上的元素按从大到小的顺序进行排列。最后输出 数组第一行的数据。故本题答案为B)。36.有以下程序void f(int *q) int i=0:fbr(; i<5; i+)(*q)+;)main() int a5= 1, 2, 3, 4, 5, i;f(a);for(i=0; i<5; i+)printf(H%d, ",ai);)程序运行后的输出结果是A) 2, 2, 3, 4, 5,B)6, 2, 3, 4, 5,C) 1, 2, 3, 4, 5,D)2, 3, 4, 5, 6,B解析调用函数1)时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一 个元素a0。在5次循环过程中,q始终指向a0,因此a 0的值增加了 5。最后的输出结 果为“6, 2, 3, 4, 5"。37 .有以下程序#include<string.h>main()charp20=ra*, V, 'cS d, q=Mabcn, r =Mabcden;strcpy(p+strlen(q), r);strcat(p, q);printf(n%d%dnn, sizeof(p), strlen(p);)程序运行后的输出结果是()A) 20 9B)9 9 C) 20 11 D) 11 11C解析函数strlen。返回的是数组的实际长度,而sizeof返回的是数组定义的总长度。因为 字符数组p20定义为20字节长度,所以sizeof(p)的值为20o astrcpy(p+strlen(q), r); "语 句的功能把字符数组r拷贝到字符数组p从p3开始到p7的位置中,这时字符数组p的有 效字符长度为8。然后再执行"strcat (p, q); ”语句(字符串连接),即把字符数组q连接到字 符数组p后面,这时字符数组p的有效长度为11。38 .有以下程序#include<string.h>main() charp20=1",V, 'd d, q =nabcM, r =nabcde,;strcat(p, r);strcpy(p+strlen(q), q);primf("dn”,strlen(p):程序运行后的输出结果是()A) 9B)6 C) 11 D) 7B解析strcpy()函数的功能是将字符串q复制到从p3位置开始的存储单元,同时复制字符串 结束标志0'到p中。函数strlen。返回的是字符串中不包括<0,在内的实际长度,故 本题答案为B)o39 .有以下程序#incl ude<string.h>void f(char p10, int n)/*字符串从小到大排序*/ char t10; int i» j;for(i=0;i<n-l; i+)fbr(j=i+l ; j<n: j+)if(strcmp(pi, pj)>0) strcpy(t, pi);strcpy(pi, pj);strcpy(pj) t);)main()charp510=HabcM, "aabdfg:, Mabbd% "dcdbeH, “cd”;f(P> 5);printf("%dn", strlen(pO);)程序运行后的输出结果是()A) 2B)4C)6 D) 3C解析本题中函数f()利用选择法对字符串数组p中的字符中按从小到大排序,字符串比较 的方法是:依次对S1和S2所指字符串对应位置上的字符两两进行比较,当出现第一对不 相同的字符时,即由这两个字符(ASCII码值)决定所在串的大小,因此最后在pO中存储的 是最小的字符串是“aabdfg"。最后用strlen。函数求得该字符串的长度为6。40 .有以下程序void f(int n, int *r) int rl=0;if(n%3=0)rl=n/3;else if(n%5=0) rl=n/5;else f(-n, &rl);*r=rl ;)main() int m=7» r;f(m, &r);printf(”d”,r);程序运行后的输出结果是()A) 2 B) 1C)3D)0A解析本题考查了函数的递归调用。在f函数中,当m=7时,程序执行“f(-n, &rl);“语 句,递归调用f(6, &rl),程序执行“rl=n/3;”语句,即rl= 6/3=2,然后执行“*匚rl;”语 句,所以输出结果为2。41 .有以下程序main(int argc, char * argv ) int n=0. i;for(i=l; i<argc; i+)n=n*10+ *argv i - *0';printf(n%dn,', n);)编译连接后生成可执行文件tt.exe。若运行时输入以下命令行tt 12 345 678。程序运行 后的输出结果是()A) 12 B) 12345 C) 12345678 D) 136D解析运行时输入该命令后,参数argc的值为4,字符串数组argvl, argv2, argv3分 别为“12”、“345”、“678”,然后取这3个参数的第一个字符,将其转化成原来的数字并组 合成一个新的三位数。42 .有以下程序int a=4;int f(int n) int t=0: static int a=5:if (n%2) int a=6; t+=a+; else int a=7; t+=a+; return t+a+:)main() int s=a, i=0;fbr(; i<2; i+) s+=f(i);printf("dn",s);)程序运行后的输出结果是()A) 24B)28 C) 32 D) 36B解析本题考查的是变量的作用域问题。程序中定义了多个变量a,全局变量、静态变量和 局部变量分别在自己的作用域中参与运算。在main()函数中首先执行"s+=f(0);”语句,而 f(0)返回值为12,所以第一次循环结束s的值等于4+12=16;第二次开始时,当执行f(l)时, 在 f(l)中执行 uif(n%2)int a=6; t+=a+; ”和 "return t+a+;”这两条语句,所以 f 的 返回值等于12。再在主函数中执行"s+=f(l):”语句,也就是16+12=28。43 .有一个名为init.txt的文件,内容如下:#define HDY(A, B) A/B#define PRINT(Y) printf(,'y=%dnn, Y)有以下程序ttincludeinit.txt'1main() int a=l, b=2, c=3, d=4, k;k=HDY(a+c, b+d);PRINT(k);)下面针对该程序的叙述正确的是()A)编译出错B)运行出错C)运行结果为y=0 D)运行结果为y=6D解析本题考查的是带参数的宏定义。不仅要进行简单的字符替换,还要进行参数替换。 根据宏替换的规则,本题在进行替换宏HDY时,没有像所希望的那样将HDY(a+c, b+d) 替换成(a+c)/(b+d),而是替换成了 “a+c/b+d”,因此结果k为6。44 .有以下程序main()(char ch=MuvwxyzH» *pc;pc=ch;printf(H%cn",*(pc+5);)程序运行后的输出结果是()A)z B)0 C)元素ch5的地址D)字符y的地址A解析将字符串的地址赋值给字符指针变量后,指针就指向了该字符串的第一个字符,即 “*p=U",所以*(p+5)指向的字符是z'。45 .有以下程序struct S int n; int a|20; ;void f(struct S *p) int i, j, t;fbr(i=O: i<p->n-l; i-H-)fbr(j=i4-l ; j<p->n; j+)if(p->ai>p->a|j)t=p->ai; p->ai=p->a(j; p->a|j=t;main() int i;struct S s= 10, 2, 3, 1, 6, 8, 7, 5, 4, 10, 9;f(&s);for(i=0; i<s.n; i+)printf(u%d, ”,s.ai);)程序运行后的输出结果是()A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,B) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,C)2, 3, b 6, 8, 7, 5, 4, 10, 9, D) 10, 9, 8, 7, 6, 1, 2, 3, 4, 5,A解析本题中,在调用函数f()时,实参是结构体变量s的地址,所以在函数中对形参的改 变会影响到实参的数值。函数f()实现的功能是把结构体的成员数组中的值按从小到大顺序 进行排列。46 .有以下程序struct S int n; int a20; ; void f(int *a, int n) int i:for(i=0; i<n-l ; i+) a|i+=i;main() int i;struct S s= 10, 2, 3, L 6, 8, 7, 5, 4, 10, 9);f(s. a, s. n);fbr(i=O; i<s.n; i+) prinlf("d, ”, s.ai); 程序运行后的输出结果是()11, 18, 9,11, 10,10, 9,10, 9,A) 2,4,3,9,12, 12, 11,B)3,4,2,7,9,8,6,5,C)2,3,L6,8,7,5,4,D) I,2,3,6,8,7,5,4,A解析本题中,在调用函数时将结构体变量的两个成员作为实参,其中的成员数组a实际 向函数f()传递的是该数组的地址,因此在函数f()中所对应的形参发生改变时,该数组内的 数据也会发生改变。函数f()实现的功能是将成员数组中的前9个元素分别加上该元素的下 标,作为新的元素。47 .有以下程序段typedef struct node int data: struct node *next: *NODE:NODE p;以下叙述中正确的是()A) p是指向struct no加结构变量的指针的指针B) NODE p;语句出错C) p是指向struct node结构变量的指针D) p是struct node结构变量C解析在C语言中,typedef用于说明一种新的类型名,本题中的node被定义为一种结构体 类型名,NODE被定义为指向这种结

    注意事项

    本文(全国计算机等级考试C语言2级笔试题.docx)为本站会员(无***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开