国家二级(C语言)机试模拟试卷417
选择题
1.以下叙述中正确的是( )。(C)
A. 语句char a[2]={\\
B. 语句int a[]={0};是不合法的,遗漏了数组的大小
C. 语句int a[8]={0};是合法的
D. 语句char a[3];a=\\
解析:考查一维数组以及字符数组的初始化。初始化的时候可以只给数组的前面一部分元素设定初值,故C正确。字符数组中的每个元素为一个字符,需要用单引号,选项A错。若对数组全部元素赋初值时,可以不指定数组元素的个数,选项B错。定义字符数组时可以将字符串直接赋给该字符数组,其他情况则不可以,选项D错。答案选C。
2.下列选项中,不属于模块间耦合的是( )。(B)
A. 内容耦合
B. 异构耦合
C. 控制耦合
D. 数据耦合
解析:耦合可以分为下列几种,它们之间的耦合度由高到低排列:
内容耦合——若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。
公共耦合——若一组模块都访问同一全局数据结构,则称为公共耦合。
外部耦合——若一组模块都访问同一全局数据项,则称为外部耦合。
控制耦合——若一模块明显地把开关量、名字等信息送入另一模块,控制另一模块的功能,则称为控制耦合。
标记耦合——若两个以上的模块都需要其余某一数据结构的子结构时,不使用其余全局变量的方式而全使用记录传递的方式,这样的耦合称为标记耦合。
数据耦合——若一个模块访问另一个模块,被访问模块的输入和输出都是数据项参数,则这两个模块为数据耦合。
非直接耦合——若两个模块没有直接关系,它们之间的联系完全是通过程序的控制和调用来实现的,则称这两个模块为非直接耦合,这样的耦合独立性最强。
3.阅读以下程序
#include
main()
{ Int Case;float printF;
printf(\\(B)
A. 定义语句出错,Case是关键字,不能用作用户自定义标识符,printF不能用作用户自定义标识符
B. 定义语句出错,Int无法被识别
C. 定义语句无错,scanf不能作为输入函数使用
D. 定义语句无错,printf不能输出Case的值
解析:C语言是一种大小写敏感的语言,因此Int应为int,而Case printF则可以使用。
4.有以下程序:
#include<stdio.h>
int f(int x)
{
int y;
if(x==0||x==1)return(3);
y=x*x-f(x-2);
return y;
}
main()
{
int z;
z=f(3);
printf(\\(C)
A. 0
B. 9
C. 6
D. 8
解析:主函数中调用f函数,同时将数值3传递给变量x,执行条件不满足条件if(x==0||x==1);跳过return(3);,直接执行语句y=x*x-f(x-2);这里f(x-2)为函数的递归调用,再次调用f函数,此时x=1,判断条件成立,返回3给f(1),y=3*3-3=6,最后将6返回主函数,并进行输出。因此C选项正确。
5.若变量已正确定义并赋值,则错误的赋值语句是( )。(D)
A. a+=a+1;
B. a=sizeof(double);
C. a=d∥c;
D. a+1=a;
解析:赋值号“=”的左边必须是一个变量名,不可以是表达式。
6.两次运行下面的程序,如果从键盘上分别输入3和2,则输出结果是( )。
#include
main()
{intx;
scanf(\\(A )
A. 4和3
B. 4和2
C. 4和1
D. 3和2
解析:本题考查if-else语句。首先,scanf函数通过键盘读入x的值。当x=3时,第一个if语句先判断条件,取x的值3和2比较,然后将x的值加1,if条件成立,执行下面的printf语句,输出x的值4。当x=2时,第一个if语句先判断条件,先取x的值2和2比较,然后将x的值加1(x的值变为3),if条件不成立,执行下面的else语句,先输出x的值3,再将x的值减1。
7.if语句的基本形式为:if(表达式)语句,其中“表达式”( )。(A)
A. 可以是任意合法的表达式
B. 必须是逻辑表达式
C. 必须是逻辑表达式或关系表达式
D. 必须是关系表达式
解析:本题考查if表达式。if(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值号(=)时不会报错的,但是其值恒为1。
8.若语句“t=fun(fun(x,y,a),(a+b,a+c),x+y+z);”对fun函数的调用正确,则fun函数的形参个数为( )。(A)
A. 3
B. 4
C. 5
D. 6
解析:本题考查函数调用时的参数个数。在函数调用时,实参必须和形参的个数、类型一一对应。但函数的计算结果只有一个值,因而fun函数的参数个数为3。
9.有以下程序:
#include <stdio.h>
void swap(char *x, char *y)
{ char t;
t=*x; *x=*y; *y=t;
}
main()
{ char *s1=\\(D)
A. 321,cba
B. abc,123
C. 123,abc
D. 1bc,a23
解析:字符串是一个特殊的数组,所以按照数组的规则,s1应该指向的是数组的首地址,即\\
10.两个或两个以上的模块之间关联的紧密程度称为 ( )。(A)
A. 耦合度
B. 内聚度
C. 复杂度
D. 连接度
解析:耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素间彼此结合的紧密程度的度量。
11.以下叙述正确的是( )。(A)
A. 在C语言中调用fopen函数就可把程序中要读、写的文件与磁盘上实际的数据文件联系起来
B. fopen函数的调用形式为:fopen(文件名)
C. fopen函数的返回值为NULL时,则成功打开指定的文件
D. fopen函数的返回值必须赋给一个任意类型的指针变量
解析:A项正确,C语言中打开一个文件通过系统函数fopen实现,通过这个函数把程序中要读、写的文件与磁盘上实际的数据文件联系起来;B项错误,函数调用中缺少参数“操作方法”;C项错误,fopen函数返回一个指向指定文件的文件指针,如果不能实现打开指定文件的操作,则返回一个空指针NULL;D项错误,fopen函数的返回值必须赋给一个文件类型的指针变量。
12.以下关于C语言数据类型使用的叙述中错误的是( )。(C)
A. 若要处理如“人员信息”等含有不同类型的相
本文档预览:3600字符,共16418字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载