国家二级(C语言)机试模拟试卷501
选择题
1.有以下程序:
#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。
2.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为( )。(A)
A. 23,13,51,57,66,26,81,69,76
B. 13,23,26,51,57,66,81,76,69
C. 23,13,51,57,26,66,81,69,76
D. 23,13,51,57,81,26,66,69,76
解析:快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。
3.表达式:(int)((double)9/2)一(9)%2的值是( )。(B)
A. 0
B. 3
C. 4
D. 5
解析:运算符“/”和“%”的优先级高于“~”,所以先进行除法和求余运算,再进行减法运算。强制类型转换表达式的形式:(类型名)(表达式)。“9/2”结果为4,转换成double类型再转换成int类型结果依然为4,(9)%2的结果为1,4—1的最后结果为3。
4.在下述程序中,判断i>i共执行的次数是( )。
main()
{int i=0,j=10,k=2,s=0;
for(;;)
{ i+=k;
if(i>j){printf(\\(D)
A. 4
B. 7
C. 5
D. 6
解析:分析程序,i+=k;使得i的值每次增加2然后再和j进行了比较看i>j是否成立,i的变化过程为:i=2,i=4,i=6。i=8,i=10,i=12.此时i>j成立,所以判断i>j共执行的次数为6次。
5.在数据库管理技术的发展中,数据独立性最高的是( )。(C)
A. 人工管理
B. 文件系统
C. 数据库系统
D. 数据模型
解析:在人工管理阶段,数据无法共享,冗余度大,不独立,完全依赖程序;在文件系统阶段,数据共享性差;在数据库系统阶段,共享性好,独立性高。
6.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。(D)
A. 大写字母
B. 下划线
C. 数字字符
D. 连接符
解析:C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。所以D)选项中的连接符不合法。
7.以下叙述中不正确的是( )。(D)
A. 在不同的函数中可以使用相同的名字的变量
B. 函数中的形式参数是局部变量
C. 在一个函数内定义的变量只在本函数范围内有效
D. 在一个函数内的复合语句中定义的变量在本函数范围内有效
解析:此题考查的是变量的作用范围。选项D)中,在一个函数的复合语句中定义的变量是局部变量,只在定义此变量的复合语句内有效,并不是在整个函数体内都有效。
8.下列说法正确的是( )。(D)
A. int(**def)[10];—-def指向一个指针,该指针指向10个整型变量构成的数组
B. int*(*gh[10]);—gh指向一个指针,该指针指向10个整型变量构成的数组
C. int*(*gh[10]);—gh是一个指针,指向由10个指向整型变量的指针构成的数组
D. A,C均正确
解析:int*(*gh[10]);—gh是一个指针,指向由10个指向整型变量的指针构成的数组,int(*ef)[10];—def指向一个指针,该指针指向10个整型变量构成的数组。
9.已知下列函数定义:
fun(int*b,int c,int n,int data)
{int k;
for(k=0;k<m*n;k++)
{*b=data;
b++;}
}
则调用此函数的正确写法是(假设变量a的说明为
int a[50])( )。(D)
A. fun(*a,4,5,1);
B. fun(&a,4,5,1);
C. fun((int*)a,4,5,1);
D. fun(a,4,5,1);
解析:本题考查函数调用时的参数传递。fun函数的调用形式为fun(int *b,int m,int n,int data),而调用数组时,用数组名表示一个指向数组第一个元素的指针,因此调用时的形式为fun(a,4,5,1)。
10.在软件生产过程中,需求信息的来源是( )。(D)
A. 程序员
B. 项目经理
C. 设计人员
D. 软件用户
解析:软件需求是指用户对目标软件系统在功能、性能、设计约束等方面的要求,是由用户提出的。
11.有以下程序:
#include<stdio.h>
main()
{int a[]={1,2,3,4),y,*p=&a[3];
–p;y=*p;printf(\\(D)
A. y=0
B. y=1
C. y=2
D. y=3
解析:程序首先定义了一个一维数组和指针,接着将数组第4个元素的地址赋给*p,进行–p使指针p指向了数组的第3个元素;通过y=*p,将数组第3个元素的值3赋给了y,所以选项D)正确。
12.有以下程序:
#include <stdio.h>
int f(int n);
main()
{ int a=3,s;
s=f(a);s=s+f(a); printf(\\(A)
A. 9
B. 8
C. 7
D. 10
解析:题目中静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。
本文档预览:3600字符,共16617字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载