国家二级(C语言)机试模拟试卷481
选择题
1.在黑盒测试方法中,设计测试用例的主要依据是( )。(B)
A. 程序内部逻辑
B. 程序外部功能
C. 程序数据结构
D. 程序程序流程
解析:黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明。故B选项正确。
2.下列哪一条不属于数据库设计的任务?( )(A)
A. 设计数据库应用结构
B. 设计数据库概论结构
C. 设计数据库逻辑结构
D. 设计数据库物理结构
解析:数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。
3.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。(C)
A. auto和static
B. e~em和register
C. auto和register
D. static和register
解析:auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形式参数可以作为寄存器变量。extem:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。
4.有以下程序
#include
#define PT 3.5 ;
#define S(x) PT*x*x ;
main()
{ int a=1, b=2; printf(\\(A)
A. 程序有错无输出结果
B. 31.5
C. 7.5
D. 14.0
解析:宏定义不是C语句,结尾不加\\
5.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。(B)
A. 12345ABCDE
B. EDCBA54321
C. ABCDE12345
D. 54321EDCBA
解析:栈是先进后出的原则组织数据,所以入栈最早的最后出栈,所以选择B。
6.以下选项中,合法的一组C语言数值常量是( )。(B)
A. 028
B. 12
OXa23
4.5e0
C. .177
4c1.5
Oabc
D. 0x8A
10,000
3.E5
解析:八进制数开头必须是数字“0”,其数字包括0~7,而在选项A中,028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C中4e1.5是错误的。在选项D中,整型数据10,000的表示形式是错误的。所以本题的答案为选项B。
7.设有两行定义语句:
int scanf;
float case;
则以下叙述正确的是( )。(A)
A. 第2行语句不合法
B. 两行定义语句都合法
C. 第1行语句不合法
D. 两行定义语句都不合法
解析:本题考查用户标识符,用户自己定义的标识符不能与关键字相同,并且尽量避免和预定义标识符相同。本题中scanf为预定义标识符,可以作为用户标识符;case为关键字,不能作为用户标识符,故而答案选A)。
8.在C语言中,变量的隐含存储类别是( )。(A)
A. auto
B. static
C. extern
D. 无存储类别
解析:C语言中,变量的隐含存储类型为auto。
9.有以下程序:
#include
struct tt
{ int x;struct tt*y;)*p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{ int i;
p=a;
for(i=1;i<=2;i++){printf(\\(D)
A. 20,30,
B. 30,17
C. 15,30,
D. 20,15,
解析:本题考查的是指针和结构的应用。首先定义的数组tt中有两个成员,一个整型变量,一个结构指针。当i=1时,p指针指向结构数组的第一个元素,并输出此元素的第一个成员x.即20;当i=2时,p指针指向结构数组的第二个元素的第一个成员,所以输出15。
10.以下不能正确表示代数式(D)
A. 2*a*b/c/d
B. a*b/c/d*2
C. a/c/d*b*2
D. 2*a*b/c*d
解析:*与/优先级相同,所以采用左结合的方式。D项若改为:2*a*b/(c*d),则正确。
11.以下是while语句的基本形式:
while(表达式){语句;}
其中“表达式”( )。(D)
A. 必须是逻辑表达式
B. 必须是关系表达式
C. 必须是逻辑表达式或关系表达式
D. 可以是任意合法的表达式
解析:本题考查while表达式。while(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(一)误写为赋值号(=)时不会报错的,但是其值恒为1。
12.有以下程序
#include<stdio.h>
void main()
{int n=2,k=1;
while(!(k>0||n++));
printf(’’%d%d\n’’,k,n);
}
程序运行后的输出结果是( )。(D)
A. 0 2
B. 1 3
C. 5 7
D. 1 2
解析:在程序中整型变量n的初始值等于2,整型变量k的初始值等于1,在执行while语句时,由于表达式k的值大于0为真,所以不再需要判断“n++’是否为真,“(k>0‖n++)”表达式的值为真。“!(k>0‖n++)”表达式的值为假,所以while语句中的条件不满足,循环语句不会执行,变量n的值也不会加1,所在输出变量k和n的值是1和2。
13.设有定义:
int x=0, *p;
紧接着的赋值语句正确的是( )。(A)
A. p=N
本文档预览:3600字符,共13784字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载