c语言计算机二级题目类型考试题目 图中类型的题目该怎么做

全国计算机等级考试二级C语言:课后习题和典型例题详解
C语言等级考试一直是广大朋友比较头痛的,针对此种情况21互联特聘请了资深的老师,录制了C语言等级考试课程,使广大朋友能够迅速掌握相应的知识点,顺利通过考试。此视频教程由
提供,网易学院和21互联联合发布。
我也评两句
通行证: 密码: 您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
2015年全国等级考试计算机二级C语言选择题加强版训练 包含多套试题 含答案.doc292页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:120 &&
你可能关注的文档:
··········
数据集合为D
1,3,4,5,7,9 ,D上的关系为R,下列数据结构B
D,R 中为非线性结构的是
9,7 , 1,3 , 7,1 , 3,5
1,3 , 3,5 , 5,9
1,9 , 9,7 , 7,5 , 5,3
5,1 , 7,9 , 1,7 , 9,3
本题考查非线性结构的特点。非空线性结构要满足两个条件:①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件。在线性结构中插入或删除任何一个结点后就不满足这两个条件了,则该数据结构为非线性结构。同时,缺少任何一个条件,也可能是非线性结构。
下列叙述中正确的是
有的非线性结构也能采用顺序存储结构
所有数据结构既可以采用顺序存储结构,也可以采用链式存储结构
非线性结构只能用多重链表表示
非线性结构只能采用链式存储结构
本题考查顺序存储结构与链式存储结构与非线性结构的关系。顺序存储结构既能存放线性结构,也能存放非线性结构。如完全二叉树是非线性结构,但其存储方式为顺序存储。
某二叉树的中序序列为BDCA,后序序列为DCBA,则前序序列为
"本题考查二叉树的遍历。前序遍历为首先遍历根结点,再遍历左子树,然后遍历右子树,简称“根左右”,中序遍历为“左根右”,后序遍历为“左右根”。因此,由后序序列知,二叉树的根结点是A,其左结点为B,无右结点;B的左子树为DC,无右子树,B的右结点为C,无左结点,C的左结点为D,无右结点,因此,前序序列为ABCD。"
深度为7的完全二叉树中共有125个结
正在加载中,请稍后...C语言二级试题及答案二_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言二级试题及答案二
上传于||文档简介
&&C​语​言​二​级​试​题​及​答​案
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩15页未读,继续阅读
你可能喜欢2013计算机二级考试C语言试题及答案第二套
一、选择题
在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(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中每个元素距其最终位置不远,为节省时间,应采用的算法是
&&& A)堆排序&&&&&&&&& B)直接插入排序&&&&&&&&&&& C)快速排序&&&&&&&&&& D)B)和C)
(7)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是
&&& A)ABCED&&&&&&&&& B)DCBEA&&&&&&&&&& C)DBCEA&&&&&&&&& D)CDABE
(8)设计包括两个方面的设计内容,它们是
&&& A)概念设计和逻辑设计&&& B)模式设计和内模式设计&&& C)内模式设计和物理设计&&& D)结构特性设计和行为特性设计
(9)关系表中的每一横行称为一个
&&& A)元组&&&&&&&& B)字段&&&&&&&& C)属性&&&&&&&&& D)码
(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字 (键或码)为
&&& A)课号,成绩&&&&&&&&& &&&B)学号,成绩&&& C)学号,课号&&&&&&&&&&&& D)学号,姓名,成绩
(11)以下不正确的叙述是
&&& A)在C程序中,逗号运算符的优先级最低&&& B)在C程序中,APH和aph是两个不同的变量
&&& C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
&&& D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
(12)请选出可用作C语言用户标识符的是
&&& A)void,define,WORD&&&&&&&&&&&& B)a3_b3,_123,IF&&& C)FOR,--abc,Case&&&&&&&&&&&&&& D)2a,Do,Sizeof
(13)以下选项中,不能作为合法常量的是
&&& A)1.234e04&&&&&&&&& B)1.234e0.4&&&&&&&&&& C)1.234e+4&&&&&&&&&& D)1.234e0
(14)在C语言中,运算对象必须是整型数的运算符是
&&& A)%&&&&&&&&&&&&&&&&&&&&&&&& B)&&&&&&&&&&&&&&&&&&&& C)%和&&&&&&&&&&&&&&&&&&& D)**
(15)若变量均已正确定义并赋值,以下合法的C语言赋值语句是
&&& A)x=y==5;&&&&&&&&&&&&&& B)x=n%2.5;&&&&&&&&&&& C)x+n=i;&&& &&&&&&&& D)x=5=4+1;
(16)有以下程序段
char&&&& int&
ch=&a&;&&&& k=12;
printf(&%c,%d,&,ch,ch,k);&&& printf(&k=%d n&,k);
已知字符a的ASCII码值为97,则执行上述程序段后输出结果是
&&& A)因变量类型与格式描述符的类型不匹配输出无定值&&& B)输出项与格式描述符个数不符,输出为零值或不定值
&&& C)a,97,12k=12&&& D)a,97,k=12
(17)已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是
&&& A)kk&=&A&&& kk&=&Z&&&&&&&&&&& B)!(kk&=&A&||kk&=&Z&)&&&& C)(kk+32)&=&a&&&(kk+32)&=&Z&&&& D)isalpha(kk)&&(kk&91)
(18)当变量c的值不为2、4、6时,值也为&真&的表达式是
&&& A)(c==2)||(c==4)||(c==6)&& B)(c&=2&& c&=6)||(c!=3)||(c!=5)& C)(c&=2&&c&=6)&&!(c%2)&&& D)(c&=2&& c&=6)&&(c%2!=1)
(19)若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是
&&& A)(exp==0)&&& &&&& B)(exp!=0)&&&&&&&& C)(exp==1)&&&&& &&&&&&&&&& D)(exp!=1)
(20)以下不正确的定义语句是
&&& A)double x[5]={2.0,4.0,6.0,8.0,10.0};& B)int y[5]={0,1,3,5,7,9}; C)char c1[]={&1&,&2&,&3&,&4&,&5&};& D)char c2[]={&x10&, &xa&, &x8&};
(21)下列程序执行后的输出结果是
{ int a[3][3], *p,i;
& p=&a[0][0];
& for(i=1; i&9; i++)p[i]=i+1;
& printf(&%dn&,a[1][2];)
&&& A)3&&& B)6&&&&&&&& C)9&&&&&&&& D)随机数
(22)设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf(&%d&,s);
&&& A)运行程序段后输出0&&& B)运行程序段后输出1&&& C)程序段中的控制表达式是非法的&&&& &&& D)程序段执行无限次
(23)(23)下面程序段的运行结果是
char *s=&abcde&;
s+=2;printf(&%d&,s);
&&& A)cde&&&&&&&& B)字符&c&&&&& C)字符&c&的地址&&&&&& &&&& D)无确定的输出结果
(24)阅读下列程序,则执行后的结果为
#include &stdio.h&
{&& int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};
printf(&%x,%xn&,c[2][2],*(*(c+1)+1));}
&&& A)3e,6&&& &&&& B)62,5&& &&&& C)56,5&& &&& D)3E,6
(25)下面判断正确的是
&&& A)char *a=&china&;等价于 char *a;*a=&china&;&&&& B)char str[5]={&china&};等价于char str[]={&china&};
&&& C)char *s=&china&;等价于 char *s;s=&china&;&&&& D)char c[4]=&abc&,d[4]=&abc&;等价于char c[4]=d[4]=&abc&;
(26)若有定义:int& a[2][3];,以下选项中对a数组元素正确引用的是
&&& A)a[2][!1]&&& B)a[2][3]&&&&&& &&& C)a[0][3] &&& D)a[1&2][!1]
(27)有定义语句:char& s[10];,若要从终端给s输入5个字符,错误的输入语句是
&&& A)gets(&s[0]);&&&& B)scanf(&%s&,s+1);&&&& C)gets(s);&&& &&&& D)scanf(&%s&,s[1]);
(28)有以下程序
#include& &stdio.h&
#define& N& 5
#define& M& N+1
#define& f(x)& (x*M)
{ int& i1,i2;
& i1=f(2);
& i2=f(1+1);
& printf(&%d %dn&,i1,i2);
程序的运行结果是
&&& A)12& 12&& B)11& 7&&& &&&& C)11& 11&&& D)12& 7
(29)若有以下说明和定义
以下叙述中错误的是
&&& A)data的每个成员起始地址都相同&&&& B)变量data所占内存字节数与成员c所占字节数相等
&&& C)程序段:data.a=5;printf(&%fn&,data.c);输出结果为5.000000&&& D)data可以作为函数的实参
(30)有以下程序
#include&stdio.h&
{FILE *int k,n,a[6]={1,2,3,4,5,6};
fp=fopen(&d2.dat&,&w&);
fprintf(fp,&%d%d%dn&,a[0],a[1],a[2]);
fprintf(fp,&%d%d%dn&,a[3],a[4],a[5]);
fclose(fp);
fp=fopen(&d2.dat&,&r&);
fscanf(fp,&%d%d&,&k,&n);printf(&%d%dn&,k,n);
fclose(fp);
程序运行后的输出结果是
&&& A)1& 2&& &&&&&&&&&& B)1& 4&&&& &&&& C)123& 4&&&& &&& D)123& 456
(31)若已定义
int a[]={0,1,2,3,4,5,6,7,8,9}, *p=a,i;
其中 则对a数组元素不正确的引用是
&&& A)a[p-a]&&& B)*(&a[i])&&& C)p[i]&&& D)a[10]
(32)有以下程序
#include& &stdio.h&
void& fun(int& *s,int& n1,int& n2)
{& int& i,j,t;
i=n1;& j=n2;
while(i&j)& {t=s[i];s[i]=s[j];s[j]=t;i++;j--;}
{& int& a[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);& fun(a,4,9);& fun(a,0,9);
for(k=0;k&l0;k++)printf(&%d&,a[k]);&&& printf(&n&);
程序的运行结果是
&&& A)&& B)&& C)&& D)
(33)阅读下列程序,当运行函数时,输入asd af aa z67,则输出为
#include &stdio.h&
#include &ctype.h&
#include &string.h&
int fun (char *str)
{ int i,j=0;
& for(i=0;str[i]!=& &;i++)
& if(str[i]!=& &)str[j++]=str[i];
& str[j]= &&;
& char str[81];
& printf(&Input a string : &);
& gets(str);
& puts(str);
& fun(str);
& printf(&%sn&,str);
&&& A)asdafaaz67&&& B)asd af aa z67&&&&&& C)asd&&& D)z67
(34)有以下程序
int fun(int n)
{if(n==1)return 1;
&&& return(n+fun(n-1));
&&& scanf(&%d&,&x); x=fun(x);printf(&%dn&,x)
执行程序时,给变量x输入10,程序的输出结果是
&&& A)55&&&&&& & B)54&&& && C)65&&& D)45
(35)下面程序段中,输出*的个数是
char *s=&ta18bc&;
for(;*s!='';s++)printf(&*&);
&&& A)9& &&& B)5& &&& C)6& &&& D)7
(36)C语言结构体类型变量在程序运行期间
&&& A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元&&&& B)所有的成员一直驻留在内存中
&&& C)只有最开始的成员驻留在内存中&&&& D)部分成员驻留在内存中
(37)已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是
&&& A)一个整型变量,代表要读入的数据项总数&&& B)一个文件指针,指向要读的文件&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& C)一个指针,指向要读入数据的存放地址&&&& D)一个存储区,存放要读的数据项
(38)设有以下语句
char x=3,y=6,z;
则z的二进制值是
&&& A)&& &&& B)&&& &&& C)&&& &&& D)
(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是
&&& A)auto和register&& &&& B)extern和register&&&& C)auto和static&&&& &&& D)static和register
(40)设有定义语句int& (*f)(int);,则以下叙述正确的是
&&& A)f是基类型为int的指针变量&&&& B)f是指向函数的指针变量,该函数具有一个int类型的形参
&&& C)f是指向int类型一维数组的指针变量&&& D)f是函数名,该函数的返回值是基类型为int类型的地址
二、填空题
请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。
(1)测试用例包括输入值集和& 【1】& 值集。
(2)在树形结构中,树根结点没有&& 【2】&& 。
(3)数据结构分为逻辑结构与存储结构,线性链表属于&& 【3】&& 。
(4)一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体&项目主管&与实体&项目&的联系属于& 【4】& 的联系。
(5)分为以下6个设计阶段:需求分析阶段、&& 【5】&& 、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
(6)下面程序段,则执行后输出的结果是& 【6】& 。
#include &stdio.h&
{&& char fun(char,int);
char a=&A&;
a=fun(a,b);
putchar(a);}
char fun(char a,int b)
(7)函数fun的返回值是& 【7】&&
fun(char *a,char *b)
{ int num=0,n=0;
& while(*(a+num)!='')mm++;
& while(b[n]){*(a+num)=b[n];num++;n++;}
(8)以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后,数组中的内容应该是:
2 3 4 5 6 7 8 9 10。
#include &stdio.h&
#define N 80
int fun(int a[], int n)
{ int i,j=1;
& for(i=1;i&n;i++)
& if(a[j-1]& 【8】& a[i])
& a[j++]=a[i];
&&& 【9】& ;
{ int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10}, i, n=19;
& printf(&The original data : n&);
& for(i=0; i&n; i++)printf(&%3d&,a[i]);
& n=fun(a,n);
& printf(&nThe data after deleted: n&);
& for(i=0; i&n; i++)printf(&%3d&,a[i]); printf(&nn&);
(9)以下程序的运行结果是& 【10】& 。
#include& &stdio.h&
{& int& x=1,y=0,a=0,b=0;
&&&&&& switch(x)
&&&&&& {& case& 1:
&&&&&& switch(y)
&&&&&& {& case& 0:a++;&
&&&&&& case& 1:& b++;&
case 2:a++; b++;
case 3:a++; b++;
printf(&a=%d,b=%dn&,a,b);
(10)以下程序的输出结果是& 【11】& 。
fun (int x,int y,int z)
{ z =x*x+y*y;}
{& int a=31;
fun (6,3,a)
printf (&%d&, a)
(11)函数my_cmp( )的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s&t时返回正值,s&t时返回负值。请填空。
My_cmp(char*s,char*t)
{& while (*s == *t)
{& if (*s == & )return0;
} return& 【12】& ;
(12)以下程序的输出结果是& 【13】& 。
void reverse(int a[],int n)
{ int i,t;
& for(i=0;i&n/2;i++)
& { t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
{ int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
& reverse(b,8);
& for(i=6;i&10;i++)s+=b[i];
& printf(& %dn&,s);
(13)以下说明语句中,& 【14】& 是结构体类型名。
typedef struct
& char ch[8];
(14)以下程序的作用是:从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。
#include& &stdio.h&
{FILE& *& char&
fp=fopen(& 【15】& );
ch=fgetc(fp);
while(!feof(fp))& {& putchar(ch);& ch=fgetc(fp);& }
putchar('n');fclose(fp);
一、选择题
(1)C&&& 【解析】 程序流程图是人们对解决问题的方法、思路或算法的一种图形方式的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流;带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。
(2)C&&& 【解析】 软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们具有抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。
(3)C&&& 【解析】 模块之间的耦合程度反映了模块的独立性,也反映了分解后的复杂程度。按照耦合程度从强到弱分别是:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合,没有异构耦合这种方式。
(4)D&&& 【解析】 软件需求规格说明书(SRS,Software Requirement Specification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它具有以下几个方面的作用:① 便于用户、开发人员进行理解和交流;② 反映出用户问题的结构,可以作为软件开发工作的基础和依据;③ 作为确认测试和验收的依据。
(5)C&&& 【解析】 算法的复杂度主要包括算法的时间复杂度和空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。
(6)B&&& 【解析】 堆排序的比较次数为nlog2n;直接插入排序的比较次数为n(n-1)/2;快速排序的比较次数为nlog2n。当数据表A中每个元素
(7)B&&& 【解析】 栈操作原则上&后进先出&,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈,所以出栈时一定是先出D,再出C,最后出A。
(8)A&&& 【解析】 数据库设计包括数据库概念设计和数据库逻辑设计两个方面的内容。
(9)A&&& 【解析】 关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。
(10)C&&& 【解析】& &选课SC& 表是 &学生S& 表和 &课程C& 表的映射表,主键是两个表主键的组合。
(11)D&&& 【解析】 在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。
(12)B&&& 【解析】 C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C),D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项A)中的void正是C语言的关键字。
(13)B&&& 【解析】 C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。
(14)A&&& 【解析】 在C语言中,&%&运算符两侧的运算数必须是整型。
(15)A&&& 【解析】 赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项C)和D)错误。&%&运算符两侧都应当是整型数据,选项B)错误。
(16)D&&& 【解析】 输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。
(17)B&&& 【解析】 C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。
(18)B&&& 【解析】 满足表达式(c&=2&&c&=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,表达式B)都为&真&。
(19)B&&& 【解析】 条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3其求解顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值,注意++、--的用法。
(20)B&&& 【解析】 在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。
(21)B&&& 【解析】 本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。
(22)B&&& 【解析】 本题中,&!&表示逻辑非运算符,&!=&表示不等于运算符,逻辑非运算符比不等于运算符的优先级高。
(23)C&&& 【解析】 对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。
(24)A&&& 【解析】 数组c[][4]表示一个4行4列数组,c[2][2]表示第3行第3列上的元素62,*(*(c+1)+1))表示第2行第2列上的元素6,通过十六进制输出为3e,6。
(25)C&&& 【解析】 选项A)char *a;*a=&china&应改为a=,选项B)应该是char str[6];D)项表述方法有错误。
(26)D&&& 【解析】 C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0]。
(27)D&&& 【解析】 在格式输入中,要求给出的是变易的地址,而D)答案中给出的s[1]是一个值的表达式。&&&&&&&&&&&&&&&&&& (28)B&& 【解析】 根据宏替换的替换规则,我们可知,f(2)=2*N+1=2*5+1=11,f(1+1)=1+1*N+1=1+1*5+1=7。
(29)D&&& 【解析】 选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C)因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D)C语言规定,不能把共用体变量作为函数的参数。
(30)D&&& 【解析】 将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。
(31)D&&& 【解析】 通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出数组范围,注意,数组的下标是从0开始的。
(32)C&&& 【解析】 函数fun(int *s,int n1,int n2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。
(33)A&&& 【解析】 本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用&留下&字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符''。
(34)A&&& 【解析】 本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。
(35)C&& 【解析】 本题中,格式符0表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。
(36)B&&& 【解析】 结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。
(37)C&&& 【解析】 这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。
(38)B&&& 【解析】 本题考查两个位运算符。
按位异或运算符&^&是双目运算符,其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异或时,结果为1。
左移运算符&&&&是双目运算符,其功能把&&& &左边的运算数的各二进位全部左移若干位,由&&&&右边的数指定移动的位数,高位丢弃,低位补0,并且&&&&运算符的优先级于&^&。
(39)A&&& 【解析】 在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。
(40)B&&& 【解析】 本题考查的是指向函数的指针。语句 int (* f)(int);是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。
二、选择题
(1)【1】 输出&&& 【解析】 软件测试用例是为了有效发现软件缺陷面编写的包含测试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。软件测试用例包括:输入值集和输出值集。测试用例是软件测试的核心。
(2)【2】 前件&&& 【解析】 在树形结构中,每一个结点只有一个前件,称为父结点;没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点;没有后件的结点称为叶子结点。
(3)【3】 存储结构&&& 【解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间前后件关系的信息。
(4)【4】 一对多(或1∶N)&&& 【解析】 两个实体集间的联系实际上是实体集间的函数系,这种函数关系可以有3种,即一对一(1∶1)的联系、一对多(1∶N)或多对一(N∶1)的联系和多对多(N∶N)的联系。
(5)【5】 概念设计阶段&& 【解析】 数据库设计分为以下6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。
(6)【6】 N&&& 【解析】 函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符'A'的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。
(7)【7】 字符串a和b的长度之和&&& 【解析】 本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。
8)【8】!=&& 【9】 return j&& 【解析】 本题程序的流程是:让i,j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以a[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。
(9)【10】 a=2,b=1&& 【解析】 本题考查了 switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case 常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的 case 2:分支,最后a和b的值分别为2和1。
(10)【11】 31&&& 【解析】 在函数调用时,形参值的改变,不会改变实参值。
(11)【12】 *s-*t&&& 【解析】 两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回,所以在空框处应填入*s-*t,保证在s & t时,返回正值,当s & t时,返回负值。
(12)【13】 22&&& 【解析】 在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7]...b[9]的值相加,结果为22。
(13)【14】 PER&& 【解析】 本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。
(14)【15】 &filea.dat&,&r&&&& 【解析】 fopen函数的调用方式通常为 fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容,所以空白处应当填入 &filea.dat&,&r&。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 c语言二级考试题库 的文章

 

随机推荐