国家二级(C语言)机试模拟试卷166(题后含答案及解析)_0
国家二级(C语言)机试模拟试卷166 (题后含答案及解析)
题型有:1. 程序填空题 2. 程序修改题 3. 程序设计题
程序填空题(30分)
1. 给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。
例如,当形参n的值为10时,函数返回:-0.204491。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意;源程序存放在考生文件夹下的BLANKl.C中。 不得增行或删行,也不得更改程序的结构!#include double fun(int n){ int i,k;double s,t; s=0;/**********found***********/ k=【1】; for(i=1;i0):”); scarlf(“%d”,&n);) printf(“\nThe result is:%f\n”, fun(n));}
正确答案:(1)1 (2)2*i (3)(一1)
解析:第一空:由“s=s+k*(2*i-1)*(2*i+1)/(t*t);”可知t*t表示的是级数项的分母,t=2*i,t=2,4,6…,故t的初始化值应为1,因此第一空处应为“1”。
第二空:由第一空的分析可知,第二空处应为“2*i”。 第三空:由“s=s+k*(2*i-1)*(2*i+1)/(t*t);”可知,k是级数项的(-1)n-1部分,所以在循环中k是每次都乘以-1,故第三处应为“(-1)”。
程序修改题(30分)
2. 给定程序MODll.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。 例如,若字符串为abed,则应输出:dcba。
请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!#include<stklio.h>/*****************found****************/fun (char a){ if (*a)
{ fun(a+1);/***************found*****************/ printf(“%c”*a); }}main( ){ char s[10]=“abed”; printf(“处理前字符串=%s\n处理后字符串=“,s); fun(s);printf(“\n”);}
正确答案:(1)void fun(char*a)(2)printf(“%c”, *a);
解析:(1)主函数中“fun(s);”语句中的s是数组名,所以在:fun函数中参数的定义应该是指针型,“fun(char a)”改为“void fun(char*a)”。 (2)pdntf函数的调用形式是:pfintf(格式字符串,输出项表),在格式字符串和输出项表之间有“,”,因此第二个标识处应该是“printf(“%c”,*a);”。
程序设计题(40分)
3. 编写函数fun,它的功能是计算: s作为函数值返回。 在C语言中可调用log(n)函数求ln(n).log函数的引用说明是:double log(double x1。
例如,若m的值为:20,fun函数值为:6.506583。 注意:部分源程序在
文件PROGl.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include double fun(int
m){}main( ){ void NONO ( ); printf(“%f\n”, fun(20));
NONO( );}void NONO ( ){/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n ; double s ; fp =
fopen(“in.dat”,”r”); wf = fopen(“out.dat”,”w”); for(i = 0 ; i < 10 ; i++)
{ fscanf(fp, “%d”, &n); s = fun(n); fprintf(wf, “%f\n”, s); } fclose(fp);
fclose(wf);}
正确答案:{double s=0.0;int i;for(i=1; i<=m;
i++)s+=log(1.0*i);s=sqrt(s);return s;}
解析:(1)调用log(n)函数求ln(n)。(2)对调用log(n)进行累加求和,求得根号里的内容。(3)最后调用C语言的库函数sqrt计算(2)中求得值的平方根。
国家二级C语言(数组)机试模拟试卷4(题后含答案及解析)
国家二级C语言(数组)机试模拟试卷4 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 若有定义:int x[10],*pt=x;,则对x数组元素的正确引用是( )。
A.pt+3
B.*&x[10]
C.*(pt+10)
D.*(x+3)
正确答案:D
解析:没有A选项的引用形式。*与&放在一起作用抵消,但x[10]下标10超出了数组下标范围,所以B选项错误。最大只能引用到x[9],而*(pt+i)表示引用指针pt所指元素后的第i个元素,所以C选项错误,最大只能为*(pt+9)。D选项正确。 知识模块:数组
2. 有以下程序:#include<stdio.h>main( ){int i,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d\n”,s);}程序的运行结果是( )。
A.20
B.25
C.45
D.36
正确答案:B
解析:统计1~9这9个数中的奇数和,此题考查指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址,因此*(t+i)代表数组的第i+1个元素。程序的运行结果是1+3+5+7+9=25。 知识模块:数组
3. 有以下程序:#include<stdio.h>main( ){int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)e[s[i]]++;for(i=1;i<5;i++)printf(“%d”,c[i]);printf(“\n”);}程序的运行结果是( )。
A.2 3 4 4
B.4 3 3 2
C.1 2 3 4
D.1 1 2 3
正确答案:B
解析:在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2,因此B选项正确。 知识模块:数组
国家二级C++机试(选择题)模拟试卷210(题后含答案及解析)
国家二级C++机试(选择题)模拟试卷210 (题后含答案及解析)
题型有:1.
1. 下列叙述中正确的是
A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D.循环队列中元素的个数是由队头指针和队尾指针共同决定
正确答案:D
解析:循环队列中元素的个数是由队头指针和队尾指针共同决定的,元素的动态变化也是通过队头指针和队尾指针来反映的。 知识模块:数据结构与算法
2. 下面是关于派生类声明的开始部分,其中正确的是( )。
A.class virtual B:public A
B.virtual class B:public A
C.class B:public A virtual
D.class B:virtual public A
正确答案:D
解析:声明派生类的一般形式为:class派生类名:[继承方式]基类名。其中继承方式包括:public,private,protected,而virtual为C++中的关键字。虚函数的使用方法是在基类用virtual声明成员函数为虚函数。
3. 下列选项中不属于结构化程序设计原则的是( )。
A.可封装
B.自顶向下
C.模块化
D.逐步求精
正确答案:A
解析:结构化设计方法的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用goto语句。 知识模块:程序设计基础
4. 下列选项中不属于面向对象程序设计特征的是( )。
A.继承性
B.多态性
C.类比性
D.封装性
正确答案:C
解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。 知识模块:程序设计基础
国家二级C语言机试(C语言程序设计)模拟试卷26(题后含答案及解析)
国家二级C语言机试(C语言程序设计)模拟试卷26 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是
A.while(ch=getchar( )=‘N’)printf(“%c”,ch);
B.while(ch=getchar( )==“N”)printf(“%c”,ch);
C.while((ch=getchar( ))!=‘N’)printf(“%c”,ch);
D.while((ch=getchar( ))==‘N’)printf(“%c”,ch);
正确答案:C
解析:while循环的执行过程如下: ①计算while后面圆括号中表达式的值,当值为非0时,执步骤②;当值为0时,执行步骤④: ②执行循环体一次: ③转去执行步骤①; ④退出循环。 在选项C)中,表达式(ch=getchar( ))!=‘N’表示输入的字符不等于 N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。 知识模块:C语言程序设计
2. 若有以下程序main( ){int a=-2,b=0; while(a++) ++b:
printf(“%d,%d\n”,a,b);}则程序的输出结果是
A.0,2
B.1,2
C.1,3
D.2,3
正确答案:B
解析:循环体执行两次,第一次表达式a++值为-2,a的值为-1,执行循环体++b,b值为1,第二次表达式a++值为-1,a的值等于0,执行++b,b值为2,第三次判断条件a++,表达式值为0,不执行循环体,但是条件判断以后,a的值为1。 知识模块:C语言程序设计
3. 由以下while构成的循环,循环体执行的次数是int k=0;while(k=1)k++;
国家二级C语言选择结构循环结构机试模拟试卷1_真题(含答案与解析)-交互
国家二级C语言(选择结构、循环结构)机试模拟试卷1
(总分66, 做题时间90分钟)
1. 选择题
1.
下列选项中,当x为大于1的奇数时,值为0的表达式是( )。
SSS_SINGLE_SEL
A x%2==0
B x/2
C x%2!=0
D x%2==1
分值: 2
答案:A
解析:算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是O。C选项的值为真,即1。D选项的值为真,即1。
2.
若a是数值类型,则逻辑表达式(a==1)‖(a!=1)的值是( )。
SSS_SINGLE_SEL
A 1
B 0
C 2
D 不知道a的值,不能确定
分值: 2
答案:A
解析:逻辑或“‖”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为l,则左边运算对象为1;若a的值不是l,则右边运算对象的值为1,所以总能保证一边非零。
3.
当变量e的值不为2、4、6时,值为“真”的表达式是( )。
SSS_SINGLE_SEL
A (c>=2&&e<=6)&&(c%2 1=1)
B (c==2)‖(c==4)‖(c==6)
C (c>=2&&c<=6)&&!(c%2)
D (c>=2&&c←6)‖(c!=3)lI(c!=5)
分值: 2
答案:D
解析:逻辑或运算符中只要有一个运算量为真,结果就是真,当c>=2&&c<=6条件不成立时,c的值肯定不是2、3、4、5、6,所以c!:3与c!:5均成立,所以D选项的结果一定为真。
4.
有以下程序: #include main() { int a=1,b=2,c=3,d=0;
if(a==1&&b++==2) if(b!=2‖c一!=3) prinff(“%d,%d,%d\n”,a,
b,c); else prinff(“%d,%d,%d\n”,a,b,c); else prinff(“%d,%d,%d\n”,a,b,c); } 程序的运行结果是( )。
国家二级C语言机试(函数和数组)模拟试卷10
国家二级C语言机试(函数和数组)模拟试卷10
(总分:54.00,做题时间:90分钟)
一、 选择题(总题数:27,分数:54.00)
1.有以下程序 #include<stdio.h>> main() {int a[]={10,20,30,40),*p=a,i; for(i=0;i<=3;i++){a[i]=*p;p++;} pfintf("%d\n",a[2]);}程序运行后的输出结果是
(分数:2.00)
A.20
B.30 √
C.10
D.40
解析:解析:因为指针变量p的初始值指向数组a,所以执行for循环语句后,数组a中的元素的值不变。
2.若有以下程序 main(){int i,j=0; char a[]="How are you!"; for(i=0;a[i];i++)
if(a[i]!='')a[j++]=a[i]; a[j]='\0'; printf("%s\n",a);}则程序的输出结果是
(分数:2.00)
A.Howareyou
B.Hay!
C.Howareyou! √
D.How are you!
解析:解析:主函数中利用for循环访问字符串的每一个字符,判断当前字符是否为空格,如果是空格则删除。因此删除字符串”How are you!”中空格以后,字符串为How are you!。
3.若有以下程序 #include<stdio.h> main(){int i,j=0; char a[]="How are you!",b[10]; for(i=0;a[i];i++) if(a[i]=='')b[j++]=a[i+1]; b[j]='\0'; printf("%s\n",b);}则程序的输出结果是
(分数:2.00)
A.Howareyou
B.Hay!
C.Howareyou!
D.ay √
解析:解析:主函数中利用for循环访问字符串a的每一个字符,判断当前字符是否为空格,如果是空格则保存该空格后面的一个字符存放到字符数组b中。在字符串"How are you!"中,第一个空格后面字符为'a',第二个空格后面字符为'v'。
国家二级C语言机试(C语言基础知识)模拟试卷20
国家二级C语言机试(C语言基础知识)模拟试卷20
(总分:60.00,做题时间:90分钟)
一、 选择题(总题数:30,分数:60.00)
1.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令。关于转换以下说法错误的是
(分数:2.00)
A.一条C语句可能会被转换成多条机器指令
B.一条C语句对应转换成一条机器指令 √
C.一条C语句可能会被转换成零条机器指令
D.某种类型和格式的C语句被转换成机器指令的条数是固定的
解析:解析:由C语言编写的程序,通过编译、链接转换成可以让机器识别的01二进制指令。这些二进制指令命令机器计算,这些就是机器指令,而C语言的语句条数和机器指令的条数不是一对一的关系。
2.以下选项中不属于C语言程序运算符的是
(分数:2.00)
A.sizeof
B.()
C.<> √
D.&&
解析:解析:sizeof为测试内存的运算符,()为算术运算符,&&为逻辑运算符。而<>不是C语言的运算符,C语言中!=表示不等于。
3.若变量已正确定义并赋值,以下不能构成C语句的选项是
(分数:2.00)
A.A=a+b;
B.B++;
C.a=a+b √
D.A?a:b;
解析:解析:C语言语句的表示为分号,不加分号的表达式不能看成C语句。
4.以下叙述中正确的是
(分数:2.00)
A.程序必须包含所有三种基本结构才能成为一种算法
B.如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达
C.只有简单算法才能在有限的操作步骤之后结束
D.我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令 √
解析:解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。
国家二级C语言程序设计机试(选择题)模拟试卷3
国家二级C语言程序设计机试(选择题)模拟试卷3
(总分:80.00,做题时间:90分钟)
一、 选择题(总题数:40,分数:80.00)
1.下列数据结构中,属于非线性结构的是( )。
(分数:2.00)
A.循环队列
B.带链队列
C.二叉树 √
D.带链栈
解析:解析:线性结构的特点:①有且只有一个根结点;②每一个结点最多有一个前驱,也最多有一个后继。不满足线性结构条件的称为非线性结构,二叉树的非叶子结点最多可以用两个后继结点,属于非线性结构。
2.算法的空间复杂度是指( )。
(分数:2.00)
A.算法在执行过程中所需要的计算机存储空间 √
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的临时工作单元数
解析:解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,因此本题答案为A。
3.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
(分数:2.00)
A.循环队列
B.栈 √
C.队列
D.二叉树
解析:解析:栈是按“先进后出”的原则组织数据的;队列是按“先进先出”的原则组织数据的,因此本题答案为B。
4.软件设计中划分模块的一个准则是( )。
(分数:2.00)
A.低内聚、低耦合
B.高内聚、低耦合 √
C.低内聚、高耦合
D.高内聚、高耦合
解析:解析:一般较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此本题答案为B。
5.结构化程序的三种基本控制结构是( )。
(分数:2.00)
A.顺序、选择和重复(循环) √
B.过程、子程序和分程序
C.顺序、选择和调用
D.调用、返回和转移
解析:解析:结构化程序设计中三种基本控制结构为顺序、选择和重复(循环),故正确答案为A。
6.软件需求规格说明书在软件开发中的作用不包括( )。
国家二级C语言程序设计机试选择题模拟试卷2_真题-无答案
国家二级C语言程序设计机试(选择题)模拟试卷2
(总分80,考试时间90分钟)
1. 选择题
1. 下列叙述中正确的是( )。
A. 一个算法的空间复杂度大,则其时间复杂度也必定大
B. 一个算法的空间复杂度大,则其时间复杂度必定小
C. 一个算法的时间复杂度太,则其空间复杂度必定小
D. 算法的时间复杂度与空间复杂度没有直接关系
2. 下列叙述中正确的是( )。
A. 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化
B. 循环队列中的元素个数随队头指针的变化而动态变化
C. 循环队列中的元素个数随队尾指针的变化而动态变化
D. 以上说法都不对
3. 一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是( )。
A. 1,2,3,A,B,C B. C,B,A,1,2,3
C. C,B,A,3,2,1 D. 1,2,3,C,B,A
4. 一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为( )。
A. 219 B. 229
C. 230 D. 231
5. 对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为( )。
A. 9 B. 10
C. 45 D. 90
6. 下列各项中,对对象概念描述正确的是( )。
A. 对象间的通信靠消息传递 B. 对象是名字和方法的封装体
C. 任何对象必须有继承性 D. 对象的多态性是指一个对象有多个操作
7. 下列各项中,不属于软件设计阶段任务的是( )。
A. 软件总体设计 B. 算法设计
C. 制订软件并确认测试计划 D. 数据库设计
8. 一般情况下,当对关系R和S进行自然连接时,要求R和s含有一个或者多个共有的( )。
A. 记录 B. 行
C. 属性 D. 元组
9. 下列各项与栈结构有关联的是( )。
国家二级C++机试(C++流)模拟试卷2(题后含答案及解析)
国家二级C++机试(C++流)模拟试卷2 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 下列关于C++流的说明中,正确的是( )。
A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现
B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作
C.cin是一个预定义的输入流类
D.输出流有一个名为open的成员函数,其作用是生成一个新的流对象
正确答案:A
解析:此题考查的是C++流的概念。从输入流中提取数据称为提取操作,把表达式插入到输出流中的操作称为插入操作,故选项B错误:cin是一个预定义的输入流对象而不是流类,故选项C错误;输入输出流中没有open成员函数,故选项D错误。 知识模块:C++流
2. 在语句cin>>data;中,cin是( )。
A.C++的关键字
B.类名
C.对象名
D.函数名
正确答案:C
解析:此题考查的是预定义流对象。C++有4个预定义的流对象:cin一标准输入:cout一标准输出;cerr一标准出错信息输出:clog一带缓冲的标准出错信息输出。 知识模块:C++流
3. 如果利用C++流进行输入输出,下面的叙述中正确的是( )。
A.只能借助于流对象进行输入输出
B.只能进行格式化输入输出
C.只能借助于cin和cout进行输入输出
D.只能使用运算符>>和<<进行输入输出
正确答案:A
解析:此题考查的知识点是C++流。利用C++流既可以进行有格式输入输出,也可以进行无格式输入输出,所以选项B错误:CH的4个预定义的流对象为:cin一标准输入,cout一标准输出,cerr一标准出错信息输出,clog一带缓冲的标准出错信息输出,选项C错误;C++流除了可以使用提取“>>”插入“<<”进行输入输出外,还可以通过流对象的一些成员函数进行输入输出,故选项D错误。 知识模块:C++流
4. 下列有关C++流的叙述中,错误的是( )。
国家二级(C语言)机试历年真题试卷汇编18
国家二级(C语言)机试历年真题试卷汇编18
(总分:86.00,做题时间:90分钟)
一、 选择题(总题数:40,分数:80.00)
1.下列叙述中错误的是( )。
(分数:2.00)
A.算法的时问复杂度与算法所处理数据的存储结构有直接关系
B.算法的空间复杂度与算法所处理数据的存储结构有直接关系
C.算法的时间复杂度与空间复杂度有直接关系 √
D.算法的时间复杂度与算法程序执行的具体时间是不一致的
解析:解析:算法的时间复杂度是指执行算法所需要的计算工作量。数据的存储结构直接决定数据输入,而这会影响算法所执行的基本运算次数,A项正确。算法的空间复杂度是指执行这个算法所需要的内存空间,其中包括输入数据所占的存储空间,B项正确。而算法的时间复杂度与空间复杂度没有直接关系,C项错误。算法程序执行的具体时间受到所使用的计算机、程序设计语言以及算法实现过程中的许多细节所影响,而算法的时间复杂度与这些因素无关,所以是不一致的,D项正确。
2.在满足实体完整性约束的条件下( )。
(分数:2.00)
A.一个关系中应该有一个或多个候选关键字 √
B.一个关系中只能有一个候选关键字
C.一个关系中必须有多个候选关键字
D.一个关系中可以没有候选关键字
解析:解析:实体完整性约束要求关系的主键中属性值不能为空值,因此本题答案为A。
3.下面描述中,不属于软件危机表现的是( )。
(分数:2.00)
A.软件过程不规范 √
B.软件开发生产率低
C.软件质量难以控制
D.软件成本不断提高
解析:解析:软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。因此本题答案为A。
4.下列各项中不属于需求分析阶段任务的是( )。
(分数:2.00)
A.确定软件系统的功能需求
