国家二级C语言机试(选择题)模拟试卷291
选择题
1.C语言主要是借助以下哪种手段来实现程序模块化(D)
A. 定义常量和外部变量
B. 使用丰富的数据类型
C. 使用三种基本结构语句
D. 定义函数
解析:C语言用函数实现软件的模块化设计。
2.下面属于白盒测试方法的是( )。(B)
A. 等价类划分法
B. 判定一条件覆盖
C. 因果图法
D. 错误推测法(猜错法)
解析:白盒测试法主要有逻辑覆盖、基本路径测试等。其中,逻辑覆盖又包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断一条件覆盖。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。
3.若有以下程序
#include
main(){
int a=-11,b=10;
a/=b/=-4;
printf(\\(B)
A. .1.2
B. 5.2
C. 4.3
D. 5-3
解析:对于语句a/=b=-4:相当于a=a/(b=b/-4);a初值为-11.b的初值为10,则运算以后10/-4值为-2,-11/-2值为5。
4.以下叙述中错误的是( )。(A)
A. 使用3种基本结构构成的程序只能解决简单问题
B. 结构化程序由顺序、分支、循环3种基本结构组成
C. C语言是一种结构化程序设计语言
D. 结构化程序设计提倡模块化的设计方法
解析:使用顺序、选择(分支)、循环3种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A选项错误。
5.有以下程序:
#include
main()
{ int x=1,y=0;
if(!x)y++;
else if(x==0)
if(x)y+=2;
else y+=3;
printf(“%d\n”,Y);
}
程序运行后的输出结果是( )。(D)
A. 3
B. 2
C. 1
D. 0
解析:在jf else语句中,else总是与离它最近的if配对。本题中x为1,所以!x为0,所以执行else if语句中的内容,判断(x==0)是否成立,因为x为1,所以条件不成立,所以else if内部的if…else语句不再执行,y的值还是初始值0。
6.一个工作人员可使用多台计算机,而一台计算机被多个人使用,则实体工作人员与实体计算机之间的联系是(C)
A. 一对一
B. 一对多
C. 多对多
D. 多对一
解析:如果一个工作人员只能使用一台计算机且一台计算机只能被一个工作人员使用,则关系为一对一;如果一个工作人员可以使用多台计算机,但是一台计算机只能被一个工作人员使用,则关系为一对多;如果一个工作人员可以使用多台计算机,一台计算机也可以被多个工作人员使用,则关系为多对多。
7.若有定义语句:
int x=12,y=8,Z;
在其后执行语句:
z=0.9+x/y;
则z的值为( )。(A)
A. 1
B. 1.9
C. 2
D. 2.4
解析:x、y为整数,x/y值为1,加上0.9为1.9,赋值给整型变量z,接收后为1。
8.有以下程序
#include
main()
{int i,j,m=1;
for(i=1:i<3;i++)
{ for(j=3;j>0;j–)
{ if(i*j>3)break;
m*=i*j;
}}
printf(\\(D)
A. m=2
B. m=4
C. m=5
D. m=6
解析:这道题考查了for循环的嵌套应用。对于外层for循环来说,变量i从1增到2,循环执行2次。当变量i的值等于1时,对于内层for循环来说,变量i从3减到1,求得变量m的值等于6。当变量i的值等于2时,第一遍执行内层for循环,变量i的值等于3,那么i*i的值等于6,其值大于3,这时执行break语句,退出内层for循环的执行。所以程序输出变量m的值为6。
9.下列选项中,能够满足“只要字符串s1等于字符串s2,则执行sT”要求的是( )。(D)
A. if(s1-s2==0)ST;
B. if(s1==s2)ST;
C. if(strcpy(s1,s2)==1)ST;
D. if(stremp(s2,s1)==0)ST;
解析:在C语言中,要对两个字符串的大小进行比较,就需要调用字符串比较函数strcmp,如果这个函数的返回值等于0,说明两个字符串相等,因此D选项正确。
10.设有定义:char s[81];int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是( )。
C
解析:使用scanf()输入字符串时,空格和回车符都作为输入数据的分隔符而不能被读入,而应该使用gets(s)。
11.有以下程序:
#include<stdio.h>
int fun(int x[],int n)
{
static int sum=0,i;
for(i=0;i<n;i++)
sum+=x[i];
return sum
}
main()
{
int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);
printf(\\(D)
A. 55
B. 50
C. 45
D. 60
解析:内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以fun(b,4)=45,s=45+15=60,因此D选项正确。
12.若有以下程序
#include
main() {
int i,j=0;
char a[]=\\(D)
A. Howareyou
B. Hay!
C. Howareyou!
D. ay
解析:主函数中利用for循环访问字符串a的每一个字符,判断当前字符是否为空格,如果是空格则保存该空格后面的一个字符存放到字符数组b中。在字符串\\
13.关于地址的叙述中错误的是( )。(D)
A. 改变函数形参的值,不会改变对应实参的值
B. 函数可以返回地址值
C. 当在程序的开头包含头文件stdio.h时,可以给指针变量赋:NULL
D. 可以给指针变量赋一个整数作为地址值
解析:C语言中指针变量的值只能是
本文档预览:3600字符,共7695字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载