全国计算机二级C语言模拟测试【含详细解析】 (10)

1.下列关于栈叙述正确的是( )。

A. 栈顶元素最先能被删除B. 栈顶元素最后才能被删除C. 栈底元素永远不能被删除D. 栈底元素最先被删除正确答案:A你的答案:解析:【解析】栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。

栈底元素最先入栈却最后被删除。

所以选择A)。

2.下列叙述中正确的是( )。

A. 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B. 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C. 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D. 以上说法均不正确正确答案:C你的答案:解析:【解析】栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择C)。

3.某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)( )。

A. 3B. 4C. 6D. 7正确答案:D你的答案:解析:【解析】根据二叉树的基本性质3:在任意一棵二叉树中,多为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。

4.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。

下面属于应用软件的是( )。

A. 学生成绩管理系统B. C语言编译程序C. UNIX 操作系统D. 数据库管理系统正确答案:A你的答案:解析:【解析】软件按功能可以分为:应用软件、系统软件、支撑软件。

操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件。

所以B)、C)、D)都是系统软件,只有A)是应用软件。

5.结构化程序所要求的基本结构不包括( )。

A. 顺序结构B. GOTO跳转C. 选择(分支)结构D. 重复(循环)结构正确答案:B你的答案:解析:【解析】1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。

6.下面描述中错误的是( )。

A. 系统总体结构图支持软件系统的详细设计B. 软件设计是将软件需求转换为软件表示的过程C. 数据结构与数据库设计是软件设计的任务之一D. PAD图是软件详细设计的表示工具正确答案:A你的答案:解析:【【解析】详细设计的任务是为软件结构图中而非总体结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节,所以A)错误。

7.负责数据库中查询操作的数据库语言是( )。

A. 数据定义语言B. 数据管理语言C. 数据操纵语言D. 数据控制语言正确答案:C你的答案:解析:【解析】数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。

8.一个教师可讲授多门课程,一门课程可由多个教师讲授。

则实体教师和课程间的联系是( )。

A. 1:1联系B. 1:m联系C. m:1联系D. m:n联系正确答案:D你的答案:解析:【解析】因为一个教师可讲授多门课程,而一门课程又能由多个老师讲授所以他们之间是多对多的关系,可以表示为m:n。

9.有三个关系R、S和T如下:则由关系R和S得到关系T的操作是( )。

A. 自然连接B. 并C. 交D. 差正确答案:D你的答案:解析:【解析】关系T中的元组是关系R中有而关系S中没有的元组的集合,即从关系R中除去与关系S中相同元组后得到的关系T。

所以做的是差运算。

10.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是( )。

A. -369B. 369C. 0.369D. 整数集合{1,2,3,4,5}正确答案:B你的答案:解析:【解析】只有B)选项369可以用无符号整数来表示和存储。

A)选项-369有负号,选项C)0.369是小数都不能用无符号整数类存储。

选项D)是一个整数集合得用数组来存储。

11.以下叙述中错误的是A. C程序在运行过程中所有计算都以二进制方式进行B. C程序在运行过程中所有计算都以十进制方式进行C. 所有C程序都需要编译链接无误后才能运行D. C程序中字符变量存放的是字符的ASCII值正确答案:B你的答案:解析:【解析】C程序在运行过程中的所有计算都以二进制方式进行,所以B选项错误。

12.以下关于C语言的叙述中正确的是A. C语言的数值常量中夹带空格不影响常量值的正确表示B. C语言中的变量可以在使用之前的任何位置进行定义C. 在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D. C语言中的注释不可以夹在变量名或关键字的中间正确答案:D你的答案:解析:【解析】C语言的数值常量中不能夹带空格,所以A错误。

C语言中的变量都必须先定义再使用,对变量的定义通常放在函数体内的前部,但也可以放在函数外部或复合语句的开头,不能随便放置,所以B错误。

在C语言中运算符两侧的运算数据类型可以不一致,且结果与精度较高的保持一致,所以C错误。

13.以下不合法的字符常量是A. '\\'B. '\"'C. '\018'D. '\xcc'正确答案:C你的答案:解析:【解析】转义字符中,八进制的表示形式为\ddd,但是八进制中不能包含数字8,所以C选项不合法。

14.以下选项中正确的定义语句是A. double, a, b;B. double a=b=7;C. double a; b;D. double a=7, b=7;正确答案:D你的答案:解析:【解析】A选项中变量类型符double后面不能有逗号。

B选项中变量b不能先使用再定义,应该写成选项D中的格式。

C选项中变量a后面应该是逗号而不是分号。

15.若有定义语句:int a=3,b=2,c=1;以下选项中错误的赋值表达式是A. a=(b=4)=3;B. a=b=c+1;C. a=(b=4) +c;D. a=1+(b=c=4);正确答案:A你的答案:解析:【解析】不能将变量或常量赋给一个表达式,所以A选项中(b=4)=3是错误的。

16.若有定义:int a,b;通过语句scanf("%d;%d",&a,&b);能把整数3赋给变量a,5赋给变量b的输入数据是A. 3 5B. 3,5C. 3;5D. 35正确答案:C你的答案:解析:【解析】输入数据的格式必须与scanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入";"。

17.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。

以下不能将变量c中的大写字母转换为对应小写字母的语句是A. c=('A'+c)%26-'a'B. c=c+32C. c=c-'A'+'a'D. c=(c-'A')%26 +'a'正确答案:A你的答案:解析:【解析】根据题意可知,小写字母比与之对应的大写字母的ASCII码大32。

A选项中字符A加上c表示的大写字符再对字母个数26取余,本身这个表达式没有任何含义所以选择A选项。

18.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是A. (E>0||E<0)B. (E==0)C. (! E==0)D. (E!=0)正确答案:B你的答案:解析:【解析】while语句中条件表达式E的值不为0即为真,认为满足条件,所以与B选项中表达式的含义正好相反,选择B选项。

19.以下程序段中,与语句:k=a>b?(b>c ? 1 : 0) : 0;功能相同的是A.if((a>b)||(b>c)) k=1;else k=0;B.if((a>b) && (b>c)) k=1;else k=0;C.if(a<=b) k=0;else if(b<=c) k=1;D.if(a>b) k=1;else if(b>c) k=1;else k=0;正确答案:B你的答案:解析:【解析】条件表达式的含义是,如果表达式1成立,结果为表达式2的值,如果不成立为表达式3的值。

所以题干中k的值这样取值:如果a>b且b>c,k值结果为1,如果a>b,且b<c 则值为0。

如果a<b,k值为0。

也就是只要a>b与b>c中只要有一个条件不成立,k的值就为0,所以选择B选项。

20.有以下程序:#include <stdio.h>main(){int a=1, b=2;for( ;a<8;a++) {b+=a; a+=2;}printf("%d,%d\n",a,b);}程序运行后的输出结果是A. 9,18B. 8,11C. 7,11D. 10,14正确答案:D你的答案:解析:【解析】第一次循环a的值为1,满足条件,执行b+=a,与a+=2,则b的值变为3,a的值变为3。

执行a++,a的值为4,满足条件进入第二次循环,执行完循环体后b的值为7,a的值为6。

执行a++,a的值为7,满足条件进入第三次循环,执行完循环体后b的值为14,a的值为9。

执行a++,a的值变为10。

所以选择D选项。

21.有以下程序:#include <stdio.h>main(){int i,j, m=55;for(i=1;i<=3;i++)for(j=3; j<=i; j++) m=m%j;printf("%d\n ", m);}程序的运行结果是A. 0B. 1C. 2D. 3正确答案:B你的答案:解析:【解析】第一次执行外循环i的值为1,满足条件,判断第一次内循环,j的值为3,不满足条件,跳出内循环。

第二次执行外循环i的值为2,同理也不满足内循环条件,跳出内循环。

第三次执行外循环i的值为3,此时进入内循环判断条件时,条件成立,执行m=m%j,m的值为1,跳出内循环,跳出外循环打印m的值。

22.有以下程序:#include <stdio.h> main(){int x=8;for( ; x>0; x-- ) {if(x%3){printf("%d,", x--); continue ;}printf("%d,", --x);}}程序的运行结果是A. 7,4,2,B. 8,7,5,2,C. 9,7,6,4,D. 8,5,4,2,正确答案:D你的答案:解析:【解析】coutinue的作用是跳出循环体中剩余的语句而进行下一次循环。

合集下载

2021年整理年9月计算机二级c语言试题及详细解答答案精品资料

2021年整理年9月计算机二级c语言试题及详细解答答案精品资料

2021年整理年9月计算机二级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)可以PCBb)自顶向下c)模块化d)逐步求精(7)软件详细设计产生的图如下:该图就是。

a)n-s图b)pad图c)程序流程图d)e-r图(8)数据库管理系统就是________。

a)操作系统的一部分b)在操作系统支持下的系统软件c)一种编译系统d)一种操作系统(9)在e-r图中,用以则表示实体联系的图形就是________。

a)椭圆形b)矩形c)菱形d)三角形(10)有三个关系r,s和t如下:raabcsadtaabcdb1233c2112b3c2b123c211其中关系t由关系r和s通过某种操作得到,该操作为________。

a)选择b)投影c)交d)并(11)以下描述中恰当的就是________。

a)程序设计的任务就是编写程序代码并上机调试b)程序设计的任务就是确定所用数据结构c)程序设计的任务就是确定所用算法d)以上三种说法都不完整(12)以下选项中,能够用做用户标识符的就是________。

2020年全国计算机二级等级考试全真模拟试卷及答案(第十套)

2020年全国计算机二级等级考试全真模拟试卷及答案(第十套)

2020年全国计算机二级等级考试全真模拟试卷及答案(第十套)1.设循环队列为Q(1:m),其初始状态为front=rear=m。

经过一系列入队与退队运算后,front=20,rear=15。

现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为A) 5B) 6C) m-5D) m-6参考答案:D2.某二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,则该二叉树的后序序列为A) EFGDCBAB) DCBEFGAC) BCDGFEAD) DCBGFEA参考答案:D3.下列叙述中正确的是A) 在链表中,如果每个结点有两个指针域,则该链表一定是非线性结构B) 在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是非线性结构C) 在链表中,如果每个结点有两个指针域,则该链表一定是线性结构D) 在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是线性结构参考答案:B4.下列叙述中错误的是A) 在带链队列中,队头指针和队尾指针都是在动态变化的B) 在带链栈中,栈顶指针和栈底指针都是在动态变化的C) 在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的D) 在带链队列中,队头指针和队尾指针可以指向同一个位置参考答案:B5.软件生命周期中,确定软件系统要做什么的阶段是A) 需求分析B) 软件测试C) 软件设计D) 系统维护参考答案:A6.下面对软件测试和软件调试有关概念叙述错误的是A) 严格执行测试计划,排除测试的随意性B) 程序调试通常也称为DebugC) 软件测试的目的是发现错误和改正错误D) 设计正确的测试用例参考答案:C7.下面属于系统软件的是A) 财务管理系统B) 编译软件C) 编辑软件WordD) 杀毒软件参考答案:B8.将E-R图转换为关系模式时,E-R图中的实体和联系都可以表示为A) 属性B) 键C) 关系D) 域参考答案:C9.有两个关系R与S如下,由关系R和S得到关系T,则所使用的操作为A) 并B) 自然连接C) 笛卡尔积D) 交参考答案:C10..在数据管理的三个发展阶段中,数据的共享性好且冗余度最小的是A) 人工管理阶段B) 文件系统阶段C) 数据库系统阶段D) 面向数据应用系统阶段参考答案:C11..以下叙述中错误的是A) 书写风格良好的程序执行效率高B) 书写风格良好的程序易读性好C) C程序可以在一行上写多条语句D) C程序允许将一条语句分写在多行上参考答案:A12..在C语言中,以下选项中不能正确表示10×1000 之值的是A) 1.0E4.0B) 1.E4C) 10E3D) 1.0e4参考答案:A设有定义:int a=0,b=1,c=1;13..以下选项中,表达式值与其它三个不同的是A) b=a==cB) a=b=cC) a=c==bD) c=a!=c参考答案:A14.设有两行定义语句:int scanf;float case;则以下叙述正确的是A) 第2行语句不合法B) 两行定义语句都合法C) 第1行语句不合法D) 两行定义语句都不合法参考答案:A15.设有定义:double x=2.12;,以下不能完整输出变量x值的语句是A) printf("x=%5.0f\n",x);B) printf("x=%f\n",x);C) printf("x=%lf\n",x);D) printf("x=%0.5f\n",x);参考答案:A16.设有定义:int a,b; float x,y; ,则以下选项中对语句所作的注释叙述错误的是A) scanf("%d%d%f",&a,&b); /* 多余的格式符%f完全不起作用 */B) scanf("%d%d",&a,&b,&x); /* 多余的输入项不能获得输入数据 */C) scanf("%d%f%d",&a,&b,&x); /* 输入项与格式符类型不匹配,变量b和x得不到正确的输入数据 */D) scanf("Input:%d%d",&a,&b); /* 格式串中允许加入格式符以外的字符串 */参考答案:A17.有如下程序#include <stdio.h>main(){int a = 0, b = 1;if (++a == b++)printf("T");elseprintf("F");printf("a=%d,b=%d\n", a, b);printf("\n");}程序运行后的输出结果是A) Ta=1,b=2B) Fa=1,b=2C) Ta=0,b=1D) Fa=0,b=2参考答案:A有如下程序#include <stdio.h>main(){int i = 1;for (printf("%d", i); i<4; i++) printf("%d", i);printf("\n");}18.程序运行后的输出结果是A) 1123B) 123C) 0123D) 001参考答案:A19.有如下程序#include <stdio.h>main(){int i = 1;for (printf("%d", i); i<4; i++) printf("%d", i);printf("\n");}程序运行后的输出结果是A) 1123B) 123C) 0123D) 001参考答案:A20.有如下程序#include <stdio.h>main(){if ('\0' == 0) putchar('X');if ('0' == 0) putchar('Y');if ('a' > 'b') putchar('Z');printf("\n");}程序运行后的输出结果是A) XB) XYZC) YZD) Y参考答案:A21.有如下程序#include <stdio.h> main(){char ch = 'M';while (ch != 'K') {ch --;putchar(ch); }printf("\n");}程序运行后的输出结果是A) LKB) MNC) OPD) MM参考答案:A22.有以下程序段scanf("%d%d%d",&a,&b,&c);if(a>b) a=b;if(a>c) a=c;printf("%d\n",a);该程序段的功能是A) 输出a、b、c中的最小值B) 输出a、b、c中的最大值C) 输出a的原始值D) 输出a、b、c中值相等的数值参考答案:A23.以下关于函数的叙述中正确的是A) 函数形参的类型与返回值的类型无关B) 函数必须要有形参C) 函数必须要有返回值D) 函数调用必须传递实参参考答案:A24.设有定义:int a,b[10],*c=NULL,*p;,则以下语句错误的是A) p=a;B) p=b;C) p=c;D) p=&b[0];参考答案:A25.有以下程序#include <stdio.h>void fun(int *x,int s,int e){ int i,j,t;for(i=s,j=e; i<j; i++,j--){ t=*(x+i); *(x+i)=*(x+j); *(x+j)=t;} }main(){ int m[]={0,1,2,3,4,5,6,7,8,9},k;fun(m,0,3); fun(m+4,0,5); fun(m,0,9);for(k=0; k<10;k++)printf("%d",m[k]);}程序的运行结果是A) 4567890123B) 3210987654C) 9876543210D) 0987651234参考答案:A26.设有n个数按从大到小的顺序存放在数组x中,以下能使这n个数在x数组中的顺序变为从小到大的是A) for(i=0;i<n/2;i++){ t=x[i];x[i]=x[n-i-1];x[n-i-1]=t;}B) for(i=0;i<n;i++){ t=x[i];x[i]=x[n-i-1];x[n-i-1]=t;}C) for(i=0;i<n/2;i++){ t=x[i];x[i]=x[n-i+1];x[n-i+1]=t;}D) for(i=0;i<n/2;i+=2){ t=x[i];x[i]=x[n-i-1];x[n-i-1]=t;}参考答案:A27.设有一个M*N的矩阵已经存放在一个M行N列的数组x中,且有以下程序段sum=0;for(i=0;i<M;i++) sum+=x[i][0]+x[i][N-1];for(j=1;j<N-1;j++) sum+=x[0][j]+x[M-1][j];以上程序段计算的是A) 矩阵所有靠边元素之和B) 矩阵所有不靠边元素之和C) 矩阵所有元素之和D) 矩阵两条对角线元素之和参考答案:A28.有以下程序#include <stdio.h>main(){ int s[3][2]={ 1,2,3,4,5,6},*ps[3],k;for(k=0;k<3;k++){ ps[k]=s[k];printf("%d ",*(ps[k]+1));}}程序的运行结果是A) 2 4 6B) 1 3 5C) 1 2 3D) 4 5 6参考答案:A29.设有以下定义char s1[]="0123";char s2[]={'0','1','2','3'}; 则以下叙述正确的是A) 数组s1的长度大于s2的长度B) 数组s1和s2的长度相同C) 数组s1的长度小于s2的长度D) 数组s1和s2完全等价参考答案:A30.以下能正确进行字符串赋值的语句组是A) char *ch; ch="abc";B) char ch[ ]={'a','b','c'};C) char ch[3]="abc";D) char ch[4]; ch="abc";参考答案:A31.有以下程序#include <stdio.h>int fun(char *s){ char *p=s;while( *p++ != '\0');return(p-s);}main(){ char *p="01234";printf("%d\n",fun(p));}程序的运行结果是A) 6B) 5C) 4D) 3参考答案:A32.有以下程序#include <stdio.h>main(){ char *mm[4]={"abcd","1234","mnop","5678"}; char **pm=mm;int i;for(i=0; i<4; i++) printf("%s",pm[i]+i);printf("\n");}程序的运行结果是A) abcd234op8B) abcd1234mnop5678C) a2o8D) a1m5参考答案:A33.有以下程序#include <stdio.h>void fac2(int );void fac1(int n){ printf("*");if(n>0) fac2(n-1); }void fac2(int n){ printf("#");if(n>0) fac2(--n); }main(){ fac1(3); }程序的运行结果是A) *###B) *##*C) **##D) *#*#参考答案:A34.有以下程序#include <stdio.h>int fun(int n){ static int t=1; int i=1; for( ; i<=n; i++) t*=i; return t;}main(){ int t=1,i;for(i=2;i<4; i++)t+=fun(i);printf("%d\n",t);}程序的运行结果是A) 15B) 11C) 8D) 4参考答案:A35.有以下程序#include <stdio.h>#include <string.h>#include <stdlib.h>main(){ char *p1,*p2;p1=p2=(char *)malloc(sizeof(char)*10);strcpy(p1,"malloc");strcpy(p2,p1+1);printf("%c%c\n",p1[0],p2[0]);}程序的运行结果是A) aaB) maC) amD) mm参考答案:A36.设有定义:struct { int n; float x;} s[2],m[2]={{10,2.8},{0,0.0}};则以下赋值语句中正确的是A) s[0]=m[1];B) s=m;C) s.n=m.n;D) s[2].x=m[2].x;参考答案:A37.有以下程序#include <stdio.h>struct S{ int a; int *b;};main(){ int x1[ ]={3,4},x2[ ]={6,7};struct S x[ ]={1,x1,2,x2};printf("%d,%d\n",*x[0].b,*x[1].b); }程序的运行结果是A) 3,6B) 1,2C) 4,7D) 变量的地址值参考答案:A38.有以下程序#include <stdio.h>#include <string.h>typedef struct {char name[10];char sex;int age;} STU;void fun(STU *t){ strcpy((*t).name,"Tong");(*t).age++;}main(){ STU s[2]={"Hua",'m',18,"Qin",'f',19};fun(s+1);printf("%s,%d,%s,%d\n",s[0].name,s[0].age,s[1].name ,s[1].a ge );}程序运行后的输出结果是A) Hua,18,Tong,20B) Hua,18,Qin,19C) Tong,19,Qin,19D) Hua,19,Tong,19参考答案:A39.以下不属于C语言位运算符的是A) !B) |C) ^D) ~参考答案:A40.有以下程序段FILE *fp;if( (fp=fopen("test.txt","w")) == NULL){ printf("不能打开文件!");exit(0);}elseprintf("成功打开文件!");若指定文件test.txt不存在,且无其他异常,则以下叙述错误的是A) 输出"不能打开文件!"B) 输出"成功打开文件!"C) 系统将按指定文件名新建文件D) 系统将为写操作建立文本文件参考答案:A。

国家二级C语言机试(操作题)模拟试卷299(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷299(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷299(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:根据形参i的值返回某个函数的值。

当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000。

注意:部分源程序在文件BLANK1.C中。

不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>double f1(double x){return x*x;)double f2(double x,double y){return x*y;)/*********found*********/【1】fun(int i,double x,double y){if(i==1)/*********found*********/return 【2】(x);else /*********found*********/return 【3】(x,y);}main( ){ double x1=5,x2=3,r;r=fun(1,x1,x2);r+=fun(2,x1,x2);printf(“\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n\n”,x1,x2,r);}正确答案:(1)double(2)f1 (3)f2解析:填空1:本空函数fun的返回值,根据return可知,不论返回的是f1还是12,它们的返回值均为double型的,故此空应该填写double。

填空2:因为函数fun的功能是根据形参i的值返回某个函数的值,当i等于1时,应该返回的是f1。

填空3:如果不满足if的话,应该返回的是f2。

程序修改题2.下列给定程序中函数Creatlink的功能是:创建带头结点的单向链表,并为各结点数据域赋0到m—1的值。

请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。

计算机二级考试c语言试题及答案

计算机二级考试c语言试题及答案

计算机二级考试c语言试题及答案一、选择题(每题2分,共20分)1. C语言中,下面哪个选项是合法的标识符?A. 2abcB. abc123C. _abcD. abc$答案:C2. 在C语言中,下面哪个运算符具有左结合性?A. 赋值运算符B. 逻辑运算符C. 位运算符D. 关系运算符答案:A3. 下面哪个函数用于实现字符串的复制?A. strcpyB. strcatC. strlenD. strcmp答案:A4. 下面哪个选项是正确的整型常量的表示方法?A. 1234BB. 0x1234C. 1234DD. 01234答案:D5. 下面哪个选项是合法的实型常量的表示方法?A. 123.B. 123.C. 123.D. 123.答案:C6. 在C语言中,下面哪个函数用于实现字符串的连接?A. strcpyB. strcatC. strlenD. strcmp答案:B7. 下面哪个选项是正确的关于一维数组的描述?A. 数组名是一个指向数组首元素的指针B. 数组名是一个指向数组首元素的指针C. 数组名是一个指向数组首元素的指针D. 数组名是一个指向数组首元素的指针答案:A8. 下面哪个选项是正确的关于二维数组的描述?A. 二维数组可以看作是多个一维数组的组合B. 二维数组可以看作是多个一维数组的组合C. 二维数组可以看作是多个一维数组的组合D. 二维数组可以看作是多个一维数组的组合答案:A9. 在C语言中,下面哪个函数用于实现字符串的比较?A. strcpyB. strcatC. strlenD. strcmp答案:D10. 下面哪个选项是合法的C语言语句?A. if(条件) {B. while(条件)C. do {D. }答案:D二、填空题(每题2分,共20分)1. 在C语言中,一个整型变量占用的存储空间为_____个字节。

答案:42. C语言中,定义一个整型变量的一般形式为_____。

答案:int 变量名;3. C语言中,定义一个实型变量的一般形式为_____。

全国计算机等级考试二级c语言模拟试题及答案一

全国计算机等级考试二级c语言模拟试题及答案一

全国计算机等级考试二级C语言模拟试题及答案(一)一、选择题(1)栈和队列的共同特点是A)都是先进先出B)都是先进后出C)只允许在端点处插入和删除元素?D)没有共同点正确答案:? C(2)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是A)acbedB)decabC)deabcD)cedba正确答案:? D(3)链表不具有的特点是A)不必事先估计存储空间B)可随机访问任一元素C)插入删除不需要移动元素?D)所需空间与线性表长度成正比正确答案:? B(4)结构化程序设计的3种结构是A)顺序结构、选择结构、转移结构B)分支结构、等价结构、循环结构C)多分支结构、赋值结构、等价结构D)顺序结构、选择结构、循环结构正确答案:? D(5)为了提高测试的效率,应该A)随机选取测试数据B)取一切可能的输入数据作为测试数据C)在完成编码以后制定软件的测试计划D)集中对付那些错误群集的程序正确答案:? D(6)算法的时间复杂度是指A)执行算法程序所需要的时间B)算法程序的长度C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数正确答案:? C(7)软件生命周期中所花费用最多的阶段是A)详细设计B)软件编码C)软件测试D)软件维护正确答案:? D(8)数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为A)CB)BasicC)DDLD)DML正确答案:? C(9)下列有关数据库的描述,正确的是A)数据库是一个DBF文件B)数据库是一个关系C)数据库是一个结构化的数据集合D)数据库是一组文件正确答案:? C(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字正确答案:? D(11)以下叙述中正确的是A)C语言比其他语言高级B)C语言可以不用编译就能被计算机识别执行C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D)C语言出现的最晚,具有其他语言的一切优点正确答案:? C(12)C语言中用于结构化程序设计的3种基本结构是A)顺序结构、选择结构、循环结构B)if,switch,breakC)for,while,do-whileD)if,for,continue正确答案:? A(13)C语言中最简单的数据类型包括A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)字符型、实型、逻辑型正确答案:? B(14)若变量已正确定义并赋值,以下符合C语言语法的表达式是A)a:=b+1B)a=b=c+2C)int %3D)a=a+7=c+b正确答案:? B(15)下列可用于C语言用户标识符的一组是A)void, define, WORDB)a3_b3, _123,CarC)For, -abc, IF CaseD)2a, DO, sizeof正确答案:? B(16)C语言中运算对象必须是整型的运算符是A)%=B)/C)=D)<=正确答案:? A(17)若变量a,i已正确定义,且i已正确赋值,合法的语句是A)a= =1B)++i;C)a=a++=5;D)a=int(i);正确答案:? B(18)已知int t=0;while (t=1){...}则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对正确答案:? B(19)若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予,b赋予,c赋予,下列不正确的输入形式是A)10<回车>22<回车>33<回车>B),,<回车>C)<回车>22.033.0<回车>D)10? 22<回车>33<回车>正确答案:? B(20)有如下程序:main(){int x=1,a=0,b=0;switch(x){case 0: b++;case 1: a++;case 2: a++;b++;}printf("a=%d,b=%d\n",a,b);} 该程序的输出结果是A)a=2,b=1B)a=1,b=1C)a=1,b=0D)a=2,b=2正确答案:? A(21)有以下程序main(){int i=1,j=1,k=2;if((j++||k++)&&i++)printf("%d,%d,%d\n",i,j,k); }执行后输出结果是A)1,1,2B)2,2,1C)2,2,2D)2,2,3正确答案:? C(22)有如下程序main(){float x=,y;if(x<)y=;else if(x<)y=x;else y=;printf("%f\n",y);}该程序的输出结果是A)B)0.250000C)D)正确答案:? C(23)有如下程序:main(){int n=9;while(n>6){n--; printf("%d",n);} }该程序的输出结果是A)987B)876C)8765D)9876正确答案:? B(24)在下列选项中,没有构成死循环的是A)int i=100;while(1){i=i%100+1;if(i>100)break;}B)for(;;);C)int k=10000;do{k++;}while(k>10000);D)int s=36;while(s)--s;正确答案:? D(25)设int x=1,y=1;表达式(!x||y--)的值是A)0B)1C)2D)-1正确答案:? B(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参正确答案:? D(27)有以下程序float fun(int x,int y){return(x+y);}main(){int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是A)编译出错B)9C)21D)正确答案:? B(28)若有以下调用语句,则不正确的fun函数的首部是main(){ …int a[50],n;…fun(n, &a[9]);…}A)void fun(int m, int x[])B)void fun(int s, int h[41])C)void fun(int p, int *s)D)void fun(int n, int a)正确答案:? D(29)fseek函数的正确调用形式是A)fseek(文件指针,起始点,位移量)B)fseek(文件指针,位移量,起始点)C)fseek(位移量,起始点,文件指针)D)fseek(起始点,位移量,文件指针)正确答案:? B(30)若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是A)EOFB)-1C)1正确答案:? C(31)若有说明语句:char c='\72';则变量cA)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定正确答案:? A(32)若有说明int a[3][4];则a数组元素的非法引用是A)a[0][2*1]B)a[1][3]C)a[4-2][0]D)a[0][4]正确答案:? D(33)设有以下说明语句{int a;float b;} stutype;则下面的叙述不正确的是A)struct是结构体类型的关键字B)struct stu是用户定义的结构体类型C)stutype是用户定义的结构体类型名D)a和b都是结构体成员名正确答案:? C(34)在C语言中,引用数组元素时,其数组下标的数据类型允许是A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式正确答案:? C(35)若运行时给变量x输入12,则以下程序的运行结果是main(){int x,y;scanf("%d",&x);y=x>12?x+10:x-12;printf("%d\n",y);}A)0B)22C)12D)10正确答案:? A(36)以下说法正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分正确答案:? C(37)表达式0x13^0x17的值是A)0x04B)0x13C)0xE8D)0x17正确答案:? A(38)有以下程序#define F(X,Y)(X)*(Y)main(){int a=3, b=4;printf("%d\n", F(a++, b++));}程序运行后的输出结果是A)12B)15C)16D)20正确答案:? A(39)下列程序执行后的输出结果是void func(int *a,int b[]){ b[0]=*a+6; }main(){int a,b[5];a=0; b[0]=3;func(&a,b); printf("%d\n",b[0]); }A)6B)7C)8D)9正确答案:? A(40)若有下面的程序段:char s[]="china";char *p; p=s;则下列叙述正确的是A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等D)*p与s[0]相等正确答案:? D(41)以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序void sort(int a[],int n){int i,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;} }main(){int aa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运行后的输出结果是A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,4,3,2,1,C)1,2,3,8,7,6,5,4,9,10,D)1,2,10,9,8,7,6,5,4,3,正确答案:? C?(42)以下程序的运行结果是#include ""main(){struct date{int year,month,day;}today;printf("%d\n",sizeof(struct date));}A)6B)8C)10D)12正确答案:? A(43)若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是A)a,point,*&aB)&*a,&a,*pointC)*&point,*point,&aD)&a,&*point,point正确答案:? D(44)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定正确答案:? B(45)已定义以下函数fun(char *p2, char *p1){while((*p2=*p1)!='\0'){p1++;p2++;}}函数的功能是A)将p1所指字符串复制到p2所指内存空间B)将p1所指字符串的地址赋给指针p2C)对p1和p2两个指针所指字符串进行比较D)检查p1和p2两个指针所指字符串中是否有'\0'正确答案:? A(46)若执行下述程序时,若从键盘输入6和8时,结果为main(){int a,b,s;scanf("%d%d",&a,&b);s=aif(a<b)s=b;s*=s;printf("%d",s);}A)36B)64C)48D)以上都不对正确答案:? B(47)fscanf函数的正确调用形式是A)fscanf(fp,格式字符串,输出表列);B)fscanf(格式字符串,输出表列,fp);C)fscanf(格式字符串,文件指针,输出表列);D)fscanf(文件指针,格式字符串,输入表列);正确答案:? D(48)下列关于C语言数据文件的叙述中正确的是A)文件由ASCII码字符序列组成,C语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件正确答案:? D(49)有以下程序void ss(char *s,char t){while(*s){if(*s= =t)*s=t-'a'+'A';s++;}}main(){char str1[100]="abcddfefdbd",c='d'; ss(str1,c); printf("%s\n",str1); }程序运行后的输出结果是A)ABCDDEFEDBDB)abcDDfefDbDC)abcAAfefAbAD)Abcddfefdbd正确答案:? B(50)若以下定义:struct link{int data;struct link *next;} a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:?指针p指向变量a,q指向变量c。

计算机二级C语言测试题含答案

计算机二级C语言测试题含答案

计算机二级C语言测试题含答案计算机二级C语言测试题含答案C语言的设计目标是供应一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

下面我整理了计算机二级C语言测试题含答案,盼望对大家有关心!1、设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()。

A.7B.8C.9D.10参考答案:B参考解析:在具有n个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去非叶子结点数。

本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15-7=8。

2、数据流图用于抽象描述一个软件的规律模型,数据流图由一些特定的图符构成。

下列图符名标识的图符不属于数据流图合法图符的是()。

A.掌握流B.加工C.存储文件D.源和潭参考答案:A参考解析:数据流图用于抽象描述一个软件的规律模型,它由一些特定的图符构成,包括4个方面,即加工、数据流、存储文件、源和潭。

3、对关系S和R进行集合运算,结果中既包含S中的全部元组也包含R中的全部元组,这样的集合运算称为()。

A.并运算B.交运算C.差运算D.积运算参考答案:A参考解析:关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,新关系中包含两个关系中的全部元组。

4、下列方法中,属于白盒法设计测试用例的方法的是()。

A.错误推想B.因果图C.基本路径测试D.边界值分析参考答案:C参考解析:白盒测试方法也称为结构测试或规律测试,主要方法有规律掩盖测试、基本路径测试等。

5、设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。

如T=RX S,则T的元组的个数为()。

A.6B.8C.9D.12参考答案:C参考解析:R为n元关系,有P个元组S为m元关系,有q 个元组。

两个关系笛卡儿积是一个n+m元的关系,元组个数是qXp。

所以T的元组的个数为9个。

6、在数据库系统中,数据库用户能够观察和使用的局部数据的规律结构和特征的描述是()。

C语言全国计算机二级等级考试教程第10章 字符串(章节带习题)


输出时直到遇第一 char str[ ]=“I love you!” , *p=str; 个‘\0‟结束输出。 字符指针变量 printf(“%s\n” , p); 字符数组名
输入项 字符指针变量
转去介绍
10.3 字符串的输入和输出
字符数组名
输入项
字符指针变量 当字符数组名作为输入项: char str[15]; scanf(“%s”,str); 在内存中的形式是: P R 输入形式为: PROGRAMMING<CR> O G R A M M I N Ga赋初值后的存储示意图
10.4 字符串数组
可以定义字符型指针数组并通过赋初值来构成一个类似的字符串数组。 例如:char *pa[3]={“a”, ”bb”, ”ccc”}; 定义了一个字符型指针数组,该数组中含有3个元素pa[0] 、pa[1]、 pa[2],且每一个 元素都是一个指向字符串的指针。
则在str中存入的只是字符串“APROGRAM”,而不是字符串“APROGRAM MING
10.3 字符串的输入和输出
10.3.3 调用gets、puts函数在终端输入或输出一行字符串
调用gets函数来输入字符串,例如: char str[15]; gets( str ); 在内存中的形式是: A P 若从键盘上依次输入: APROGRAM MING<CR> R O G R A M M I N G \0 \0
★ 两个字符串分别占有不同的存储空间。 ★ 指针变量pmark中的地址可以改变而指向另外一个长度 不同的字符串。
10.3 字符串的输入和输出
10.3.1 输入和输出字符串时的必要条件
输入和输出的格式说明符为 %s 对字符串输入输出时的必要条件: 字符串常量 输出项 字符数组名 printf(“%s\n” , ”I love you!”); char str[ ]=“I love you!”; printf(“%s\n” , str); I love you!

全国计算机二级c语言题库试题及答案

全国计算机二级c语言题库试题及答案全国计算机二级c语言题库试题及答案计算和模拟作为一种新的研究手段,常使一些学科衍生出新的分支学科。

以下是关于全国计算机二级c语言题库试题及答案,欢迎大家参考!一、选择题(每小题1分,共40分)1). 设有定义: struct {char mark[12]; int num1; double num2;} t1,t2; 若变量均已正确赋初值,则以下语句中错误的是 ( )A.t2.num1=t1.num1;B.t2.mark=t1.mark;C.t1=t2;D.t2.num2=t1.num2;正确答案:B答案解析:这个题目主要涉及到结构体的定义与赋值操作。

根据题意结构体变量t1,t2的成员变量mark是字符数组,对于字符数组之间的赋值操作应该使用循环语句对每个字符进行赋值,而选项A是用数组名实现字符数组之间的赋值操作,是错误的。

2). 若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是( )A.main() { …… x=fun(2,10); ……} float fun(int a,int B{……}B.float fun(int a,int B{……} main() { …… x=fun(i,j); ……}C.float fun(int ,int); main() { …… x=fun(2,10); …… } float fun(int a,int B{……}D.main() { float fun(int i,int j); …… x=fun(i,j); …… } float fun(int a,int B{……}正确答案:A答案解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)。

在选项A中,调用的子函数在调用后面定义,所以不正确。

在选项B、C中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项D中,在主函数中先对子函数float fun(int i,int j)进行了声明,然后进行调用。

2020年全国计算机二级等级考试全真模拟试卷及答案(十)

2020年全国计算机二级等级考试全真模拟试卷及答案(十)1.下列叙述中正确的是A) 算法复杂度是指算法控制结构的复杂程度B) 算法复杂度是指设计算法的难度C) 算法的时间复杂度是指设计算法的工作量D) 算法的复杂度包括时间复杂度与空间复杂度D1.下列叙述中正确的是A) 算法复杂度是指算法控制结构的复杂程度B) 算法复杂度是指设计算法的难度C) 算法的时间复杂度是指设计算法的工作量D) 算法的复杂度包括时间复杂度与空间复杂度A3.一棵完全二叉树共有360个结点,则在该二叉树中度为1的结点个数为A) 0B) 1C) 180D) 181B4.设某二叉树的后序序列与中序序列均为ABCDEFGH,则该二叉树的前序序列为A) HGFEDCBAB) ABCDEFGHC) EFGHABCDD) DCBAHGFEA5.在排序过程中,每一次数据元素的移动会产生新的逆序的排序方法是A) 快速排序B) 简单插入排序C) 冒泡排序D) 以上说法均不正确A6.下面对软件工程描述正确的是A) 软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法B) 软件工程的三要素是方法、工具和进程C) 软件工程是用于软件的定义、开发和维护的方法D) 软件工程是为了解决软件生产率问题A7.耦合性和内聚性是对模块独立性度量的两个标准。

下列叙述中正确的是A) 内聚性是指模块间互相连接的紧密程度B) 提高耦合性降低内聚性有利于提高模块的独立性C) 耦合性是指一个模块内部各个元素间彼此结合的紧密程度D) 降低耦合性提高内聚性有利于提高模块的独立性D8.下列关于数据库系统的叙述中正确的是A) 数据库系统中数据的一致性是指数据类型一致B) 数据库系统避免了一切冗余C) 数据库系统减少了数据冗余D) 数据库系统比文件系统能管理更多的数据C9.一名演员可以出演多部电影,则实体演员和电影之间的联系是A) 多对多B) 一对一C) 多对一D) 一对多A10.A) 表S中所有学生都选修了的课程的课号B) 全部课程的课号C) 成绩不小于80的学生的学号D) 所选人数较多的课程的课号A11.有以下程序#include <stdio.h>main(){ int a=2,b=3,c=4;a*=16 +(b++) - (++c);printf("%d \n",a );}程序运行后的输出结果是A) 15B) 30C) 28D) 14C12.以下叙述正确的是A) 通过分解成简单子任务,可以完成任何复杂任务B) 每个结构化程序都要包含全部三种基本结构C) C语言程序的所有自定义函数只能写在同一个源文件中D) C语言程序允许使用多个main函数,只要它们的函数体各不相同即可A13.以下选项中,合法的C语言实数是A) E4.8B) 4.3e0.2C) .4e0D) 0.29EC14.设a,b,c已定义为整型变量,以下选项中不正确的赋值表达式是A) a = 3 = (b = 2) = 1;B) a = (b = 0) * c + 1;C) a = (b = 0) * c + 1;D) a = 10 % (b = c = 2.0);A15.若变量已正确定义并赋初值,以下合法的赋值语句是A) k=(m==n);B) k=-m-nC) k=int(m+n);D) k=m*n=1;A16.以下关于逻辑运算符两侧运算对象的叙述中正确的是A) 只能是整数0或1B) 只能是整数0或非0整数C) 可以是结构体类型的数据D) 可以是任意合法的表达式17.以下选项中错误的是A) printf("%s\n", 's');B) printf("%d %c\n", 's','s');C) printf("%c\n", 's'- 32);D) printf("%c\n", 65);A18.若有定义:char ch;当执行以下循环时从键盘输入abcde<回车>,将输出*的个数是while((ch=getchar())=='e') printf("*");A) 4B) 0C) 5D) 1B19.有以下程序#include <stdio.h>main(){ int x=10,y=11,z=12;if( y< z )x=y; y=z; z=x;printf("x=%d y=%d z=%d\n", x, y, z );}程序运行后的输出结果是A) x=11 y=12 z=11B) x=10 y=10 z=10C) x=11 y=11 z=10D) x=10 y=10 z=12A20.对于if(表达式)语句,以下叙述正确的是A) "表达式"不能是变量B) "表达式"的值只能是整数值C) "表达式"可以是常量D) "表达式"中不可以出现字符型变量的比较C21.有以下程序#include <stdio.h>main( ){ char ch = '1';while (ch < '9'){printf("%d", ch - '0');ch++;}程序运行后的输出结果是A) 12345678B) 01234567C) 0D) 1A22.以下与表达式(!x==0) 的逻辑值不等价的选项是A) x==1B) xC) x!=0D) x>0 || x<023.以下叙述正确的是A) 表达式9-'0'的值是数值 9B) 表达式'A'+32的值是字母A的ASCII码C) 表达式'a'-32的值是字母a的ASCII码D) 表达式9+'0'的值是字符9的ASCII码D24.有以下程序#include <stdio.h>int fun (int x, int y ){ if (x!=y) return ( (x+y) /2 );else return ( x );}main(){ int a=4, b=5, c=6;printf( "%d\n" , fun(2*a, fun( b, c ) ) );}程序运行后的输出结果是A) 3B) 6C) 8D) 12(2015.3)B25.有以下程序#include <stdio.h> int f( int x,int y) { return((y-x)*x); } main(){ int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%d\n",d);}程序运行后的输出结果是A) 8B) 10C) 9D) 7C26.有以下程序#include <stdio.h>void fun( int a[ ], int n, int flag ) { int i=0,j, t;for ( i=0; i<n-1; i++ )for ( j=i+1; j<n; j++ )if ( flag ){ if ( a[i] < a[j] ){ t = a[i]; a[i] = a[j]; a[j] = t; } }else{ if ( a[i] > a[j] ){ t = a[i]; a[i] = a[j]; a[j] = t; } }}main( ){ int c[10]={ 7,9,10,8,3,5,1,6,2,4 },i;fun( c, 4, 1 );fun( c+4, 6, 0 );for ( i=0;i<10; i++ ) printf( "%d,", c[i] ); printf("\n");}程序运行后的输出结果是A) 7,8,9,10,6,5,4,3,2,1,B) 10,9,8,7,6,5,4,3,2,1,C) 10,9,8,7,1,2,3,4,5,6,D) 1,2,3,4,5,6,7,8,9,10,C27.有以下程序#include <stdio.h>int m1(int x, int y ){ if( x<= y ) return 2*x+1;else return y;}int m2(int x, int y ){ if( x<= y ) return 2*y+1;else return x;}main(){ int i, t1=10, t2=0;for( i=1; i<=4; i++ ){ t1=m1( i,t1 ); t2=m2( i,t2 ); } printf("t1=%d t2=%d \n", t1, t2 );}程序运行后的输出结果是A) t1=9 t2=4B) t1=4 t2=9C) t1=9 t2=9D) t1=1 t2=4A28.有以下程序#include <stdio.h>void f1(char *a, char b ){ char c; c=*a; *a=b; b=c; } void f2(char a, char b ){ char c; c=a; a=b; b=c; } void f3(char *a, char *b ){ char c; c=*a; *a=*b; *b=c; } main(){ char t1, t2;t1 = 'A'; t2 = 'B'; f3( &t1,&t2 ); putchar(t1); putchar(t2);t1 = 'A'; t2 = 'B'; f2( t1, t2 ); putchar(t1); putchar(t2); t1 = 'A'; t2 = 'B'; f1( &t1, t2 ); putchar(t1); putchar(t2); printf("\n");}程序运行后的输出结果是A) ABBABBB) BAABBBC) BABABAD) BABAABB29.以下叙述正确的是A) char c1, *c2, *c3[10]; 是合法的变量定义语句B) 数组说明符的一对方括号中不能使用表达式C) 数组元素下标可以是非整数D) 若有定义 char array[4]; 则语句 printf("%c", array["3"]);是合法的A30.有以下程序#include <stdio.h>main( ){ int a[3][3]={{1,3,5,},{7,9,11,},{13,15,17}};int (*p)[3]=a, i,j,n=0;for(i=0;i<3;i++)for(j=0;j<2;j++)n+=*(*(p+i)+j);printf("%d\n",n);}程序运行后的输出结果是A) 54B) 60C) 36D) 48D31.设有定义:char p[]={'1', '2', '3'},*q=p;以下不能计算出一个char型数据所占字节数的表达式是A) sizeof(*q)B) sizeof(char)C) sizeof(p)D) sizeof(p[0])C32.有以下程序#include <stdio.h>fun(int x, int y){ static int m=0, i=2;i+=m+1; m=i+x+y; return m; }main(){ int j=1, m=1, k;k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d\n",k); }执行后的输出结果是A) 5, 11B) 5, 5C) 11, 11D) 11, 5A33.有以下程序#include <stdio.h>int f( int x[], int n ){ if ( n> 1)return x[n-1]+ f(x, n-1)*10; elsereturn x[0];}main( ){ int z[3] = {1,2,3}, y;y = f(z,3);printf( "%d\n", y );}程序运行后的输出结果是A) 321B) 123C) 1D) 3B34.有以下程序#include <stdio.h>#include <string.h>main(){ char ss[10]="12345";strcat( ss, "6789" );gets( ss );printf("%s\n", ss );}执行时输入:ABC<回车>,则输出结果是A) 123456ABCB) ABC9C) ABCD) ABC456789C35.有以下程序#include <stdio.h>#include <string.h>main(){printf("%d\n", strlen("0\t\n\0C011\1")); }程序运行后的输出结果是A) 3B) 13C) 1D) 0A36.有以下程序#include <stdio.h>int show( char *str ){ while (*str){ putchar(*str+1);str++;}return *str+1;}main( ){printf("%d\n", show("ABCD")); }程序运行后的输出结果是A) ABCD0B) BCDE0C) BCDE1D) ABCD1C37.有以下程序#include <stdio.h>void my_put(){ char ch;ch = getchar();if (ch != 'C') my_put(); putchar(ch);}main( ){my_put();}执行时输入:ABC<回车>,则输出结果是A) ABCB) CBAC) ABD) ABCCB38.有以下程序#include <stdio.h>void fun(int n){ static int x[3]={1,2,3};int k;for( k=0; k<3; k++ ) x[k] += x[k]-n;for( k=0; k<3; k++ ) printf("%d,",x[k]); }main(){ fun(0); fun(1); }程序运行后的输出结果是A) 1,2,3,0,1,2,B) 2,4,6,1,3,5,C) 2,4,6,3,7,11,D) 2,4,6,4,8,12,C39.有以下定义struct person { char name[10]; int age; }; struct person class[10]={ "Johu",17,"Paul",19,"Mary",18,"Adam",16,};能输出字母M的语句是A) printf("%c \n", class[2].name[0] );B) printf("%c \n", class[3].name[0] );C) printf("%c \n", class[3].name[1] );D) printf("%c \n", class[2].name[1] );A40.若要通过位运算使整型变量a中的各位数字全部清零,以下选项正确的是A) a=a^0;B) a=a|0;C) a=a&0;D) a=!a;。

2023年计算机等级二级考试C语言试题及答案

一、选择题在下列各题旳A)、B)、C)、D)四个选项中,只有一种选项是对旳旳,请将对旳旳选项涂写在答题卡对应位置上,答在试卷上不得分。

(1)程序流程图中带有箭头旳线段体现旳是CA)图元关系B)数据流C)控制流D)调用关系(2)下面不属于软件设计原则旳是 CA)抽象B)模块化C)自底向上D)信息隐蔽(3)下列选项中,不属于模块间耦合旳是 CA)数据耦合B)标识耦合C)异构耦合D)公共耦合(4)下列论述中,不属于软件需求规格阐明书旳作用旳是DA)便于顾客、开发人员进行理解和交流B)反应出顾客问题旳构造,可以作为软件开发工作旳基础和根据C)作为确认测试和验收旳根据D)便于开发人员进行需求分析(5)算法旳时间复杂度是指CA)执行算法程序所需要旳时间B)算法程序旳长度C)算法执行过程中所需要旳基本运算次数D)算法程序中旳指令条数(6)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用旳算法是BA)堆排序B)直接插入排序C)迅速排序D)B)和C) (7)栈底至栈顶依次寄存元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列也许是BA)ABCED B)DCBEA C)DBCEA D)CDABE(8)数据库设计包括两个方面旳设计内容,它们是AA)概念设计和逻辑设计B)模式设计和内模式设计C)内模式设计和物理设计D)构造特性设计和行为特性设计(9)关系表中旳每一横行称为一种AA)元组B)字段C)属性D)码(10)设有体现学生选课旳三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC旳关键字(键或码)为 CA)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(11)如下不对旳旳论述是DA)在C程序中,逗号运算符旳优先级最低B)在C程序中,APH和aph是两个不同样旳变量C)若a和b类型相似,在计算了赋值体现式a=b后b中旳值将放入a中,而b中旳值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(12)请选出可用作C语言顾客标识符旳是BA)void,define,WORD B)a3_b3,_123,IF C)FOR,--abc,CaseD)2a,Do,Sizeof(13)如下选项中,不能作为合法常量旳是BA)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 (14)在C语言中,运算对象必须是整型数旳运算符是AA)% B)\ C)%和\D)**(15)若变量均已对旳定义并赋值,如下合法旳C语言赋值语句是AA)x=y==5; B)x=n%2.5; C)x+n=i; D)x=5=4+1;(16)有如下程序段char ch; int k;ch=′a′;k=12;printf("%c,%d,",ch,ch,k); printf("k=%d \n",k);已知字符a旳ASCII码值为97,则执行上述程序段后输出成果是DA)因变量类型与格式描述符旳类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12 D)a,97,k=12(17)已知字母A旳ASCII代码值为65,若变量kk为char型,如下不能对旳判断出kk中旳值为大写字母旳体现式是BA)kk>=′A′&&kk<=′Z′ B)!(kk>=′A′||kk<=′Z′) C)(kk+32)>=′a′&&(kk+32)<=′Z′ D)isa lpha(kk)&&(kk<91)(18)当变量c旳值不为2、4、6时,值也为"真"旳体现式是BA)(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)旳是BA)(exp==0) B)(exp!=0) C)(exp==1) D)(exp!=1)(20)如下不对旳旳定义语句是BA)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)下列程序执行后旳输出成果是Bmain(){ int a[3][3], *p,i;p=&a[0][0];for(i=1; i<9; i++)p[i]=i+1;printf("%d\n",a[1][2];)A)3 B)6 C)9 D)随机数(22)设有如下程序段Bint x=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中旳控制体现式是非法旳D)程序段执行无限次(23)下面程序段旳运行成果是Cchar *s="abcde";s+=2;printf("%d",s);A)cde B)字符′c′ C)字符′c′旳地址D)无确定旳输出成果(24)阅读下列程序,则执行后旳成果为A#include "stdio.h"main(){ int c[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}A)3e,6 B)62,5 C)56,5 D)3E,6(25)下面判断对旳旳是CA)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数组元素对旳引用旳是DA)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1](27)有定义语句:char s[10];,若要从终端给s输入5个字符,错误旳输入语句是DA)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28)有如下程序(29)#include <stdio.h>#define N 5#define M N+1#define f(x) (x*M)main(){ int i1,i2;i1=f(2);i2=f(1+1);printf("%d %d\n",i1,i2);}程序旳运行成果是BA)12 12 B)11 7 C)11 11 D)12 7(29)若有如下阐明和定义union dt{ int a; char b; double c;}data;如下论述中错误旳是DA)data旳每个组员起始地址都相似B)变量data所占内存字节数与组员c所占字节数相等C)程序段:data.a=5;printf("%f\n",data.c);输出成果为5. D)data可以作为函数旳实参(30)有如下程序#include<stdio.h>main(){FILE *fp;int k,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后旳输出成果是DA)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数组元素不对旳旳引用是DA)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--;}}main(){ 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");}程序旳运行成果是CA) B) C) D)(33)阅读下列程序,当运行函数时,输入asd af aa z67,则输出为A#include <stdio.h>#include <ctype.h>#include <string.h>int fun (char *str){ int i,j=0;for(i=0;str[i]!=′ \0′;i++)if(str[i]!=′ ′)str[j++]=str[i];str[j]= ′\0′;}main(){char str[81];int n;printf("Input a string : ");gets(str);puts(str);fun(str);printf("%s\n",str);}A)asdafaaz67 B)asd af aa z67 C)asd D)z67(34)有如下程序int fun(int n){if(n==1)return 1;elsereturn(n+fun(n-1));}main(){int x;scanf("%d",&x); x=fun(x);printf("%d\n",x)}执行程序时,给变量x输入10,程序旳输出成果是AA)55 B)54 C)65 D)45(35)下面程序段中,输出*旳个数是 Cchar *s="\ta\018bc";for(;*s!='\0';s++)printf("*");A)9 B)5 C)6 D)7(36)C语言构造体类型变量在程序运行期间BA)TC环境在内存中仅仅开辟一种寄存构造体变量地址旳单元B)所有旳组员一直驻留在内存中C)只有最开始旳组员驻留在内存中D)部提组员驻留在内存中(37)已知函数旳调用形式为fread(buf,size,count,fp),参数buf旳含义是CA)一种整型变量,代表要读入旳数据项总数B)一种文献指针,指向要读旳文献C)一种指针,指向要读入数据旳寄存地址D)一种存储区,寄存要读旳数据项(38)设有如下语句char x=3,y=6,z;则z旳二进制值是BA) B) C) D)(39)在C语言中,只有在使用时才占用内存单元旳变量,其存储类型是AA)auto和register B)extern和register C)auto和static D)static和register (40)设有定义语句int (*f)(int);,则如下论述对旳旳是BA)f是基类型为int旳指针变量B)f是指向函数旳指针变量,该函数具有一种int类型旳形参C)f是指向int类型一维数组旳指针变量D)f是函数名,该函数旳返回值是基类型为int类型旳地址二、填空题请将每一种空旳对旳答案写在答题卡序号旳横线上,答在试卷上不给分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档