ImageVerifierCode 换一换
格式:DOC , 页数:28 ,大小:104.54KB ,
资源ID:4547482      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4547482.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(2023年全国计算机等级考试二级C语言真题库之选择题11.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

2023年全国计算机等级考试二级C语言真题库之选择题11.doc

1、全国计算机等级考试等级考试真题库之选择题(11) 1.下列叙述中对的的是 A) 一个算法的空间复杂度大,则其时间复杂度也必然大 B) 一个算法的空间复杂度大,则其时间复杂度必然小 C) 一个算法的时间复杂度大,则其空间复杂度必然小 D) 算法的时间复杂度与空间复杂度没有直接关系 参考答案:D 【解析】算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为D。 2.下列叙述中对的的是 A) 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 B) 循环队列中的元素个

2、数随队头指针的变化而动态变化 C) 循环队列中的元素个数随队尾指针的变化而动态变化 D) 以上说法都不对 参考答案:A 【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。因此,从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化,A对的。 3.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为 A) 219 B) 229 C) 230 D) 231 参考答案:

3、B 【解析】二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229,答案为B。 4.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为 A) 9 B) 10 C) 45 D) 90 参考答案:C 【解析】冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,选C。 5.构成计算机软件的是 A) 源代码 B) 程序和数据 C) 程序和文档

4、D) 程序、数据及相关文档 参考答案:D 【解析】软件指的是计算机系统中与硬件互相依赖的另一部分,涉及程序、数据和有关的文档,选D。 6.软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是 A) 测试 B) 设计 C) 可行性研究 D) 实现 参考答案:C 【解析】开发阶段涉及分析、设计和实行两类任务。其中分析、设计涉及需求分析、总体设计和具体设计3个阶段,实行则涉及编码和测试两个阶段,C不属于开发阶段。 7.下面不能作为结构化方法软件需求分析工具的是 A) 系统结构图 B) 数据字典(DD) C) 数据

5、流程图(DFD图) D) 鉴定表 参考答案:A 【解析】结构化方法软件需求分析工具重要有数据流图、数据字典、鉴定树和鉴定表。 8.在关系模型中,每一个二维表称为一个 A) 关系 B) 属性 C) 元组 D) 主码(键) 参考答案:A 【解析】关系模型采用二维表来表达,即每个二维表称为一个关系。 9.若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是 A) 一对一 B) 一对多 C) 多对一 D) 多对多 参考答案:B 【解析】A和B为一对多的联系,则对于A中的每一个实体,B中有多个实体与

6、之联系,而B与C为一对一联系,则对于B中的每一个实体,C中之多有一个实体与之联系,则可推出对于A中的每一个实体,C中有多个实体与联系,所认为一对多联系。 10. A) 选择 B) 投影 C) 交 D) 并 参考答案:D 【解析】关系T中的元素与关系R和关系S中不同元素的总和,因此为并操作。 11.我们所写的每条C语句,通过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是 A) 一条C语句也许会被转换成零条机器指令 B) 一条C语句也许会被转换成多条机器指令 C) 一条C语句相应转换成一条机器指令 D) 某种类型和格

7、式的C语句被转换成机器指令的条数是固定的 参考答案:C 【解析】一个C语句通过编译后产生若干条机器指令。声明部分不是语句,不产生机器指令,只是对有关数据的声明。并且固定类型和格式的C语句被转换成机器指令的条数固定。所以选择C选项。 12.关于"while(条件表达式)循环体",以下叙述对的的是 A) 循环体的执行次数总是比条件表达式的执行次数多一次 B) 条件表达式的执行次数总是比循环体的执行次数多一次 C) 条件表达式的执行次数与循环体的执行次数同样 D) 条件表达式的执行次数与循环体的执行次数无关 参考答案:B 【解析】while循

8、环是先判断条件,满足条件后执行循环体,执行完后接着判断条件,执行,直到最后一次判断条件后不成立,跳出循环,所以最后一次执行了条件表达式,但是没有执行循环体,所以选择B选项。 13.关于C语言的符号常量,以下叙述中对的的是 A) 符号常量的符号名是标记符,但必须大写 B) 符号常量是指在程序中通过宏定义用一个符号名来代表一个常量 C) 符号常量在整个程序中其值都不能再被重新定义 D) 符号常量的符号名必须是常量 参考答案:B 【解析】在C语言中,可以用一个标记符来代表一个常量,称为符号常量。这个标记符必须在程序中进行特别的"指定",并符合标记符的命名

9、规则。用作符号常量的标记符通常采用大写字母表达,在主函数中其值不能再被定义。所以选择B选项。 14.若有以下程序 #include main() { int b=10, a=-11; a %= b %= 4; printf("%d %d\n", a, b); } 则程序的输出结果是 A) 1 2 B) -1 2 C) -1 -2 D) 1 -2 参考答案:B 【解析】先计算b%=4,即b=b%4,结果为2,然后计算a%=2,结果为-1,最后a的值为-

10、1,b的值为2,所以选择B选项。 15.若有以下程序 #include main() { int a=0,b=0,c=0; c= (a -= ++a), (a+=b, b+=4); printf("%d,%d,%d\n",a,b,c); } 则程序的输出结果是 A) 0,4,0 B) 0,4,4 C) 1,4,1 D) 1,4,4 参考答案:A 【解析】逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。且逗号运算符的优先级最低,所以先计算c=(a

11、a)这部分。其中,赋值运算符从右往左计算,先执行++a,a自增1后再赋值,所以a的值为1,执行a=a-1,即a=1-1,a的值为0,并将0赋给变量c。第二部分(a+=b,b+=4),先执行a=a+b,a=0+0,即a的值为0,然后执行b+=4,b=0+4,即b的值为4。所以打印结果为0,4,0,选择A选项。 16.若有以下程序 #include main() { int a=0,b=0,c=0,d; c= (a+=b,, b+=a); /*第4行*/ d=c;;

12、 /*第5行*/ ; /*第6行*/ ;printf("%d,%d,%d\n",a,b,c); /*第7行*/ } 编译时出现错误,你认为犯错的是 A) 第4行 B) 第5行 C) 第6行 D) 第7行 参考答案:A 【解析】第4行逗号表达式中间的第二个表达式为空,是不合法的,可以去掉写成a+=b,b+=a,也可以在里面补一个表达式,如a+=b,a,b+=a。所以选择A选项。 17.若有以下程序

13、 #include main() { int a=1,b=2,c=3,d=4; if ((a=2) || (b=1)) c=2; if ((c==3) && (d=-1)) a=5; printf("%d,%d,%d,%d\n", a,b,c,d); } 则程序的输出结果是 A) 1,2,3,4 B) 2,1,2,-1 C) 5,1,2,-1 D) 2,2,2,4 参考答案:D 【解析】第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就

14、为真,且假如前面的已经为真,后面的表达式不再进行执行判断。执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。判断第二个if条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一个表达式c==3,不成立,不再判断第二个运算对象,所以不执行d=-1操作和a=5操作。所以结果为选项D。 18.若有以下程序 #include main() { int a=1,b=2,c=3,d=4, r=0; if (a!=1) ; else r=1; if (b==2) r+=2;

15、 else; if (c!=3) r+=3; else; if (d==4) r+=4; printf("%d\n", r); } 则程序的输出结果是 A) 10 B) 7 C) 6 D) 3 参考答案:B 【解析】else总是和与之最近的上面的if配对,执行第一个if,判断条件不成立,执行else r=1;语句。再执行第二个if语句中的判断条件,成立,左移执行r+=2,r的值为3,再执行第三个if的判断条件,不成立执行第7行else后面的空语句";"。再执行第四个if的判断条件d==4成立,执行r+=4

16、r的值为7。然后打印输出。 19.若有以下程序 #include main() { int s=0, n; for (n=0; n<4; n++) { switch(n) { default: s+=4; case 1: s+=1; case 2: s+=2; case 3: s+=3; } } printf("%d\n", s);

17、 } 则程序的输出结果是 A) 6 B) 18 C) 10 D) 24 参考答案:D 【解析】第一次for循环,n的值为0,所以从default后面的语句开始执行,s+=4,s+=1,s+=2,s+=3,s的值为10。在进入第二次for循环,n的值为1,所以执行s+=1,s+=2,s+=3,s的值为16。在进入第三次for循环,n的值为2,所以执行s+=2,s+=3,s的值为21。在进入第四次for循环,n的值为3,所以执行s+=3,s的值为24。 20.若有以下程序 #include main()

18、 { int a=-2, b=0; while(a++) ++b ; printf("%d,%d\n", a, b); } 则程序的输出结果是 A) 1,2 B) 0,2 C) 1,3 D) 2,3 参考答案:A 【解析】第一次while判断条件中a++,先用后加,为-2不为0条件为真,执行a的自加与++b操作,a的值变为-1,b的值变为1。第二次while判断后,a的值变为0,b的值变为2。第三次while判断条件为假,但是仍要执行自加操作,即值为1,跳出循环。打印1和2。 21.若有以下程序

19、 #include main() { int a=6, b=0, c=0; for ( ;a; ) { b += a; a -= ++c; } printf("%d,%d,%d\n", a,b,c); } 则程序的输出结果是 A) 1,14,3 B) 0,14,3 C) 0,18,3 D) 0,14,6 参考答案:B 【解析】本循环的条件判断时只要a为0就退出循环体,初始值a的值为6,满足条件执行完循环体,b的值为6,a-=+ +c即a=a-(++c),所以a的值

20、为5,c的值为1。第二次循环后b的值为11,a的值为3,c的值为2。第三次也是最后循环后,a的值为0,b的值14,c的值为3。 22.以下选项中非法的C语言字符常量是 A) '\007' B) '\b' C) 'aa' D) '\xaa' 参考答案:C 【解析】C选项中是字符串常量,应当用双引号表达即"aa"。所以选择C选项。 23.若有以下程序 #include char f(char x) { return x*x+'a'; } main() {

21、 char a, b=0; for ( a=0; a<4; a+=1 ) { b = f(a); putchar(b); } } 则程序的输出结果是 A) abcd B) ABEJ C) abej D) ABCD 参考答案:C 【解析】该题目一方面初始化变量a和b,通过for循环语句使a取值为0、1、2、3,f函数的功能是将a*a+'a'的值返回给b,即b为a、b、e、j。最后通过字符输出函数putchar()将b输出。因此C选项对的。 24.若有以下程序 #include

22、io.h> void sp(int *a) { int b=2; a=&b; *a = *a * 2; printf("%d,", *a); } main() { int k=3, *p=&k; sp(p); printf("%d,%d\n", k, *p); } 则程序的输出结果是 A) 4,3,3 B) 4,3,4 C) 6,3,6 D) 6,6,6 参考答案:A 【解析】一方面在主函数中给整型变量k赋值为3,将变量k的

23、地址赋给指针变量p;调用sp函数,将实参p的值传给形参a,在sp函数中,指针变量a又获得变量b的地址,通过运算后,输出a的值为4;返回主函数,输出k的值和p的值为3和3。因此A选项对的。 25.若有以下程序 #include int k=7; void f(int **s) { int *t=&k; *s=t; printf("%d,%d,%d,", k, *t, **s); } main() { int i=3,*p=&i, **r

24、 &p; f(r); printf("%d,%d,%d\n", i, *p, **r); } 则程序的输出结果是 A) 3,3,3,7,7,7 B) 3,7,7,7,7,7 C) 7,7,7,3,3,3 D) 7,7,7,3,7,7 参考答案:D 【解析】在主函数中分别给整型变量i,指针型变量p和指向指针的指针变量r赋初值;调用f函数,并将实参变量r的值传递给形参变量s,在f函数中,通过printf("%d,%d,%d,", k, *t, **s);语句输出7,7,7;返回主函数,通过printf("%d,%d,%d\

25、n", i, *p, **r);输出3,7,7。因此D选项对的。 26.若有以下程序 #include int *f(int *s,int *t) { int *k; if (*s < *t){ k = s; s=t; t=k; } return s; } main() { int i=3, j=5, *p=&i, *q=&j, *r; r=f(p,q); printf("%d,%d,%d,%d,%d\n", i

26、 j, *p, *q, *r); } 则程序的输出结果是 A) 3,5,5,3,5 B) 3,5,3,5,5 C) 5,3,5,3,5 D) 5,3,3,5,5 参考答案:B 【解析】在主函数中分别给整型变量i、j和指针型变量p、q赋初值,并声明指针变量r;调用f函数,并将实参变量p和q的值传递给形参变量s和t,并且f函数是指针型函数,即函数的返回值将是一个地址。在f函数中,假如条件成立,则将指针变量s和t互换,并且将指针s的地址返回主函数。最后输出i, j, *p, *q, *r的值,即3,5,3,5,5。因此B选项对的。 27.若有以

27、下程序 #include #define N 4 void fun(int a[][N], int b[], int flag) { int i,j; for(i=0; i a[i][j]) : (b[i] < a[i][j])) b[i] = a[i][j];

28、 } } main( ) { int x[N][N]={1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16}, y[N],i; fun(x, y, 1); for ( i=0; i

29、是 A) 1,5,9,13,4,8,12,16, B) 4,8,12,16,1,5,9,13, C) 1,2,3,4,13,14,15,16, D) 13,14,15,16,1,2,3,4, 参考答案:A 【解析】该题一方面初始化二维数组,if (flag ? (b[i] > a[i][j]) : (b[i] < a[i][j]))条件语句的条件表达式使用了条件运算符构成的选择结构,即flag为真时,以(b[i] > a[i][j])作为条件表达式的值,否则以(b[i] < a[i][j])作为条件表达式的值,fun函数功能是给一维数组赋值。fun(x, y, 1)

30、该函数调用后,即当flag为真时,使一维数组获得二维数组第1列的数值;fun(x, y, 0);该函数调用后,即当flag为假时,使一维数组获得二维数组第4列的数值;因此A选项对的。 28.若有以下程序 #include void fun(int a[ ], int n) { int t,i,j; for (i=1; i a[j]) { t=a[i]; a[i]=a[j]

31、a[j]=t;} } main() { int c[10]={10,9,8,7,6,5,4,3,2,1},i; fun(c, 10); for (i=0;i<10; i++) printf("%d,", c[i]); printf("\n"); } 则程序的输出结果是 A) 1,10,3,8,5,6,7,4,9,2, B) 10,9,8,7,6,5,4,3,2,1, C) 2,9,4,7,6,5,8,3,10,1, D) 10,1,8,3,6,5,4,7,2,9

32、 参考答案:D 【解析】该题一方面对一维数组进行初始化,c[0]到c[9]依次赋值为10到1;fun(c, 10);语句调用fun函数,fun函数的功能是将一维数组偶数位元素的数值由小到大排序;最后将排好序的新的一维数组进行输出。因此D选项对的。 29.若有以下程序 #include main() { int i,j=0; char a[]="How are you!"; for (i=0; a[i]; i++) if (a[i] != ' ') a

33、[j++]=a[i]; a[j]='\0'; printf("%s\n",a); } 则程序的输出结果是 A) Hay! B) Howareyou C) Howareyou! D) How are you! 参考答案:C 【解析】主函数中一方面定义字符数组a[]="How are you!";执行for循环语句,语句if (a[i] != ' ') a[j++]=a[i]; 其功能是将字符数组中的空格去掉。因此C选项对的。 30.若有以下程序 #include

34、o.h> char *a="you"; char b[ ]="Welcome you to China!"; main() { int i, j=0; char *p; for ( i=0; b[i] !='\0'; i++ ) { if (*a == b[i]) { p=a; for (j=i; *p!='\0'; j++) { if (*p != b[j]) break;

35、 p++; } if (*p=='\0') break; } } printf("%s", &b[i]); } 则程序的输出结果是 A) China! B) to China! C) me you to China! D) you to China! 参考答案:D 【解析】该程序一方面定义*a和b[ ],并进行初始化。主函数中通过外层for循环语句,遍历字符数组b[ ],并且将符合if条件语句的字符赋给数组p;for内

36、层循环语句,遍历字符数组a[ ]。再将符合if条件语句的结果输出。因此D选项对的。 31.若有以下程序 #include main() { char a[20], b[ ]="The sky is blue."; int i; for (i=0; i<7; i++) scanf("%c", &b[i]); gets(a); printf("%s%s\n", a,b); } 执行时若输入: (其中表达回车符) Fig flowe

37、r is red. 则输出结果是 A) wer is red.Fig flo is blue. B) wer is red.Fig flo C) wer is red.The sky is blue. D) Fig flower is red.The sky is blue. 参考答案:A 【解析】程序一方面初始化字符数组b[],执行for循环语句,循环变量i的取值范围从0到6。在for循环语句中通过scanf函数将从键盘上输入的数据输入到b[ ]中,即b的值为Fig flo is blue.。退出for循环语句,执行语句gets(a); ,g

38、ets()函数的调用形式为:gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终端键盘读入字符串(涉及空格符),直到读入一个换行符为止,即a的值为wer is red.。因此A选项对的。 32.若有以下程序 #include main() { char w[20], a[5][10]={"abcdef", "ghijkl", "mnopq", "rstuv", "wxyz"}; int p[6][2]={{0,1},

39、{1,5},{0,0},{0,2},{1,4},{4,4}}, i; for (i=0; i<6; i++) w[i]=a[ p[i][0] ][ p[i][1] ]; puts(w); } 则程序的输出结果是 A) catis B) ababj C) ckbdl D) black 参考答案:D 【解析】程序一方面初始化字符数组a[5][10]和二维数组p[6][2]。执行for循环语句,循环变量i从0取值到5,得到字符数组w[ ]的值,并通过字符串输出函数 puts进行输出操作。w[0]=a[0][1]、w[

40、1]=a[1][5] 、w[2]=a[0][0] 、w[3]=a[0][2] 、w[4]=a[1][4] 、w[5]=a[4][4];因此最后字符数组w的结果为black。因此D选项对的。 33.若有以下程序 #include void f(int x) { if (x >= 10) { printf("%d-", x%10); f(x/10); } else printf("%d", x); } main() { i

41、nt z = 123456; f(z); } 则程序的输出结果是 A) 6-5-4-3-2-1- B) 6-5-4-3-2-1 C) 1-2-3-4-5-6 D) 1-2-3-4-5-6- 参考答案:B 【解析】本题重点考察函数的递归调用,程序一方面初始化整型变量z为123456,调用函数f。f函数中一方面通过if条件语句判断x是否大于等于10,假如条件成立,求x除以10的余数并输出,同时将变量x进行x/10运算,同时调用函数f。假如条件不成立,直接输出变量x。因此第1次调用函数,变量x为123456,条件成立,输出余数

42、6;第2次调用函数,变量x为12345,条件成立,输出余数5;第3次调用函数,变量x为1234,条件成立,输出余数4;第4次调用函数,变量x为123,条件成立,输出余数3;第5次调用函数,变量x为12,条件成立,输出余数2;第6次调用函数,变量x为12345,条件不成立,输出1。因此B选项对的。 34.若有以下程序 #include int a=2; int f(int m) { static int n; n=0; n++; a++; return n+m+a;

43、 } main() { int k; for (k=0; k<4; k++) printf("%d,", f(k)); } 则程序的输出结果是 A) 4,5,6,7, B) 4,7,10,13, C) 4,6,8,10, D) 3,5,7,9, 参考答案:C 【解析】主函数中变量k作为for语句的循环变量,取值0、1、2、3,同时也作为实参通过调用函数f传递给形参变量m。由于变量a是全局变量,变量n是static静态变量,因此k=0时,f函数中,语句return n+m+a;即1+0+3=4

44、k=1时,f函数中,语句return n+m+a;即2+1+3=6;k=2时,f函数中,语句return n+m+a;即3+2+3=8;k=3时,f函数中,语句return n+m+a;即4+3+3=10。因此C选项对的。 35.若有以下程序 #include #define S(x) x*x #define T(x) S(x)*S(x) main() { int k=5, j=2; printf("%d,%d\n", S(k+j),T(k+j)); }

45、则程序的输出结果是 A) 17,289 B) 49,2401 C) 17,37 D) 49,289 参考答案:C 【解析】本题考察宏定义,宏定义只是做个简朴的替换,执行S(k+j)=k+j*k+j=17,T(k+j)=S(k+j)*S(k+j)=k+j*k+j*k+j*k+j=37,选项C对的。 36.若有以下程序 #include #include #include struct stu { char *name, gender; int score; }

46、 main() { struct stu a={NULL, 'm', 290}, b; a.name=(char *)malloc(10); strcpy(a.name, "Zhao"); b = a; b.gender = 'f'; b.score = 350; strcpy(b.name, "Qian"); printf( "%s,%c,%d,", a.name, a.gender, a.score ); printf( "%s,%c,%d\n", b.name, b.gender, b.score

47、 ); } 则程序的输出结果是 A) Zhao,m,290,Zhao,f,350 B) Zhao,m,290,Qian,f,350 C) Qian,f,350,Qian,f,350 D) Qian,m,290,Qian,f,350 参考答案:D 【解析】本题中考察结构体中变量的引用,a结构体中name被修改为Qian,所以本题答案为D。 37.若有以下程序 #include #include #include typedef struct stu { char *n

48、ame, gender; int score; } STU; void f(char *p) { p=(char *)malloc(10); strcpy(p, "Qian"); } main() { STU a={NULL, 'm', 290}, b; a.name=(char *)malloc(10); strcpy( a.name, "Zhao" ); b = a; f(b.name); b.gender = 'f'; b.score = 350;

49、 printf("%s,%c,%d,", a.name, a.gender, a.score); printf("%s,%c,%d\n", b.name, b.gender, b.score); } 则程序的输出结果是 A) Zhao,m,290,Qian,f,350 B) Zhao,m,290,Zhao,f,350 C) Qian,f,350,Qian,f,350 D) Qian,m,290,Qian,f,350 参考答案:B 【解析】本题考察结构体变量中的引用,其中a的name为Zhao,b执行函数f(b.name)后b的name并没有改变,

50、还是Zhao,所以答案为B选项。 38.若有定义 typedef int* T; T a[10]; 则a的定义与下面哪个语句等价 A) int (*a)[10]; B) int *a[10]; C) int *a; D) int a[10]; 参考答案:B 【解析】本题考察typedef的使用方法,typedef对已存在的类型使用一个新的名字,其中本题中int* 用T来代替,所以定义T a[10];就相称于是int *a[10];选项B对的。 39.若有以下程序 #include

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服