国家二级(C语言)机试模拟试卷430
选择题
1.下面的函数调用语句中,func函数的实参个数是( )。
func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)))(A)
A. 3
B. 4
C. 5
D. 8
解析:函数调用中,实参有多个时,它们之间应该用逗号分隔。本题中的实参有3个,为f2(v1,v2)、(v3,v4,v5)、(v6,max(v7,v8))。其中f2(v1,v2)是函数做参数,(v3,v4,v5)是逗号表达式做参数,(v6,max(v7,v8))是逗号与函数相结合做参数。
2.下列不合法的用户标识符是( )。(C)
A. j2_KEY
B. Double
C. 4d
D. _8_
解析:在C语言程序中,合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。
3.若有以下程序段:
int r=8:
printf(\\(C)
A. 16
B. 8
C. 4
D. 2
解析:C语言中“>>”是对二进制的右移运算符,右移相当于将原数做除二操作,它将原数右移相应位数,并将移出的位舍去,在高位补0,将所得的结果再赋值给变量。本题中8的二进制为00001000,右移一位得到00000100,所以是4。
4.以下叙述中正确的是( )。(A)
A. 每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
B. 一条语句只能定义一个数组
C. 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D. 在引用数组元素时,下标表达式可以使用浮点数
解析:同类元素的集合称为数组,数组元素在内存中占据连续的存储空间,答案A)正确。在使用逗号运算符的情况下,一条语句可以定义多个数组,选项B)错。方括号中可以为整型变量或者常量表达式,选项C)错。数组元素在数组中的下标为整型常量或者变量构成的整型表达式,不能为浮点数,选项D)错。答案选A)。
5.以下有关宏替换的叙述不正确的是( )。(D)
A. 双引号中出现的宏名不替换
B. 使用宏定义可以嵌套
C. 宏定义仅仅是符号替换
D. 宏名必须用大写字母表示
解析:本题考查宏替换的规则。宏替换分为简单的字符替换和带参数的宏替换两类。使用宏时应注意以下几点:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查;②为了区别程序中其他的标识符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。
6.有以下计算公式
(C)
A. if(x>=0)y=sqrt(x);
if(x<0)y=sqrt(-x);
B. if(x>=0)y=sqrt(x);
else y=sqrt(-x);
C. y=sqrt(x);
if(x<0)y=sqrt(-x);
D. y=sqrt(x>=0?x:-x);
解析:本题重点考查的知识点是:sqrt()函数。sqrt()函数的作用是计算平方根,要求输出的参数x必须大于等于0。题目公式的要求是无论x大于等于0还是小于0,y的值都为x绝对值的开方。选项C中调用了sqrt(x)函数,而没有判断x的正负,则y=sqrt(x)会出错。
7.下面不属于软件设计阶段任务的是( )。(C)
A. 软件总体设计
B. 算法设计
C. 制定软件确认测试计划
D. 数据库设计
解析:从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D均正确,C为软件测试阶段的任务。
8.下述语句中,在字符串s1和s2相等时显示\\(B)
A. if(*s1==*s2)
puts(\\
B. if(!strcmp(s1,s2))
puts(\\
C. if(s1==s2)
puts(\\
D. if(strcmp(s1,s2))
puts(\\
解析:字符串比较不能用“==”,要用strcmp(s1,s2)函数,字符串s1和s2相等时返回值为0,故!srecmp(s1,s2)==1.条件成立执行后面的语句,输出they are Equal。
9.有以下程序:
#include <stdio.h>
struct S
{ int a, b; } data[2]={10,100,20,200};
main()
{ struct S p=data[1];
printf(\\(D)
A. 10
B. 11
C. 20
D. 21
解析:声明 data 是结构 S 数组。初始化 data[0].a=10; data[0].b=100;data[1].a=20;data[1].b=200。主函数中p=data[1] ; 即 p.a=data[1].a;p.b=data[1].b;执行语句printf(\\
10.下列排序方法中,最坏情况下比较次数最少的是( )。(D)
A. 冒泡排序
B. 简单选择排序
C. 直接插入排序
D. 堆排序
解析:冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。
11.下面叙述中错误的是( )。(A)
A. 软件测试的目的是发现错误并改正错误
B. 对被调试的程序进行“错误定位”是程序调试的必要步骤
C. 程序调试通常也称为Debug
D. 软件测试应严格执行测试计划,排除测试的随意性
解析:软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。
12.有以下程序
#include
main()
{ int y=9;
for(;y>0;y–)
if(y%3==0)printf(\\(C)
A. 741
B. 963
C. 852
D. 875421
解析:y的初值为9,所以在for循环中,当y的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式–y的值。因为自减符号在y的前面,所以首先y自减1,然后再输出y的值,故输出结果为8 5 2。
13.以下关于结构化程序设计的叙述中正确的是( )。(A)
A. 在C语言中,程序的模块化是利用函数实现的
B. 结构化程序使用goto语句会很便捷
本文档预览:3600字符,共15630字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载