国家二级(C语言)机试模拟试卷424
选择题
1.下面程序段的输出结果是( )。
#include
main()
{float x=1.236547;
printf(\\(A)
A. 1.237000
B. 输出格式说明与输出项不匹,输出无定值
C. 1.236000
D. 1.24
解析:本题中,(int)(x*1000+0.5)的结果为1237,(float)1000是将1000强制转换成float类型;整个表达式(int)(x*1000+0.5)/(float)1000的结果为1.237000,再以实数(6位小数)形式输出。
2.有以下程序:
#include
#define N 8
void fun(int*x,int i)
{*x=*(x+i)+1;}
main()
{ int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=0;i<N/2;i++)
{printf(\\(C)
A. 1 3 1 3
B. 3 2 3 4
C. 4 2 3 4
D. 1 2 3 4
解析:函数fun(int*x,int i)的功能是把数组元素x[i]的值加1赋给x[0]。所以在主函数中执行fun(a,2)后,数组元数a[0]的值等于4。然后在for循环语句中,输出数组a中的前4个元素的值,分别是4,2,3,4。
3.下面结构体的定义语句中,错误的是( )。
A
解析:A选项struct ord{int x;int y;int z;}struct ord a;错误,不能在定义结构体的同时,又用结构体类型名定义变量。应该写成B选项或者D选项的格式。
4.读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是( )。(D)
A. 一个内存块的字节数
B. 一个整型变量,代表待读取的数据的字节数
C. 一个文件指针,指向待读取的文件
D. 一个内存块的首地址,代表读入数据存放的地址
解析:fread(void *buffer, size t size, size t count, FILE *stream);功能是从一个文件流中读数据,读取count个元素,每个元素size字节,如果调用成功返回count。buffer :用于接收数据的内存地址,大小至少是 size*count 字节;size :单个元素的大小,单位是字节;count :元素的个数,每个元素是size字节;stream :输入流。
5.下列叙述中止确的是( )。(D)
A. 循环队列行队头和队尾两个指针,因此,循环队列是菲线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 循环队列中元素的个数是由队头指针和队尾指针共同决定的
解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B与C错误。
6.以下叙述中正确的是( )。(D)
A. 简单递归不需要明确的结束递归的条件
B. 任何情况下都不能用函数名作为实参
C. 函数的递归调用不需要额外开销,所以效率很高
D. 函数既可以直接调用自己,也可以间接调用自己
解析:D项正确,C语言中的函数可以直接或间接地自己调用自己,前者称简单递归,后者称间接递归。A项错误,递归必定要有一个明确的结束递归的条件;B项错误,递归就是把函数名作为实参的一种特殊情况;C项错误,函数的递归调用过程中,系统要为每一层调用中的变量开辟存储单元,记住每一层调用后的返回点,要增加许多额外的开销,通常会降低程序的运行效率。
7.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( )。(A)
A. 需求分析
B. 详细设计
C. 软件设计
D. 概要设计
解析:软件生命周期的主要活动阶段为:可行性研究和计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。其中需求分析是对开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能,编写软件规格说明书及初步的用户手册,提交评审。
8.以下叙述中正确的是( )。(C)
A. C语言比其他语言高级
B. C语言可以不用编译就能被计算机识别执行
C. C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D. C语言出现的最晚,具有其他语言的一切优点
解析:此题考查的是C语言的基本特点。C语言是一种高级编程语言,但并不是比其他语言高级;C语言源程序必须经过编译生成目标文件才能被计算机识别执行;C语言出现比较晚,它既有优点也有缺点,而并不是具有其他一切语言的优点。
9.有以下程序
#include<stdio.h>
int fun(int a,int b)
{if(b==0) return a;
else return(fun(–a,–b));
}
main()
{printf(’’%dkn’’,fun(4,2));}
程序的运行结果是( )。(B)
A. 1
B. 2
C. 3
D. 4
解析:由程序可知,函数fun(int a,int b)是一个递归函数。所以当主函数中调用“fun(4,2)”时,其执行过程如下“fun(4,2)->fun(3,1)->fun(2,0)”,其返回值为2。所以正确答案为选项B。
10.以下程序的输出结果是( )。
#include<stdio.h>
#define F(x)2.84+x
#define w(y)printf(\\(A)
A. 12
B. 13
C. 14
D. 16
解析:本题考查带参数的宏定义及相关运算。P(F(5)*x)=P(2.84+5*2)=P(12.84),调用w(12.84),输出(int)(12.84)=12。
11.下列叙述中错误的是( )。(A)
A. 算法的时间复杂度与问题规模无关
B. 算法的时间复杂度与计算机系统无关
C. 算法的时间复杂度与空间复杂度没有必然的联系
D. 算法的空间复杂度与算法运行输出结果的数据量无关
解析:算法的时间复杂度是指执行算法所需要的计算机工作量,而算法的计算机工作量是用算法所执行的基本运算次数来度量的,算法所执行的基本运算次数和问题的规模有关。算法的空间复杂度指执行这个算法所需要的内存空间。为降低算法的空间复杂度,主要应减少输入数据所占的存储空间及额外空间,通常采用压缩存储技术。由于在编程时要受到计算机系统运行环境的限制,因此,程序的编制通常不可能优于算法的设计。算法执行时所需要的计算机资源越多算法
本文档预览:3600字符,共18093字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载