国家二级(C语言)机试模拟试卷427
选择题
1.在数据流图中,带有箭头的线段表示的是( )。(B)
A. 控制流
B. 数据流
C. 模块调用
D. 事件驱动
解析:数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一一般在旁边标注数据流名。
2.在数据流图中,带有箭头的线段表示的是( )。(B )
A. 控制流
B. 数据流
C. 模块调用
D. 事件驱动
解析:数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。
3.设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为( )。(B)
A. 7
B. 8
C. 9
D. 10
解析:在具有n个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去非叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15—7=8。
4.有以下程序:
#include
#define N 4
void fun(int a[][N],int b[])
{ int i;
for(i=0;i<N;i++)b[i]=a[i][i]一a[i][N—1—i];
}
main()
{ int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},Y[N],i;
fun(x,Y);
for(i-0;i<N;i++)printf(“%d,”,Y[i]);prinff(“\n”);
}
程序运行后的输出结果是( )。(A)
A. 一3,一1,1,3,
B. 一12,一3,0,0,
C. 0,1,2,3,
D. 一3,一3,一3,一3,
解析:本题中由fun函数可知,b[0]=a[0][0]一a[0][3]=1一4=一3,b[1]=a[1][1]一[1][2]=6—7=一1,b[2]=a[2][2]一[2][1]=11一10=1,b[3]=a[3][3]一[3][1]=16—13=3。所以主函数中打印y数组元素的值为A选项。
5.下面结构体的定义语句中,错误的是( )。
A
解析:A)选项struct ord {int x;int y;int z;} struct ord a;错误,不能在定义结构体的同时,又用结构体类型名定义变量。应该写成B)选项或者D)选项的格式。
6.有以下程序:
#include<stdio.h>
main()
{
static char a[]=\\(B)
A. Prog
B. Porm
C. rga
D. Por
解析:首先定义一个字符型数组a,并对a进行初始化,然后定义字符型指针变量p。执行for语句,ptr=a表示将数组a的地址赋给ptr;ptr<a+7代表循环条件,ptr+=2,即ptr=ptr+2。执行putchar(*ptr);即输出*pt所对应的字符。此时ptr指向数组中的第1个元素,即a[0],因此*ptr表示a[0]中的值,即p,此时输出p;然后执行ptr+=2,此时ptr指向数组中的第3个元素,即a[2],输出0;然后执行ptr+=2,此时ptr指向数组中的第5个元素,即a[4],输出r;然后执行ptr+=2,此时ptr指向数组中的第6个元素,即a[5],输出m;然后执行ptr+=2,得到ptr=a+8<a+7,即循环条件不成立,循环结束,最终输出结果为Porm。
7.有以下程序
#include
main()
{FILE*fp;int i=20,j=30,k,n;
fp=fopen(\\(A)
A. 20 30
B. 20 50
C. 30 50
D. 30 20
解析:分析程序段,首先以只写方式打开文件,利用fprintf函数将i和j的值写入到文件d1.dat中,然后关闭文件;再以只读方式打开文件,利用格式化输入函数fscanf将文件中的数据赋值给k和n,最后输出k和n的值,分别是20和30。
8.有以下程序:
#include<stdio.h>
main()
{
char s[]={\\(B)
A. 0
B. 2
C. 3
D. 5
解析:程序首先给字符数组s[]赋值为“012xy”,for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母计数,在符串中小写字母为2个,即n=2。因此B选项正确。
9.设有定义:struct{int n;float x;}s[2],m[2]:{{10,2.8},{0,0.0}};则以下赋值语句中正确的是( )。(A)
A. s[0]=m[1];
B. s=m;
C. s.n=m.n;
D. s[2].x=m[2].x;
解析:定义了结构体类型数组s,长度为2,结构体类型数组m,长度为2,并对数组m进行了初始化。同类型的结构体可以直接用变量名实现赋值,A项正确;数组名为数组首地址,地址常量之间不可以相互赋值,B项错误;数组名为地址常量不是结构体变量,不能引用成员,C项错误;s[2]与m[2]数组越界,D项错误。
10.以下关于long、int和short类型数据占用内存大小的叙述中正确的是( )。(D)
A. 均占4个宁节
B. 根据数据的大小来决定所占内存的字节数
C. 由用户自己定义
D. 由C语言编译系统决定
解析:不同的编译系统或计算机系统对儿类整型数所占用的字节数有不同的规定。long、int和short类型数据占用内存大小是由选择何种C编译系统决定的。
11.C语言中,最基本的数据类型包括( )。(C)
A. 整型、实型、逻辑型
B. 整型、字符型、数组
C. 整型、实型、字符型
D. 整型、实型、结构体
解析:C语言中,最基本的数据类型包括整型、实型、字符型。
12.设有如下函数定义:
#include<stdio.h>
int fun(int k)
{if(k<1)returm0;
else if(k==1)retum1:
else return fun(k-1)+1:
}
若执行调用语句“n=fun(3);”,则函数fun总共被调用的次数是( )。(B)
A. 2
B. 3
C. 4
D. 5
解析:首先n=fun(3),3被当作参数传递进去,这就进行了一次调用,3被当做参数传进去后,程序会执行这句else retum fun(k-1)+1;这就调用了第二次,而参数是3-1也就是2。2被当做参数传进去后,程序会执行这句else return fun(k-1)+1;这就调用了第三次,而参数是2-1也就是1。1被当做参数传进去后,程序
本文档预览:3600字符,共14721字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载