二级c语言上机题库程序设计计算机二级考的题目类型都有哪些呢

全国计算机等级考试一二级c语言程序设计易出错题目分析_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
14页免费22页免费16页免费14页¥10.0011页免费15页免费4页免费34页4下载券3页免费2页免费
喜欢此文档的还喜欢4页免费11页免费2页免费6页免费3页免费
全国计算机等级考试一二级c语言程序设计易出错题目分析|全​国​计​算​机​等​级​考​试​一​二​级​c​语​言​程​序​设​计​易​出​错​题​目​分​析
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢国家计算机等级考试二级机试试题C语言程序设计百签题解_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&国家计算机等级考试二级机试试题C语言程序设计百签题解本词条缺少概述、信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧! 拼音题名
guo jia ji suan ji deng ji kao shi er ji ji shi shi ti — — C yu yan cheng xu she ji bai qian ti jie
郎六琪主编
吉林大学出版社
中图分类号
本书根据国家计算机等级考试二级C语言考试大纲的要求,以抽签制的上级考试方式为模板,将大纲中所涉及到的基础知识汇总为100个题签,因为上机考试的考试方式为抽签制,每个题签内有3道题,每题给出了详细的分析和解答以及答题技巧。
新手上路我有疑问投诉建议参考资料 查看您当前的位置:&&&&&正文
全国计算机等级考试笔试模拟试题及答案(6)二级公共基础知识和C语言程序设计_计算机二级
一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题1分,70分)
& (1)算法的空间复杂度是指(&&& )。
&&& A)算法程序的长度&&& B)算法程序中的指令条数
&&& C)算法程序所占的存储空间&&& D)算法执行过程中所需要的存储空间
& (2)下列叙述中正确的是(&&& )。
&&& A) -个逻辑数据结构只能有一种存储结构
&& &B)逻辑结构属于线性结构,存储结构属于非线性结构
&&& C) -个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
&&& D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
& (3)下列关于类、对象、属性和方法的叙述中,错误的是(&&& )。
& & A)类是对一类具有相同的属性和方法对象的描述
&&& B)属性用于描述对象的状态
&&& C)方法用于表示对象的行为
&&& D)基于同一个类产生的两个对象不可以分别设置自己的属性值
& (4)在软件开发中,需求分析阶段产生的主要文档是(&&& )。
&&& A)数据字典&&& B)详细设计说明书
&&& C)数据流图说明书&&& D)软件需求规格说明书
& (5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和(&&& )。
&&& A)编码设计&&& B)测试阶段&&& C)运行阶段& 、.D)物理设计
& (6)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是(&&& )。
&&& A)并&&& B)交&&& C)投影&&& D)除
& (7)下列叙述中,正确的是(&&& )。
&&& A)软件交付使用后还需要进行维护&&&
&&& B)软件一旦交付使用就不需要再进行维护
&&& C)软件交付使用后其生命周期就结束
&&& D)软件维护是指修复程序中被破坏的指令
& (8)设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为(&&& )。
&&& A)7&&& B)8&&& C)9&& D) 10
& (9)设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T= Rxs,则T的元组的个数为(&&& )。
&&& A)6&&& B)8&&& C)9&&& D) 12
& (10)下列选项中,不属于数据库管理的是(&&& )。
&&& A)数据库的建立&&& B)数据库的调整& C)数据库的监控& D)数据库的校对
& (11)对于一个正常运行的C程序,下列叙述中正确的是(&&& )。
&&& A)程序的执行总是从mam函数开始,在main函数结束
&&& B)程序的执行总是从程序的第一个函数开始,在maln函数结束
&&& C)程序的执行总是从main函数开始,在程序的最后一个函数中结束
&&& D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束
(12)以下选项中与if(a==l)a++;else a=b;语句功能不同的语句是(&&& )。
A) switch(a)&&&&&&&&&&&&&&&&&&&&&&&&& B) switch(a== 1)
&&&& {case 0: a=b;&&&&&&&&&&&&&&&&& {case O:a++;
&&&&& default: a++;&&&&&&&&&&&&&&&&&&&&&& default:a=b;
&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&}
C) switch(a)&&&&&&&&&&&&&&&&&&& .&&& D) a=(a==l)?(a++):b
&' {default:a=b;
&&&&& case 1:a++;
(13)以下不合法的用户标识符是(&&& )。
A) 804zhang&&&&&&& B) _hh&&&&&&&&&& C) yy614&&&&&&&& D) If
(14)已知char a;int b:float c;double d;则表达式a-b+c-d结果为(&&& )型。
&&& A) double&&& B) float&&& C) int&&& D) char
(15)假设有语句sizeof(double),则它是(&&& )。
&&& A) -个整型表达式&&& B)一个双精度浮点型表达式
&&& C) -种函数调用&&& D)一种函数定义
(16)若变量都已正确说明,则以下程序段输出结果为(&&& )。
&#include&stdio.h&&& .
&& {char a='a';
&& int b=2;
&&&&&&& printf(a&b? &***a=%d&:'###b=%d&,a,b);
&A) ***a=3&&&&&&&&& B) ###b=3&&&&& C) ***a=3##b=5
D)全部错误
(17)若有以下定义(设int类型变量占2个字节)
&&& int i=8,j=9;
&&& 则以下语句:
&&& printf(&i-%%d,j=%%%d\n&,i,j);
&&& 输出的结果是(&&& )。
&&& A) i=8,j=9&&& B)i=%d,j=%8&&& C)i_%d,j=%d&&& D) 8,9
(18)设a和b均为int型变量,且a=6,b=11,则能使值为3的表达式是(&&& )。
&&& A)b%(a%4)B) b% (a-a%5)&&& C) b%a-a%5&&& D)(b%a).(a%4)
(19)有关return语句说法不正确的是(&&& )。
&&& A)系统默认的返回值类型为整型,故当函数的返回值为int型时,在函数定义时,返回值的类型说明可以省略
&&& B)当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数
&&& C)当函数没有返回值时,函数的返回值类型可以说明为void型,它表示&无类型&或&空类型&
&&& D)函数的返回值类型必须与return语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型
(20)有以下程序:
#include&stdio.h&
&{&&&&& int i=O,a=0;
while(i&20)
&&& .&&&& { for(; ;)
&&&& { if((i%5)==O)
&&&&&&&& &else i--;
&&&&&&&&&&&&& }&&&&&
&i+=13,a+=i;
&&&&&&&&&& }&&&&&&&
printf(&%d/n&,a);
&&&&& }'
程序的输出结果是(&&& )。
A) 62&&& B) 63&&& C) 23&&& D) 36
(21)在下列选项中,没有构成死循环的程序段是(&&& )。
&A) inti=100;&&&&&&&&&&&&&&&&&&& B) while(l);
&&&&&&& { i=i%10+1; .&&&& &
&&&&&&&&& if(i&10)
&C) intk=0;&&&&&&&&&&&&&&&&&&&&&& D) int s=12;
& . do{++k;}while(k&=10);&&&&&&&&&&&& while(s);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& --s;
(22)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(&&& )。
&&& A)函数调用可以作为独立的语句存在
&&& B)函数调用可以作为一个函数的实参
&&& C)函数调用可以出现在表达式中
&&& D)函数调用可以作为一个函数的形参
(23)以下程序的输出结果是(&&& )。
#include&stdio.h&
{ int a=l,b=3; .
&&&&&& if((++a&0)&&! (b--&=0))&&&&&&&&&&&&&&&
printf(&%d,%d\n&,a,b);
printf(&%d,%d\n&,b,a);
A) 2,2&&&&&&&&&& B) 1,3&&&&&& C-) 3,2&&&&& . D) 3,1
(24)有以下程序:
#include &stdio.h&
&&&&&&& scanf (&%d&, &x);
&&&& if(x&=0) ;&& else& .
& if(x!=5) printf(&%dYn&,x);
程序运行时,输入的值在哪个范围才会有输出结果(&&& )。
A)不等于5的整数&&& B)大于0且不等5的整数
&&& C)大于0或等于5的整数&&& D)小于5的整数&
,(25)若执行下述程序时,若从键盘输入6和8,结果为(&&& )。
&&&&&& { int a,b,s;
scanf(&%d%d&,&a,&b);
&&& if(s=b)& .
printf(&%d&,s);
&.& A) 36&&&&&&&&&&& B) 64&&& .&&& .& C) 48
D)以上都不对
(26)若运行时给变量x输入12,则以下程序的运行结果是(&&& )。
&{. int x,y;
scanf(&%d&,&x);
y=x&12?x+10:x-12;
printf(&%dYn&.,y);
A) 0&&&&&&&&&&&& B) 22&&&&&&&&& C) 12&&&&&&&&& D) 10
(27)运行下面程序时,从键盘输入字母A,则输出结果是(&&& )。
&#include&stdio.h&& .
&&& ch=getchar();&&
&&&& switch(ch) .
&&&& { case'A':printf(&AAAA\n&);
case'B':printf(&BBBB\n&);
default:printf(&CCCC\n&);
&A) AAAA&&&&&&&& B) AAAA&&&&&& C) AAAA&&&&&& D) AAAA
&&&&&&&&&&&&&&&&&&& BBBB&&&&&&&&& BBBB&&&&&&&&& CCCC
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& CCCC
(28)以下叙述正确的是(&&& )。?
&&& A)只能在循环体内和switch语句体内使用break语句
&&& B) contiune语句的作用是结束整个循环的执行
&&& C)在循环体内使用break语句或continue语句的作用相同
&&& D)从多层循环嵌套中退出时,只能使用goto语句
(29)下列叙述中错误的是(&&& )。
&&& A)在C语言中,对二进制文件的访问速度比文本文件快
&&& B)在C语言中,随机文件以二进制代码形式存储数据
&&& C)语句FILE定义了一个名为fp的文件指针
&&& D)C语言中的文本文件以ASC II码形式存储数据
(30)若输入&abcdef&、&abdef&&以下程序的输出结果为(&&& )。
& &&#include&stdio.h&
#include&string.h&
&&&&&&& char s1[20l,s2[20],*pl:*p2;
scanf(&%s&,sl);
scanf(&%s&,s2);
&&& n=strcmp(p1,p2); .
printf(&%d\n&,n);}
& A) -1&&&&&&&&&&& B) 0&&&&&&&&& C) &abcdef'&&&&& D) &abdef'
(31)以下语句定义正确的是(&&& )。
A)int a【1]【4】={l,2,3,4,5);&&& B)noat a【3]【】-{{l},{2),{3));
C)long a【2】【3】={{l},{1,2),{1,2,3),{o,O)};& D)double a口【3】={O);
(32)下述程序的输出结果是(&&& )。
#include&stdio.h&
void main()
&{& int a[5]={1,2,3,4,5};
&&& int *p=a,**q=&p;
printf(&%d&,*(p++));
&printf(&%d&,**q); .
A) 22&&&&&&&&&&& B) 11&&&&&&&&& C) 34&&&&&&&&& D) 12
(33)字符串&\\\&ABCDEF\&\\&的长度是(&&& )。& .
&&& A) 11&&& '&&& B) 10&&& C)5&&& D)3
(34)若二维数组a有m列,则在a[il[j]前的元素个数为(&&& )。
&&& A) j*m+i&&& B)i*m+j&&& C)j*m+i+l&&& D)i*m+j+l
(35)下列程序的运行结果是(&&& )。
#include&stdio.h&
&void fun (int*s,int*p)
& {& static int t=3;
&void main()
&{& int a[]={2, 3, 4, 5},k,
&&& for(k=0; k&4; k++)
&&& {& . fun (a,&x);
&&&&&&&&&&&&& printf(&%d, &, x);
A) 5,4,3,2,&&&&&&& B) 2,3,4,5,&&&&&& C) 2,2,2,2,&&&&&& D) 5,5,5,5,
(36)以下有关宏替换的叙述不正确的是(&&& )。
&&& A)双引号中出现的宏名不替换&&& B)使用宏定义可以嵌套
&&& C)宏定义仅仅是符号替换&&& D)宏名必须用大写字母表示
(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是(&&& )。
&&& A) charstr[]=&string&;c=&&& B) scanf(&%s&,c);
&&& C) c=getchar();&&& D) char str[]=&string&; strcpy(&c,str'&)
(38)有以下程序:
#include &stdio.h&
#include&string.h&
{&&charb[10];};&&&& .
&&&& void f(struct A 't);& .
{ struct A a={lOOl,&ZhangDa&,1098.0};
&&&&&&&&&&& f( &a);printf( &%d,%s,%6.1f\n&,a.a,a.b,a.c);
void f(struct A *t)
{ t-&a~1002;strcpy(t-&b,&ChangRong&); t-&c=1202.0;}
程序运行后的输出结果是()。
A)& 1001, zhangDa, 1098.0&&& B)& 1002, ChangRong, 1202.0
C)& 1001, ChangRong, 1098.0&&& D)& 1002, zhangDa, 1202.0
(39)下述程序的输出结果是(+& )。
#include&stdio.h&
void main()
{ chara=1,b=2;
&&& char c=a^b&&2;
&printf(&\n%d&,c);&& .
A) 9&&&&&&&&&&&& B) 10&&&&&&&&& C) 12&&&&&&&&& D) 2
(40)已知一个文件中存放若干工人档案记录,其数据结构如下:
' struct a
& { charnumber [100l;&& .
&&&& float p[6];
定义一个数组:struct a number[10];
假定文件已正确打开,不能正确地从文件中读入10名工人数据到数组b中的是(&&& )。
A) fread(b,sizeof(struct a),10,fp);&&&&&&&&&&&&&&& B) for(i=O;i&10;i++)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& fread(b[il,sizeof(struct a),l,fp);
C) for(i=O;i&10;i++)& .&&&&&&&&&&& .&&&&&&&&&&&&&&&&& D) for(i=O;i&5;i+=2)&&&& .
&&& . fread(b+i,sizeof(struct a),l,fp);&&&&&&&&&&&&&&& fread(b+i,sezeof(struct a),2,fp);
二、填空题(每空2分,共30分)
(1)在算法正确的前提下,评价一个算法的两个标准是空间复杂度和&&&&&&&&&& 。
(2)二叉树的遍历可以分为三种:前序遍历&&&&&&&&&& 遍历和后序遍历。
(3)软件危机出现于20世纪60年代末,为了解决软件危机,人们提出了&&&&&&&&& &的原理来设计软件,这就是软件工程诞生的基础。
(4)____是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。
(5)程序测试分为静态测试和动态测试。其中________是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
(6)若a是int型变量,则表达式(a-2-3,a*2),a+6的值为________。
(7)若有定义:int a-6,b=8,c=14;接着顺序执行下列语句后,变量c中的值是&&& 。
&&& c=(b-=(a.5));
&&& a=(c%3)+(a=8);
(8)下面程序的功能是:输出100以内能被3整除且个位数为9的所有整数,请填空。
&{ inti,j;
&&&&&&&& for(i=0; ~&&&&&& _;i++)
&&& {& j=i*10+9;
&&&& if(j%3!=O) '
printf(&%d&j);
&&&&&&&& }
(9)以下程序的运行结果是____
#define S(x) x*x
while(k&=4)
{printf(&%d,&,S(k));
(10)以下程序调用函数swap将指针s和t所指单元(a和b)中的内容交换,请填空。
{ int a=10,b=20,*s,*t;&&& .
&s=&a;t=&b;& :
printf(&%d%d&,a,b);
swap(int *ss,int *tt)
&& te= *&&&&& .
(11)下面程序输出的结果是____
int fun(int x,int y)
retum(x*y-m);
&{ int a=5,b=7;
printf(&%d\n&,fun(a,b)/m);
(12)以下程序的输出结果是____
#define PR(ar) printf(&ar=%d &,ar)
{ intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;
for(j=3;j;j--)
&&&& {&& case 1:
&&&&&&&& case 2:PR(*p++);
&&&&&&&& case 3:PR(*(--p));
}&&&&&&&&&
(13)以下程序的运行结果是
#defineA 4
#define B(x) A*x/2
{ float c,a=8.0;
&&& c =B(a);&&&&
printf(&%f\n&,c);
(14)有以下程序:
#include&stdio.h&
#include&string.h&
&{& char a[]={'a','b','c','d','e','f,'g','h','\O'};int i,j; .
&. i=sizeof(a)j=strlen(a);
printf(&%d,%d&,i,j);
&&& 程序运行后的输出结果是________
(15)本程序用冒泡法对数组a[]的元素从大到小排序,请在程序空白处填空。
& void bubble(int a[l,int n)
&& {& int i,j,max,
&& do{ j=0;
for(i=O;i&i++)
if(a[i]&a[i+l])
&&&&&&&&&&&&&&& {&&&&& temp=a[i];a[i]=a[i+l];a[i+l]= .
&&&&&&&&&&& }
&&& } while(______);
答案及解析:&& 一、选择题
&&& (1)D)&&& 【解析l算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的& 空间、输入的初始数据所占的存储空间以及算法执行中所需要的额& 外空间。其中额外空间包括算法程序执行过程中的工作单元以及某& 种数据结构所需要的附加存储空间。如果额外空间量相对于问题规 模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减& 少不必要的额外空间。
&&& (2)D)&&& 【解析l数据的存储结构是指数据的逻辑结构在& 计算机存储空间中的存放形式,一种数据结构可以根据需要采用不& 同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存& 储结构,其处理的效率是不同的。
&&& (3)D)&&& 【解析】类是对一类具有相同的属性和方法对象的描述,属性用于描述对象的状态,方法用于表示对象的行为,基& 于同一个类产生的两个对象是可以分别设置自己的属性值的。
&&& (4)D)&&& 【解析l需求分析的最终结果是生成软件需要规& 格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。
&&& (5)D)&&& 【解析】【解析】数据库设计目前一段采用生命& 周期法,即将整个数据库应用系统的开分解成目标独立的若干阶段,&&它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计& 阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据& 库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构& 和模型设计为主线。
&&& (6)B)&&& 【解析】关系R与s经交运算后所得到的关系是& 由那些既在R内又在s内的有序组所组成,记为R&S,交运算不改& 变关系表中的属性个数但能减少元组个数。
&&& (7)A)&&& 【解析】软件的运行和维护是指将已交付的软件& 投入运行,并在运行使用中不断地维护,根据新提出的需求进行必& 要而且可能的扩充和删改。而软件生命周期是指软件产品从提出、& 实现、使用维护到停止使用退役的过程。
&&& (8)B)&&& 【解析】在具有n个结点的满二叉树,其非叶子& 结点数为int(n/2),而叶子结点数等于总结点数减去非叶子结点数。& 本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于& 15-7=8。
&&& (9)C)&&& 【解析1&& R为n元关系,有p个元组S为m元关& 系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个& 数是qXp。所以T的元组的个数为9个。
&&& (10)D)&&& 【解析】数据库管理一般包括:.数据库的建立、& 数据库的调整、数据库的重组、数据库的安全性控制与完整性控制、& 数据库的故障恢复和数据库的监控。
&&& (11)A)&&& I解析】一个C语言源程序无论包括了多少函& 数,总是从main涵数开始执行,从main函数结束。
&&& (12)B)&&& 【解析I if else语句的含义是,如果变量a的值& 等于1.变量a的值加l,否则,则把变量b的值赋给变量a。在本& 题的4个选项中,与其含义不同的是选项B),因为没有break语句,& 当a-l的时候,会顺序执行两条语句,最终结果是将b的值赋给a。
&&& (13)A)&&& 【解析lC语言规定,标识符是由字母、数字或& 下划线组成,并且它的第一个字符必须是字母或下划线。
&&& (14)A)&&& 【解析】c语言中允许进行不同数据类型的混合& 运算,但在实际运算时,要先将不同类型的数据转化成同一类型再& 进行运算。类型转换的一般规则是;①运算中将所有char型转换成.& int型,float型转换成double型;②低级类型服从高级类型,并进行& 相应的转换,数据类型由低到高的顺序为:char-&int-&.unsigned.&& long-&float-&③赋值运算中最终结果的类型,以赋值运算符& 左边变量的类型为准,&即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应转换。
&&& (15)A)&&& 【解析1 sizeof(double)是C语言内部规定的一个计算参数( double)在计算机的内存中所占用的字节数量的函数,它返回一个整数值。
&&& (16)D)&&& 【解析】本题考查printf函数的格式和三目运算符&?:&的使用。printf函数中格式说明符之前插入的任何字符都原样输出。本题中a&b为真,所以返回&.***a=97&。
&&& (17j B)&&& 【解析】本题考查printf函数的格式。printf函数中格式说明符之前插入的任何字符都按原样输出。对于printf函数,有两个%说明,第一个%后面的内容要按原样输出。
&&& (18)D)&&& 【解析l表达式&a%b&表示的是求a除以b的余数。因此,选项A):(6%4)-2.11%2=l;选项B):(6-6%5)=5.11%5=1;选项C): 11%6-6%5;4;选项D):(11%6)-(6%4)=3。
&&& (19)D)&&& 【解析】函数的返回值类型一般与retum语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型。
&&& (20)D)&&& 【解析J,本题考查while循环。当i&2,0时,进入while循环体,循环体内的for循环实现的功能是,当i值是0或5的倍数时,执行&i+=13:a+=i&这两条语句;若i值不是5的倍数则一直执行for循环。①当i=0时,执行i+=13;a+=i;i=13,a=13;②判断i=13&20,进入while循环体,i=10时,跳出for循环,执行i+=13: aH: i=23,a=36;③判断i=23&20,循环结束。
&&& (21)C)&&& 【解析】本题考查死循环的知识。选项A)中,for循环没有任何控制语句就会一直执行下去,所以不可能通过控制表达式的值结束循环。循环体内,i=i%10+1这个表达式的值永远小于10,所以永远不会跳出循环,是死循环;选项B)中,while中表达式永远是非O,不会结束循环:选项C)中,当k&10时,结束循环;选项D)中,while(s);后面没有任何表达式而是直接加了一个分号,会一直执行,形成死循环。&
&& (22)D)&&& &解析】本题考查函数调用的有关知识点。函数调用①可以出现在表达式中;②可以作为独立的语句存在;③可以作为一个函数的实参。
&&& (23)C)&&& 【解析】解答本题的关键在于if语句条件中的表达式。初始时a=l,b-3,所以++a=2&0,因此++a&0为假;因为是进行逻辑与(&&)运算,在&&的一个运算对象为假的前提下不用判断第二个运算对象的真假,就可以直接得出整个表达式的值为逻辑0,所以执行else语句。
&&& (24)B)&&& 【解析1题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大于O且不等于5时将其打印出来。&&&
&&& (25)B)&&& 【解析】首先通过scanf函数把从键盘读入的数据赋给变量a和b,if语句判断如果a和b不等,执行s=s*s=64。
&&& (26)A)&&& 【解析】本题考查三目运算符&?:&。表达式&x&12?x+10:x-12&即,如果x&12成立,则x+10的值即为此表达式的值,否则x-12即为此表达式的值。因为x=12,所以x&12不成立,所以执行y=x-12=0。
&&& (27)C)&&& 【解析】本题考查switch语句。因为ch=A,所以第一个switch语句,执行case 'A&后面的语句,输出AAAA,没有遇到break语句,所以接着再执行case'B&和default,分别输出BBBB和cccc。
&&& (28)A)&&& 【解析】本题考查循环的4个知识点:①break语句可以出现在循环体内及switch语句体内,不能用于其他的语句;②continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而接着转去判定循环条件是否成立,从而确定下一次循环是否继续执行,也就是说执行contiune语句不会使整个循环终止:⑧在循环体内使用break语句会使循环提前终止:④从多层循环嵌套中退出时,可以使用goto语句或者break语句。
& (29)C)&&& 【解析l在c语言中,文件指针实际上是指向一个结构体类型的指针,一般称这个结构体类型名为FILE,可以用此类型名来定义文件指针。定义文件类型指针变量的一般形式为:FILE-指针变量名;选项c)中少了&*&所以选项c)错误。
&&& (30)A)&&& 【解析】本题考查两个知识点:①字符串比较函数strcmp(sl,s2),若sl&s2,则返回1;若sl=s2,则返回O;若sl&s2,则返回.1。②字符串依次比较的是它们相同位置上字符的ASCII码值。
&&& (31)D)&&& 【解析】本题考查的是如何对二维数组进行赋值。选项A)中数组第二维的大小是4,但却给赋了5个元素;选项B)中C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式而不可以省略第二个方括号中的常量表达式;选项c)中数组第一维的大小是2,但是赋值却超过了2:选项D)中在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取O。
&&& (32)D)&&& 【解析】程序首先定义了一个指向一维数组a的指针p,一个指向指针变量p的指针变量q,输出.(p++哆是先输出*p即a【O]的值,再将指针p指向数组的下一个元素a[l],输出**q是输出指针p所指向单元的内容,即a[l]的值。
&&& (33)B)&&& 【解析】本题涉及字符串的两个最基本的概念。①字符串的长度是指字符串中字符的个数,但不包含字符串结束符;②以反斜线&\&开头的特殊字符序列,意思是把反斜线后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,&\&连同后面的字符为一个长度。
&&& (34)B)&&& 【解析l 二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第=行的元素。&&& 数组第一维的下标是1,说明它前面还有i行,有i*n个元素,数组第二维的下标是j,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。
&&& (35)A)&&& 【解析】分析fun函数程序段,可知fun函数要实现的功能是将s中第(什1)个元素以前的元素逆置赋给数组p。由于fun函数定义了静态变量t=3,因此,在主函数中讽用函数fun(a,&x)时,就是要将数组a中前4个元素逆景赋给数组x,最后输出x数组。
&&& (36)D)&&& 【解析】本题考查宏替换的规则。宏替换分为简单的字符替换和带参数的宏替换两类。使用宏时应注意以下几点:①定义仅仅是符号替换,不是赋值语句,因此不做语法检查;②为了区别程序中其他的标识符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。
&&& (37)A)&&& 【解析】在题目的题干中定义了字符指针变量c,在选项A)中,首先定义字符数组str然后再把字符数组str的首地址赋给字符指针变量c。所以选项A)是正确的。在选项B)中,应改成scanf(&%s&,&c);在选项c)中,getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回.1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。即c只能指向~个字符而不能指向字符串。在选项D)中,strcpy函数只是将str字符串中的内容赋给c,并没有使其指向str,所以选项D)是错误的。
&&& (38)B)&&& 【解析】本题主要考查是的函数调用时参数之间的传递问题。在c语育中参数之间的传递是传值i也就是把实参的值复制一份传递给形参,丽实参的值不发生变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参变化。&&
& (39)A)&&& 【解析】本题主要考查c语言最基本的算术运算& &左移(&&)&和&异或(^)&。&&& &左移&或&右移&运算表达式的一般形式为:x&&n或x&&n。& &左移(&&)&运算的规则是将x的二进制位全部向左移动n位,将& 左边移动的高位舍弃,右边空出的位补0;&右移(&&)&运算的规& 则是将x的二进制位全部向右移动n位,将右边移动的高位舍弃,左& 边高位空出要根据原来符号位的情况进行补充,对无符号数则补O,& 对有符号数,若为正数则补O,若为负数则补l。
&&& &异或&运算是当两个运算量的相应位相同时结果为O,不相& 同时结果为l。b=2的二进制为(OO0OO010) b&&2后为OOO01000,& a=l的二进制为OOOOOO01,所以c=a^b&&2为OOO01001,转化为十& 进制后为9。&&& 、
&&& (40)B)&&& 【解析】数据块输入/输出函数的调用格式为:fread(buffer,size,count,fp),其中&buffer&是一个指针,对于fread来说,它是读入数据的存放地址。&size&是要读写的字节数;&count&是要进行读写多少个slze字节的数据项;&fp&是指文件型指针。选项B)中b[i]是一个数组,不是指针,需改为&b[i]。
&&& 二、填空题
&&& (1)时间复杂度
&&& 【解析】在算法正确的前提下,评价一个算法的两个标准是空间复杂度和时间复杂度。算法的时间复杂度,是指执行算法所需要的计算工作量。算法的空间复杂度是指执行这个算法所需要的内存空间。
&&& (2)中序
&&& l解析】二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。
&&& 前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
&&& 中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右予树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树.&& 序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。&
&& (3)软件工程学
&&& 【解析】,为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向工程科学的途径,逐步形成了软件工程的概念,开辟了工程学的新兴领域&&软件工程学。
&&& (4)逻辑独立性&&&
&&& 【解析】数据独立性包括数据的物理独立性和逻辑独立性。物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。数据在磁盘上的数据库中怎样存储是由DBMS管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时,应用程序不用改变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。
&&& (5)静态测试
&&& 【解析】静态测试指不在计算机上运行被测试程序,而采用其他手段来达到对程序进行检测的目的,包括人工测试和计算机辅助静态分析方法。动态测试指通过在计算机上运行被测试程序,并用所设计的测试用例对程序进行检测的方法。
&&& (6) 12
&&& 【解析】本题考查逗号表达式的运算规则。逗号表达式的基本格式为:&表达式1,表达式2.&&,其整个表达式的结果取最后一个子表达式的值。
&&& 本题中首先计算逗号表达式中的第1个表达式a2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,所以a的值不变;接下?执行最后一个表达式a+6=12,即整个表达式最后的值为12。
&&& 【解析】本题考查基本赋值运算符和赋值表达式。c=(b-=a-5))等价于c=b-(a-5):7,c%3=1,a=(c%3)十(a=8)=9,但c的值在第二条语句只能够并没有被改变,因此c的值还是7。
&&& (8) i&10
&&& 【解析】分析程序,当(i=0,l,2,&)时,&j=1*10+9&语句的运行结果是(9,39,69,99)个位数为9的所有整数;题中要求是100以内的整数,所以i&10;&if(j%3 ! =O)&语句的功能是当条件不能被3整除时,继续循环不执行操作,直到能被3整除时输出该数,即输出的数满足条件1oo以内能被3整除且个位数为9。
&&& (9)l,4,9,16.
& &&I解析】分析程序执行过程,第1次循环,k=l时.此时S(l)=l*l=l,然后k的值加l;第2次循环,k=2时,S(2)=2*2=4,然后k的值加1:第3次循环,k=3时,S(3)=3*3=9,然后k的值加1;第4次循环,k=4时,S(4)=4*4=16,然后k的值加l;当k=5时,条件不满足,退出循环。&&&
&&& (IO) swap(s,t);
&&& 【解析】本题要在主函数中调用swap函数交换a、b的值,实现数据交换需要进行地址传递,所以函数的形参都应该是需要交换的数据的地址,程序中通过&a=&a;t=&b;&将指针变量a和t指向变量a、b的地址,因此,引用时直接引用指针变量s和t即可.
&&& 【解析】本题考查局部变量和全局变量的区别。局部变量是指作用域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。
&&& 本程序首先定义了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个局部变量m=3,m=3的作用域仅在fun函数内部,通过fun函数返回两个形参的积再减m。在主函数中,输出fun(a,b)/m=(5*7-3)/17=1。&&&
&&& (12)ar=6 ar=6 ar=13&&& ,
&&& 【解析】通过.*p=a+5将指针p指向a【5],第1次循环.j=3时,switch(3),执行case 3,*(--p)=a【4】=6,所以输出ar=6;第2次循环,j=2时,switch(2),执行case 2,(.p++)是先引用a[4]的值6,输出ar=6,再将指针p移位指向a[5].第3次循环,j=l时,switch(l),执行case1,case l后没有break语句,接着执行case2,(+p++)是先引用a【5]的值13.输出ar=13,再将指针p移位指向a[6]。
&&& (13) 16.000000
&&& 【解析】本题考查带参数的宏的定义及相关运算。运算过程为:c=B(a)=4*8.0/2=16.oooooo.
&&& (14)9,8
&&& 【解析I sizeof(a)是统计字符所占的字节数,字符串结束标志&\o'.也占一个字节,也要算进去,所以i=9。而srlen(a)是计算字符串的长度,不包括字符申结束标志'0\',所以j=8。,
&&& (15) max&0
&&& I解析l本题是典型的冒泡排序题,每一次for循环将从数组a中找出剩下数中的最大的值放在这些数的最前端,若数组a中有n个数,则完成数组排序共需n-l次循环。令max=n-l,每次循环后i值增l,i&max条件不足,即n-l次循环后,此时i=j=max=0,循环结束。
计算机二级
2012年全国计算机等级考试二级专题--博才网
猜你还喜欢的文章
热点文章排行榜
读完这篇文章后,您心情如何?
您还有150字可以输入
更多资讯请点击
热门关键字:,,,
【打印文章】
军艺19岁校花黄筱婷清纯照曝光 舞姿柔软似水
19岁完美超模
棚拍-机车MM棚拍-机车MM
被影射曾援交的女星们(图)
《二炮手》海清裸肩浴照曝光 镜头疑因尺度大被剪
最青春!杭州武汉艺考现场美女如云(组图)
• 版权所有 Copyright 2011 All rights reserved.

我要回帖

更多关于 二级c语言加油站 的文章

 

随机推荐