二级C语言笔试操作题分类模拟题8

合集下载

二级C++语言程序设计模拟试题及答案解析(8)

二级C++语言程序设计模拟试题及答案解析(8)

二级C++语言程序设计模拟试题及答案解析(8)(1/40)单项选择题第1题下面叙述中错误的是______。

A.软件测试的目的是发现错误并改正错误B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为DebugD.软件测试应严格执行测试计划,排除测试的随意性下一题(2/40)单项选择题第2题下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是______。

A.cout<<internal<<32345;B.cout<<left<<12345;C.cout<<right<<12345;D.cout<<setw(6)<<12345;上一题下一题(3/40)单项选择题第3题有如下程序:#include<iostream>using namespace std;class test{private:int a;public:test(){cout<<"constructor"<<endl;}test(int a){cout<<a<<endl;}test(const test &_test){a=_test.a;cout<<"copy constructor"<<endl;}~test(){cout<<"destructor"<<endl;}};int main(){test A(3);return 0;}执行这个程序的输出结果是______。

A.3B.constructordestructorC.copy constructordestructorD.3destructor上一题下一题(4/40)单项选择题第4题索引属于A.模式B.内模式C.外模式D.概念模式上一题下一题(5/40)单项选择题第5题C++模板包括。

A.类模板和函数模板B.模板类和模板函数C.类和函数D.对象和函数上一题下一题(6/40)单项选择题第6题有如下程序:#include<iostream>using namespace std;class Base{protected:Base(){cout<<'Base';}Base(char c){cout<<c;}};class Derived:public Base{public:Derived(char c){cout<<c;}};int main(){Derived d('Derived');return 0;}执行这个程序屏幕上将显示输出。

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

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

国家二级C语言机试(操作题)模拟试卷8(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:在形参SS所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。

SS 所指字符串数组中共有N个字符串,且串长小于M。

程序中库函数strstr(s1,s2)的功能是在s1串中查找s2子串,若没有,函数值为0,若有,为非0。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!#include <Stdio.h>#include <String.h>#define N 5#define M 15void fun(char(*SS)[M],char *substr){ int i,find=0;/**********found**********/for(i=0;i<____1____;i++)/**********found**********/if(strstr(ss[i],____2____)!=NULL) { find=1;puts(ss[i]);print f(“\n”);}/**********found**********/if(find==____3____)printf(“\nDon’t found!\n____);}main( ){ char x[N][M]={“BASIC”,”C langwage”,”Java”,”QBASIC”,”Access”),str[M];int i;printf(“\nThe original string\n\n”);for(i=0;i<N;i++)puts(x[i]);printf(“\n”);printf(“\nEnter a string for search:”);gets(str);fun(x,str);}正确答案:(1)N(2)substr(3)0解析:第一空:“for(i=0;i<___1___;i++)”补充循环的结束条件,fun的参数(*ss)[M]是指向N行M列的字符串数组,循环是逐行字符串是否含有substr 所指的子串,因此循环次数是N次,故第一空处应为“N”。

计算机二级《C语言》模拟试题及答案

计算机二级《C语言》模拟试题及答案

计算机二级《C语言》模拟试题及答案(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)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n一1)/2的排序方法是( )。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序(7)下列关于栈的叙述正确的是( )。

A.栈按“先进先出”组织数据,B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据(8)在数据库设计中,将E—R图转换成关系数据模型的过程属于( )。

A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段(9)有三个关系R、s和T如下:由关系R和s通过运算得到关系T,则所使用的运算为( )。

A.并B.自然连接C.笛卡尔积D.交(10)设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为( )。

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩(11)以下叙述中错误的是( )。

A.c语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令B.c程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中D.c语言源程序经编译后生成后缀为.obj的目标程序(12)以下选项中,合法的一组c语言数值常量是( )。

计算机二级《C语言》模拟试题及答案

计算机二级《C语言》模拟试题及答案

计算机二级《C语言》模拟试题及答案计算机二级《C语言》模拟试题及答案1、以下语句的输出结果是( )。

int a=-1,b=4,k;k=(+ +a<0)&&!(b - -<=0);printf("%d,%d,%d\n",k,a,b);A. 1,0,4B. 1,0,3C. 0,0,3D. 0,0,42、下列程序的输出结果是( )。

char *p1="abcd", *p2="ABCD", str[50]="xyz";strcpy(str+2,strcat(p1+2,p2+1));printf("%s",str);A. xyabcABB. abcABzC. ABabczD. xycdBCD3、执行下面的程序后,a的值是( )。

#define SQR(X) X*Xmain( ){ int a=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a); }A. 10B. 1C. 9D. 04、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( )。

A.P+i*2B. P+(i-1)*2来源:考试大C. P+(i-1)D. P+i5、下列程序执行后输出的结果是( )。

int d=1;fun (int p){ int d=5;d + =p + +;printf("%d,",d); }main( ){ int a=3;fun(a);d + = a + +;printf("%d\n",d); }A. 8, 4B. 9, 6C. 9, 4D. 8, 56、表达式:10!=9的值是( )。

A. trueB. 非零值C. 0D. 17、若有说明: int i,j=7, *p=&i;, 则与i=j; 等价的语句是( )。

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

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

国家二级C语言机试(操作题)模拟试卷365(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。

操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。

例如,若N=3,有下列矩阵: 1 2 3 计算结果为7 4 1 4 5 6 8 5 2 7 8 9 9 6 3 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 43 void fun(int(*t)[N])4 { int j,r[N];5 for(j=0;j<N;j++)r[j]=t[0][j];6 for(j=0;j<N;j++)7 /**********found**********/8 t[0][N-j-1]=t[j][__1__];9 for(j=0;j<N;j++)10 t[j][0]=t[N-1][j];11 /**********found**********/12 for(j=N-1;j>=0;__2__)13 t[N-1][N-1-j]=t[j][N-1];14 for(j=N-1;j>=0;j--)15 /**********found**********/16 t[j][N-1]=r[__3__];17 }18 main( )19 {int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;20 printf(‘‘\nThe original array:\n’’);21 for(2=0;i<N;i++)22 {for(j=0;j<N;j++)printf(‘‘%2d”,t[i][j]);23 printf(‘‘\n’’);24 }25 fun(t);26 printf(‘‘\nThe result is:\n’’);27 for(i=0;i<N;i++)28 { for(j=0;j<N;j++)printf(‘‘%2d’’,t[i][j]);29 printf(‘‘\n’’);30 }31 }正确答案:(1)0 (2)j-- (3)j解析:第一空:由审题分析可知,此处是使第一列成为第一行,即把第一列元素移动到第一行,第一列元素是“t[j][0]”,第一行元素是“t[0][N-j-1]”,故第一空处应为“0”。

计算机二级《C语言》模拟试题及答案

计算机二级《C语言》模拟试题及答案

计算机二级《C语言》模拟试题及答案计算机C语言是学计算机设计的根底语言,同学们学得怎么样了呢?为同学分享最新的C语言考试题库,希望能帮助到大家学习!1.算法的空间复杂度是指( )。

A.算法程序的长度B.算法程序中=的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间2.以下表达中正确的选项是( )。

A.一个逻辑数据构造只能有一种存储构造B.逻辑构造属于线性构造,存储构造属于非线性构造C.一个逻辑数据构造可以有多种存储构造,且各种存储构造不影响数据处理的效率D.一个逻辑数据构造可以有多种存储构造,且各种存储构造影响数据处理的效率3.简单的交换排序方法是( )。

A.快速排序B.选择排序C.堆排序D.冒泡排序4.关于构造化程序设计原那么和方法的描述错误的选项是( )。

A.选用的构造只准许有一个入口和一个出口B.复杂构造应该用嵌套的根本控制构造进展组合嵌套来实现C.不允许使用GOT0语句D.语言中假设没有控制构造,应该采用前后一致的方法来模拟5.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )。

A.可重用性差B.平安性差C.非持久性D.冗余性6.面向对象的设计方法与传统的面向过程的方法有本质不同,它的根本原理是( )。

A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题D.不强调模拟现实世界中的算法而强调概念7.软件设计包括软件的构造、数据接口和过程设计,其中软件的过程设计是指( )。

A.模块间的关系B.系统构造部件转换成软件的过程描述C.软件层次构造D.软件开发过程8.两个或两个以上模块之间关联的严密程度称为( )。

A.耦合度B.内聚度C.复杂度D.数据传输特性9.以下描述错误的选项是( )。

A.继承分为多重继承和单继承B.对象之间的通信靠传递消息来实现C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征D.类是具有共同属性、共同方法的对象的集合10.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。

国家二级C语言机试编译预处理和指针模拟试卷8_真题-无答案

国家二级C语言机试编译预处理和指针模拟试卷8_真题-无答案

国家二级C语言机试(编译预处理和指针)模拟试卷8(总分52,考试时间90分钟)1. 选择题1. 以下叙述中正确的是A. 在C语言中,预处理命令行都以”#”开头B. 预处理命令行必须位于C源程序的起始位置C. #include必须放在C程序的开头D. C语言的预处理不能实现宏定义和条件编译的功能2. 有以下程序,程序运行后的输出结果是#define PT 3.5;#define S(x)PT*x*x;main(){int a=1,b=2;printf("%4.1 f\n",S(a+b));}A. 31.5B. 7.5C. 程序有错无输出结果D. 14.03. 以下关于宏的叙述中正确的是A. 宏定义必须位于源程序中所有语句之前B. 宏名必须用大写字母表示C. 宏调用比函数调用耗费时间D. 宏替换没有数据类型限制4. 有以下程序,程序运行后的输出结果是#include #define S(x)4*(x)*x+1 void main() {int k=5,j=2;printf("%d\n",S(k+j));}A. 197B. 143C. 33D. 285. 设有宏定义:#define IsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是A. 判断m是否能被5和7整除B. 判断m被5或者7整除是否余1C. 判断m被5和7整除是否都余1D. 判断m是否能被5或者7整除6. 有以下程序,程序运行后的输出结果是#include #define SUB(a)(a)-(a) main(){ int a=2,b=3,c=5,d;d=SUB(a+b)*c:printf("%d\n",d);}A. .12B. 0C. 10D. .207. 有以下程序,程序运行后的输出结果是#include #define fix)x*x*x main(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",s,t);} A. 10,10 B. 10,64C. 64,10D. 64,648. 有下列程序,程序的运行结果是#include #define N 5 #define M N+1 #define fix)(x*M) main() {int i1,i2;il=ff2);i2=f(1+1);printf("%d%d\n",i1,i2);}A. 12 7B. 12 12C. 11 11D. 11 79. 以下叙述中错误的是A. 预处理命令行的最后不能以分号表示结束B. C程序对预处理命令行的处理是在程序执行的过程中进行的C. #define MAX是合法的宏定义命令行D. 在程序中凡是以“#”开始的语句行都是预处理命令行10. 若程序中有宏定义行:#define N 100则以下叙述中正确的是A. 宏定义行中定义了标识符N的值为整数100B. 上述宏定义行实现将100赋给标示符NC. 在运行时用100替换标识符ND. 在编译程序对C源程序进行预处理时用100替换标识符N11. 若有以下程序,则程序的输出结果是#define S(x)x*x #define T(x)S(x)*S(x) main(){int k=5,j=2;printf("%d,%d\n",S(kI+j),T(k+j));}A. 17,37B. 49,2401C. 17,289D. 49,28912. 有以下程序,程序运行后的输出结果是#include<stdio.h>#define N 2 #define M N+1 #define NUM(M+1)*M/2 main(){printf("%d\n",NUM);}A. 4B. 8C. 9D. 613. 有以下程序,程序运行后的输出结果是#include #define SUB(X,Y)(X+1)*Y main(){int a=3,b=4;printf("%d\n",SUB(a++,b++));}A. 20B. 12C. 16D. 2514. 下面选项中关于编译预处理的叙述正确的是A. 凡是以≠}号开头的行,都被称为编译预处理命令行B. 预处理命令行必须使用分号结尾C. 预处理命令行不能出现在程序的最后一行D. 预处理命令行的作用域是到最近的函数结束处15. 有以下程序,程序的输出结果是#include<stdio.h>#define SQR(X)X*X main(){ int a=10,k=2,m:1;a|=SQR(k+m)/SQR(k+m);printf("%d\n",a);} A. 0 B. 1C. 9D. 1016. 以下叙述中正确的是A. 在包含文件中,不得再包含其他文件B. #include命令行不能出现在程序文件的中间C. 在一个程序中,允许使用任意数量的#include命令行D. 虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接17. 有以下程序,程序的运行结果是#include #include int fun(int n) main() {int*p;{int a;p=(int*)malloc(sizeof(int));a=fun(10);*p=n;return*p;printf("%d\n",a+fun(10));} }A. 10B. 20C. 0D. 出错18. 有以下程序,程序运行后的输出结果是#include #include main() {int*a,*b,*c;a=b:c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf("%d,%d,%d\n",*a,*b,*c);}A. 2,2,3B. 3,3,3C. 1,2,3D. 1,1,319. 有以下程序,程序运行后的输出结果是void fun(int*p1,int*p2,int*s) {s=(int*)malloc(sizeof(int));*s=*p1+*(p2++);} main(){int a[2]={1,2},b[2]={10,20},*s=a;fun(a,b,s);printf("%d\n",*s);}A. 10B. llC. 2D. 120. 有以下程序段int*p;p=_________malloc(sizeof(int));若要求使p指向一个int型的动态存储单元,在横线处应填入的是A. (int*)B. intC. int*D. (*int)21. 有以下程序,程序的输出结果是void fun(double*p1,double*p2,double*s) {s=(double*)calloc(1,sizeof(double));*s=*p1+*(p2+1):} main(){double a[2]={1.1,2.2},b[2]={10.0,20.0},*s=a;fun(a,b,s);printf("%5.2f\n",*s);} A. 1.10 B. 11.10C. 12.10D. 21.1022. 设有以下函数:void fim(int n,char,*s){……}则下面对函数指针的定义和赋值均正确的是A. void*pf();pf=fun;B. void(*pf)(int,char*);pf=fun;C. void*Pf();*pf=fun;D. void(*pf)(int,char);pf=&fun;23. 设有定义语句int(*f)(int);则以下叙述正确的是A. f是基类型为int的指针变量B. f是指向int类型一维数组的指针变量C. f是指向函数的指针变量,该函数具有一个int类型的形参D. f是函数名,该函数的返回值是基类型为int类型的地址24. 以下叙述中正确的是A. 指针变量只能通过求地址运算符(&)来获得地址值B. 语句“p=NULL;”与“p=\0;”是等价的语句C. “int*p1;int**p2;int*p3;”都是合法的定义指针变量的语句D. 语句p=NULL;执行后,指针p指向地址为0的存储单元25. 以下叙述中正确的是A. 函数的类型不能是指针类型B. 函数的形参类型不能是指针类型C. 基类型不同的指针变量可以相互混用D. 设有指针变量为“double*p”,则“p+1”将指针p移动8个字节26. 设有某函数的说明为int*func(int a[10],int n);则下列叙述中,正确的是A. 说明中的a[10]写成a[]或*a效果完全一样B. 形参a对应的实参只能是数组名C. func的函数体中不能对a进行移动指针(如a++)的操作D. 只有指向10个整数内存单元的指针,才能作为实参传给a。

国家二级C语言机试数据库设计基础模拟试卷8_真题-无答案

国家二级C语言机试数据库设计基础模拟试卷8_真题-无答案

国家二级C语言机试(数据库设计基础)模拟试卷8(总分56,考试时间90分钟)1. 选择题1. 定义学生选修课程的关系模式为SC(S#,Sn,Sd,Sa,C#,G)(其属性分别为学号、姓名、所在系、年龄、课程号和成绩);C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课)。

关系模式SC的主键是A. S#B. C#C. S#,C#D. Sn,C#2. 数据库管理系统的基本功能不包括A. 数据库访问B. 数据库定义C. 数据库的建立和维护D. 数据库和网络中其他系统的通信3. 由关系R1和R2得到关系R3的操作是A. 等值连接B. 并C. 笛卡尔积D. 交4. 某图书集团数据库中有关系模式R(书店编号,书籍编号,库存数量,部门编号,部门负责人),其中要求①每个书店的每种书籍只在该书店的一个部门销售;②每个书店的每个部门只有一个负责人;③每个书店的每种书籍只有一个库存数量。

则关系模式R最高是A. 2NFB. 1NFC. 3NFD. BCNF5. 下列叙述中正确的是A. 数据库系统减少了数据冗余B. 经规范化后的数据库系统避免了一切冗余C. 数据库系统比文件系统能管理更多的数据D. 数据库系统中数据的一致性是指数据类型一致6. 每个学校有一名校长,且不同学校的校长可以是同一人,则实体学校和实体校长间的联系是A. 多对一B. 多对多C. 一对一D. 一对多7. 定义部门关系模式:部门(部门号,部门名,部门成员,部门总经理),使它不满足第一范式的属性是A. 部门名B. 部门成员C. 部门总经理D. 部门号8. 在关系数据库中,描述全局数据逻辑结构的是。

A. 内模式B. 用户模式C. 概念模式D. 物理模式9. 学校的每个社团都有一名团长,且一个同学可同时担任多个社团的团长,则实体团长和实体社团间的联系是A. 一对多B. 多对多C. 多对一D. 一对一10. 在关系模式A(S,SN,D)和B(D,CN,NM)中,关系A的主键是S,关系B的主键是D,则属性D在关系A中称为A. 外键B. 主键C. 超键D. 候选键11. 将数据库的结构划分成多个层次,是为了提高数据库的逻辑独立性和A. 物理独立性B. 操作独立性C. 安全性D. 管理规范性12. 学院的每个系都有一名系主任,且一个教师可同时担任多个系的系主任,则实体系主任和实体系间的联系是A. 一对多B. 多对多C. 多对一D. 一对一13. 定义学生选修课程的关系模式:SC(S#,Sn,C#,Cn,G)(其属性分别为学号、姓名、课程号、课程名、成绩)。

国家二级(C语言)笔试模拟试卷100(题后含答案及解析)

国家二级(C语言)笔试模拟试卷100(题后含答案及解析)

国家二级(C语言)笔试模拟试卷100(题后含答案及解析)题型有:1. 选择题 2. 填空题选择题(1-10、21-40每题2分,11-20每题1分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。

1.在计算机中,算法是指______ 。

A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法正确答案:C解析:计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。

2.栈和队列的共同点是______。

A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点正确答案:C解析:栈和队列是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。

二者的区别是:栈是一种“后进先出”的线性表;而队列是一种“先进先出”的线性表。

3.已知二叉树BT的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______。

A.cedbaB.acbedC.decabD.deabc正确答案:A解析:二叉树BT的后序遍历序列为dabec,故BT的根结点为c;而BT的中序遍历序列是debac,即遍历序列中最后一个结点为跟结点,说明BT的右子树为空。

由BT的的后序遍历序列和中序遍历序列可知BT的左子树(LST)的后序遍历序列和中序遍历序列分别为dabe和deba(树是递归定义的);故LST的根结点是e,在由LST的中序遍历序列可知其左子树为d。

因此BT的前序遍历序列为cedba。

4.在下列几种排序方法中,要求内存量最大的是______。

A.插入排序B.选择排序C.快速排序D.归并排序正确答案:D解析:快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。

2014年9月二级C语言程序设计模拟(8)试题及答案

2014年9月二级C语言程序设计模拟(8)试题及答案

2014年9月二级C语言程序设计模拟(8)试题及答案单项选择题1.下列关于栈和队列的描述中,正确的是( )。

A:栈是先进先出B:队列是先进后出C:队列允许在队头删除元素D:栈在栈顶删除元素参考答案: D 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 栈实际也是线性表,只不过是一种特殊的线性表。

栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。

队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。

2.已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是( )。

A: ABCDEB: ECABDC: EACDBD: CDEAB参考答案: C 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 由于后序遍历的最后一个元素为E,所以E为根结点,所以它的前序遍历的首个元素为E,故排除A)和D)选项。

由于中序遍历中,元素B在元素根结点E的后面,所以B为二叉树的右子树,并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为B,故选项C)为正确选项,即该二叉树的前序遍历序列是EACDB。

3.在数据流图中,带有箭头的线段表示的是( )。

A:控制流B:数据流C:模块调用D:事件驱动详细解答: 数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。

4.结构化程序设计的3种结构是( )。

A:顺序结构,分支结构,跳转结构B:顺序结构,选择结构,循环结构C:分支结构,选择结构,循环结构D:分支结构,跳转结构,循环结构参考答案: B 题目分值: 1.0 分您的答案: 得分: 0.0详细解答: 程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。

遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。

历年全国计算机等级考试二级C语言笔试模拟题及答案

历年全国计算机等级考试二级C语言笔试模拟题及答案

历年全国计算机等级考试二级C语言笔试模拟题及答案(11)以下表达中正确的选项是A.程序设计的任务就是编写程序代码并上机调试B.程序设计的任务就是确定所用数据构造C.程序设计的任务就是确定所用算法D.以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A.voidB.88C.0D.unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f ”,case,printF);}该程序编译时产生错误,其出错原因是A.定义语句出错,case是关键字,不能用作用户自定义标识符B.定义语句出错,printF不能用作用户自定义标识符C.定义语句无错,scanf不能作为输入函数使用D.定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A.0B.3C.4D.5(15)假设有定义语句:int x=10;,那么表达式x-=x+x的值为A.-20B.-10C.0D.10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d ”,a=2*b);}程序运行后的输出结果是A.0,0B.1,0C.3,2D.1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A.if(a>B. c=a,a=b,b=c;B.if(a>B. {c=a,a=b,b=c;}C.if(a>B. c=a;a=b;b=c;D.if(a>B. {c=a;a=b;b=c;}(18)有以下程序#includemain(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d ”,C.;}程序运行后的输出结果是A.3B.5C.7D.9(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;20)有以下程序#includemain(){ char s[]={“012xy”};int i,n=0; for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++; printf(“%d ”,n);}程序运行后的输出结果是A.0B.2C.3D.5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d ”,k,n);}程序运行后的输出结果是A.0 2B.1 3C.5 7D.1 2(22)有以下定义语句,编译时会出现编译错误的选项是A.char a=’a’;B.char a=’ ’;C.char a=’aa’;D.char a=’x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d ”,c1,c2);}字母A的ASCII码为65,程序运行后的输出结果是A.E,68B.D,69C.E,DD.输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d ”,a);}程序运行后的输出结果是A.32B.12C.21D.22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i{ max=MIN;if(maxreturn max;}造成错误的原因是A.定义语句int i,max;中max未赋初值B.赋值语句max=MIN;中,不应给max赋MIN值C.语句if(maxD.赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d ”,m,n,*p,*q);}程序运行后的输出结果是A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,2(27)假设有定义语句:int a[4][10],*p,*q[4];且0≤i<4,那么错误的赋值是A.p=aB.q[i]=a[i]C.p=a[i]D.p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s ”,p);}程序运行后的输出结果是A.9,One*WorldB.9,One*DreamC.10,One*DreamD.10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“ ”);}A.3 3 4 4B.2 0 5 0C.3 0 4 0D.0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d ”,strlen(a),sizeof(a));}程序运行后的输出结果是A.7,4B.4,10C.8,8D.10,10(31)下面是有关C语言字符数组的描述,其中错误的选项是A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串(32)以下函数的功能是fun(char * a,char * b){ while((*b=*a)!=’’) {a++,b++;} }A.将a所指字符串赋给b所指空间B.使指针b指向a所指字符串C.将a所指字符串和b所指字符串进展比拟D.检查a和b所指字符串中是否有’’(33)设有以下函数void fun(int n,char * s) {……}那么下面对函数指针的定义和赋值均是正确的选项是A.void (*pf)(); pf=fun;B.viod *pf(); pf=fun;C.void *pf(); *pf=fun;D.void (*pf)(int,char);pf=&fun;(34)有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d ”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是A.7B.8C.9D.10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d ’,s,t);}程序运行后的输出结果是A.10,64B.10,10C.64,10D.64,64(36)下面构造体的定义语句中,错误的选项是A.struct ord {int x;int y;int z;}; struct ord a;B.struct ord {int x;int y;int z;} struct ord a;C.struct ord {int x;int y;int z;} a;D.struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c 正确指向一个字符串的是A.char str[ ]=”string”;c=str;B.scanf(“%s”,C.;C.c=get);D.*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f ”,a.a,a.b,a.C.;}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )程序运行后的输出结果是A.1001,ZhangDa,1098.0B.1001,ZhangDa,1202.0C.1001,ChangRong,1098.0D.1001,ChangRong,1202.0(39)假设有以下程序段int r=8;printf(“%d ”,r>>1);输出结果是A.16B.8C.4D.2(40)以下关于C语言文件的表达中正确的选项是A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由构造序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,那么该二叉树中共有【1】个结点。

全国计算机二级C语言考试模拟题

全国计算机二级C语言考试模拟题

全国高校计算机等级考试(二级C)模拟一试题一、选择题1、设有语句:int k, *p; 以下能正确执行的赋值语句是(D )。

A、k=pB、k=&pC、P=KD、p=&k2、以下运算符中优先级最高的运算符是(A)。

A、!B、&&C、||D、<3、求字符串长度的函数是( D )。

A、strcatB、strcpyC、strcmpD、strlen4、下面程序段的运行结果是(A)。

char x[5]=“ab\0c\0”;printf("%s",x);说明:“\0”中的“0”是数字零。

A、abB、abcC、ab\0D、ab\0c\05、若有说明语句: int a[2][4]; 则对数组a元素的正确引用是( D )。

A、a[2]B、a[4]C、a[2][4]D、a[1][3]6、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。

A、float型B、int型C、long型D、double型7、用数组名作为函数调用的实参时,传递给虚参的是(A)。

A、数组的首地址B、数组第一个元素的值C、数组中全部元素的值D、数组元素的个数8、以下程序的输出结果是( D )。

#include<stdio.h>#define F(y) 8-yvoid main(void){int x,y;y=F(2);printf(“y=%d”,y);}A、2B、y=2C、6D、y=69、以下程序的输出结果是(A)。

#include<stdio.h>struct{int x,y;} a;void main(void){int x,y=50,z;a.x=10;a.y=20;z=a.x+y;printf(“%d”,z);}A、60 B 、10 C、0 D、2010、语句fopen(“file.dat”,”r”); 的功能是(A)。

A、按照“读”方式打开文件B、按照“写”方式打开文件C、按照“读写”方式打开文件D、按照“追加”方式打开文件11、关闭文件的语句是( D )。

《二级C语言》模拟考试题+参考答案

《二级C语言》模拟考试题+参考答案

《二级C语言》模拟考试题+参考答案1、设二叉树如下:则前序遍历为()。

A、ABDEGCFHB、DBGEAFHCC、DGEBHFCAD、ABCDEFGH答案:A2、下面概念中,不属于面向对象方法的是()。

A、继承B、类C、对象D、过程调用答案:D3、下列叙述中正确的是()。

A、break语句只能用于switch语句B、break语句必须与switch语句中的case配对使用C、在switch语句中,不一定使用break语句D、在switch语句中,必须使用default答案:C4、以下程序段中,循环次数不超过10的是()。

A、int i=10do{i=i+1}whilei<0B、int i=6do{i-=2}whilei!=1C、int i=int i=5do{i+=1}whilei>0D、int i=1do{i+=2}whilei!=10答案:A5、对图书进行编目时,图书有如下属性:ISBN书号,书名,作者,出版社,出版日期。

能作为关键字的是()。

A、ISBN书号B、书名C、作者,出版社D、出版社,出版日期答案:A6、下列不属于数据库设计任务的是()。

A、设计数据库物理结构B、设计数据库概论结构C、设计数据库逻辑结构D、设计数据库应用结构答案:D7、一个栈的初始状态为空。

现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出的顺序是()。

A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA答案:B8、以下不能用于实型数据的运算符是()。

A、+B、%C、*D、/答案:B9、若要实现total=1+2+3+4+5求和,以下程序段错误的是()。

A、int i=0,total=0whilei<5 { i+=1total+=i}B、int i=1,total=0whilei<=5 { total+=ii+=1}C、int i=0,total=0whilei<=5 { total+=ii+=1}D、int i=1,total=1whilei<5 { total+=ii+=1}答案:D10、有以下定义 inta; long b; double x,y; 则以下选项中正确的表达式是()。

计算机等级考试二级C语言笔试模拟题及答案

计算机等级考试二级C语言笔试模拟题及答案

计算机等级考试二级C语言笔试模拟题及答案是全国计算机(National Computer Rank Examination,简称NCRE)四个等级中的一个等级,考核计算机根底知识和使用一种高级计算机语言编写程序以及上机调试的根本技能。

那么计算机等级考试二级会怎么考?以下仅供参考!以下各题 A),B),C),D)四个选项,只有一个选项是正确的,请将正确的选项在答题卡相应位置上涂黑。

答在试卷上不得分。

(1) 二进制数101110 转换为等值的八进制数是()。

A.45B.56C.67D.78(2) CPU 是由()组成的。

A.内存储器和控制器B.控制器和运算器C.内存储器和运算器D.内存储器、控制器和运算器(3) DOS 是为IBM PC 系列微型计算机及其兼容机所配置的()磁盘。

A.多用户多任务B.单用户单任务C.分时D.分布式(4) 启动MS-DOS 操作系统后,()已驻留内存。

A.B.C.D.CCCC.EXE(5) 设驱动器B 中软盘上的目录构造如以下图所示。

设当前目录为F2,那么把A 盘根目录下的PROG.BAS 文件复制到B 盘F3 子目录中的命令是()。

A.COPY PROG.BAS B:B.COPY A:PROG.BAS B:C.COPY A:PROG.BAS B:F3D.COPY A:PROG.BAS B:F3(6) 下面四组DOS 命令中,意义完全相同的一组是()。

A.COPY 和DISKCOPYB.P 和DISKPC.DEL 和RDD.RENAME 和REN(7) 防止软盘感染病毒的有效方法是()。

A.不要把软盘和有毒软盘放在一起B.在写保护缺口上贴上胶条C.保持机房清洁D.定期对软盘格式化(8) 双面高密度5 英寸软磁盘的容量是()。

A.360KBB.720KBD.1.44MB(9) 在FOXBASE 中,可以使用的两类变量是()。

A.内存变量和字段变量B.全局变量和部分变量C.字段变量和简单变量D.内存变量和自动变量(10) 建立一个新子目录的DOS 命令是()。

国家二级C语言(C语言基础知识)机试模拟试卷8(题后含答案及解析)

国家二级C语言(C语言基础知识)机试模拟试卷8(题后含答案及解析)

国家二级C语言(C语言基础知识)机试模拟试卷8(题后含答案及解析)题型有:1. 选择题选择题1.以下叙述中错误的是A.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件B.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中C.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令D.C语言源程序经编译后生成后缀为.obi的目标程序正确答案:C解析:C语言中的非执行语句例如宏定义命令,在预编译之后替换到代码中,该命令本身也就不存在了,不会转换成二进制的机器指令。

由高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”,C语言编写的源程序就是一ASCII的形式存放在文本文件中的。

C源程序经过C编译程序编译之后生成一个后缀为.obj的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此.obj文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。

知识模块:C语言基础知识2.C语言源程序名的后缀是A..exeB..objC..cD..cp正确答案:C解析:由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。

源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。

知识模块:C语言基础知识3.以下叙述中正确的是A.每个后缀为.c的C语言源程序都应该包含一个main函数B.在C语言程序中,main函数必须放在其他函数的最前面C.每个后缀为.c的C语言源程序都可以单独进行编译D.在C语言程序中,只有main函数才可单独进行编译正确答案:C解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才可以执行。

知识模块:C语言基础知识4.以下叙述中错误的是A.C程序在运行过程中所有计算都以二进制方式进行B.所有C程序都需要编译链接无误后才能运行C.C程序在运行过程中所有计算都以十进制方式进行D.C程序中字符变量存放的是字符的ASCII值正确答案:C解析:计算机程序都是编译为二进制的代码,计算机才会执行。

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

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

国家二级(C语言)机试模拟试卷8(题后含答案及解析)题型有:1. 程序填空题 2. 程序修改题 3. 程序设计题程序填空题(30分)1.请补充main函数,该函数的功能是:从字符串str中取出所有数字字符,并分别计数,然后把结果保存在数组b中并输出,把其他字符保存在N[10]中。

例如:当str1=“ab123456789cde090”时,结果为:0: 2 1: 1 2:1 3: 1 4: 1 5: 1 6: 1 7: 1 8:1 9:2 other charactor:5 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun( )的横线上填入所编写的若干表达式或语句。

试题程序:#include <stdio.h>#include <conio.h>main( ) {int i,b[11];char *str=“abl23456789cde090”;char *p=str;clrscr( );printf(“***the origial data ***\n”);puts(str);for(i=0;i<11;i++) b[i]=0;while(*p){ switch(【】){ case ‘0’:b[0]++;break;case ‘1’:b[1]++;break;case ‘2’:b[2]++;break;case ‘3’:b[3]++;break;case ‘4’:b[4]++;break;case ‘5’:b[5]++;break;case ‘6’:b[6]++;break;case ‘7’:b[7]++;break;case ‘8’:b[8]++;break;case ‘9’:b[9]++;break;【】} 【】}printf(“****** the result ********\n”);for(i=0;i<10;i++)printf(“\n%d:%d”,i,b[i]);printf(“\nother charactor:%d”,b[i]);}正确答案:*pdefault:b[10]++;p++;解析:第一空:根据switch语句中case后面的常量表达式,可以看出,switch 后面括号中的表达式应该是字符串str中的各字符,而指针p就是指向字符串str。

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

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

国家二级C语言机试(操作题)模拟试卷808(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun( )的作用是:将a、b、c三个结点链接成一个单向链表,并输出链表结点中的数据。

请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>typedef struct list{char data;struct list *next;}Q;void fun(Q *pa,Q *pb,Q *pc){Q *p;/* * * * * * found * * * * * */pa—>next=___1___;pb—>next=pc:p=pa;while(P){/* * * * * * found * * * * * */printf(″%c″,___2___);/* * * * * * found * * * * * */p=___3___;}printf(″\n″);}main( ){Q a,b,c;a.data=′E′:b.data=′F′;c.data=′G′:c.next=NULL;fun(&a,&b,&c);}正确答案:(1)pb (2)p—>data (3)p—>next解析:填空1:将三个结点连接起来,即将pa的指针域指向pb,pb的指针域指向pc。

填空2:输出链表结点中的数据,表示为p—>data。

填空3:指针后移,指向下一个结点,即p=p—>next。

知识模块:程序填空题程序修改题2.下列给定程序中,函数fun的功能是:计算整数n的阶乘。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include <stdlib.h>#include <stdio.h >double fun(int n){double result=1.0;while(n>1 &&n<170)/* * * * * * found * * * * * */result * =——n;/* * * * * * found * * * * * */return;}void main( ){int n:printf(″Enter an integer:″);scanf(″%d″,&n);printf(″\n%d!=%lg\n″,n ,fun(n));}正确答案:(1)result* =n——;(2)return result;解析:本题考查:复合赋值运算;通过return语句完成函数值的返回。

国家二级(C语言)笔试模拟试卷8(题后含答案及解析)

国家二级(C语言)笔试模拟试卷8(题后含答案及解析)

国家二级(C语言)笔试模拟试卷8(题后含答案及解析)题型有:1. 选择题 2. 填空题选择题(1-10、21-40每题2分,11-20每题1分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。

1.下列关于算法的时间复杂度陈述正确的是A.算法的时间复杂度是指执行算法程序所需要的时间B.算法的时间复杂度是指算法程序的长度C.算法的时间复杂度是指算法执行过程中所需要的基本运算次数D.算法的时间复杂度是指算法程序中的指令条数正确答案:C解析:算法的时间复杂度是指执行算法所需要的计算工作量,也就是算法在执行过程中所执行的基本运算的次数,而不是指程序运行需要的时间或是程序的长度。

2.下列关于队列的叙述中正确的是A.在队列中只能插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表正确答案:C解析:对队列可以进行插入和删除数据的操作,只是插入数据只能在队尾,删除数据只能在队头。

所以队列是先进先出的线性表。

3.设有下列二叉树:对此二叉树先序遍历的结果为A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA正确答案:C解析:二叉树的遍历分为先序,中序、后序三种不同方式.本题要求先序遍历,其遍历顺序应该为:访问根结点->,先序遍历左子树->先序遍历右子树。

按照定义,先序遍历序列是ABDECF,故答案为C。

4.下面描述中,不符合结构化程序设计风格的是A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B.注重提高程序的可读性C.模块只有一个入口和一个出口D.使用goto语句正确答案:D解析:在结构化程序设计中,应严格控制使用GOTO语句,必要时才可以使用,故答案为D。

5.下列哪个是面向对象程序设计不同于其他语言的主要特点?A.继承性B.消息传递C.多态性D.静态联编正确答案:A解析:继承是一个子类直接使用父类的所有属性和方法。

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

二级C语言笔试操作题分类模拟题8
一、程序填空题
1. 下列给定程序中,函数fun的功能是:计算N×N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。

要求先累加主对角线元素中的值,再累加反向对角线元素中的值。

例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
首先累加1、5、9,然后累加3、5、7,函数返回值为30。

请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。

注意:部分源程序给出如下。

不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#defineN4
fun(int t[][N],int n)
{
int i,sum;
/***********found***********/
______;
for(i=0;i<n;i++)
/************found**********/
sum+=______;
for(i=0;i<n;i++)
/**********found***********/
sum+=t[i][n-i-______];
return sum;
}
main()
{
int t[][N]={21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10},i,j;
printf("\nThe original data:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%4d",t[i][j]);
printf("\n");}
printf("The result is:%d",fun(t,N));
}
答案:sum=0 t[i][i] 1
[解答] 填空1:变量sum用来储存"和"结果,所以将其初始化为0。

填空2:从题目中我们可以了解到,主对角线元素的行和列下标是相同的,所以应填入t[i][i]。

填空3:对于反向对角线元素的行和列的下标,它们的关系是相加和为n-1,所以应填入1。

二、程序改错题
1. 下列给定程序中,函数fun和funx的功能是:用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。

例如,若给m输入-100,n输入90,则函数求得的一个根为2.000。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<math.h>
double funx(double x)
{ return(2*x*x*x-4*x*x+3*x-6);}
double fun(double m,double n)
{
/***********found**********/
int r;
r=-(m+n)/2;
/************found***********/
while(fabs(n-m)<0.001)
{
if(funx(r)*funx(n)<0)m=r;
else n=r;
r=(m+n)/2;}
return r;
}
main()
{
double m,n,root;
printf("Enter m n:\n");
scanf("%lf%lf",&m,&n);
root=fun(m,n);
printf("root=%6.3f\n",root);
}
答案:(1)double r;
(2)while (fabs(n-m) >0.001)
[解答] (1)程序中我们会发现r=(m+n)/2,而m和n都是double型的,并且根据
题意可知,变量r需要定义为double型。

(2)绝对误差不超过0.001,所以循环条件应为fabs(n-m)>0.001。

三、程序设计题
1. 规定输入的字符串中只包含字母和*号。

编写函数fun,其功能是:除了字符串前导和尾部的*号外,将串中其他的*号全部删除。

形参h已指向字符串中第一个字母,形参P指向字符串中最后一个字母。

在编写函数时,不得使用C语言提供的字符串函数。

例如,若字符串中的内容为“****A*BC*DEF*G*******”,删除后,字符串中的内容应当是“****ABCDEFG*******”。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

试题程序:
#include<stdio.h>
void fun(char*a,char*h,char*p)
{
}
main()
{
char s[81],*t,*f;
printf("Enter a string:\n");
gets(s);
t=f=s;
while(*t)
t++;
t--;
while(*t=='*')
t--;
while(*f=='*')
f++;fun(s,f,t);
printf("The string after deleted:\n");
puts(s);
}
答案:void fun(char*a,char*h,char*p )
{ int i=0;
char*q=a;
while(q<h)
{ a[i]=*q; q++;i++;}
while(q<p)
{ if(*q!='*')
{ a[i]=*q;
i++;
}
q++;
}
while(*q)
{ a[i]=*q; i++; q++;}
a[i]='\0';
}
[解答] 本题的重点是要选择好判断条件,首先是需要判断前导*的结束,然后判断是否指向最后一个字母,最后补充尾部*,只要思路对了就可正确解答。

相关文档
最新文档