国家二级C语言机试(编译预处理和指针)模拟试卷7
- 格式:doc
- 大小:34.65 KB
- 文档页数:7
国家二级C语言机试(编译预处理和指针)模拟试卷6(总分:50.00,做题时间:90分钟)一、选择题(总题数:25,分数:50.00)1.设有某函数的说明为int*func(int a[10],int n);则下列叙述中,正确的是(分数:2.00)A.说明中的a[10]写成a[]或*a效果完全一样√B.形参a对应的实参只能是数组名C.func的函数体中不能对a进行移动指针(如a++)的操作D.只有指向10个整数内存单元的指针,才能作为实参传给a解析:解析:函数func为返回值为指针的函数,有两个形参,形参数组a为指针变量,保存实参数组的首地址,其元素个数由实参数组决定,因此说明中的a[10]写成a[]或*a效果完全一样。
2.设有定义:int x=0,*p;紧接着的赋值语句正确的是(分数:2.00)A.*p=NULL;B.p=NULL;√C.p=x;D.*p=x:解析:解析:定义指针变量时,必须将指针变量初始化为NULL(为空),否则,如果不赋给它地址,系统会随机给它分配一个地址。
3.以下叙述中错误的是(分数:2.00)A.函数可以返回地址值B.改变函数形参的值,不会改变对应实参的值C.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULLD.可以给指针变量赋一个整数作为地址值√解析:解析:指针变量的值只能是存储单元地址,而不能是一个整数,选项D)的描述是错误,为待选答案。
函数可以返回内存空间的地址,同时函数形参和实参分别占用不同的内存单元,改变形参的值不会改变对应实参的值,在头文件stdio.h中,NULL被定义为void型的指针。
4.设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是(分数:2.00)A.int*p=(float)x;B.float*p=&x;√C.float p=&x;D.float*p=1024;解析:解析:定义指针变量的一般形式为:类型名 *指针变量名 1,*指针变量名2……;。
国家二级C语言机试(操作题)模拟试卷7(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:将形参S所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。
例如,形参s 所指的字符串为:abs5def126jkm8,程序执行后的输出结果为:22。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <string.h>#include <ctype.h>int fun(char *s){ int sum=0;while(*s) {/**********found**********/if(isdigit(*s))sum+=*s____1____;/**********found**********/____2____;}/**********found**********/return____3____;}main( ){ char s[81];int n;printf(“\nEnter a string:\n\n”);gets(s);n=fun(s);printf(“\nThe result is:%din\n”,n);}正确答案:(1)48或’0’(2)s++(3)sum解析:第一空:“if(isdigit(*s)) sum+=*s-___1___;”如果木s是数字字符的话,sum累加其对应的数字的和,第一空处是将*s转化为对应的数字,由审题分析可知,第一空为“‘0’”或“48”,’0’的ASCII码值为48。
第二空:“while(*s)”循环的终止条件是达到s字符串的结束,因此在循环体内s应该不断往字符串尾移动,故第二空处应为“s++”。
国家二级C语言(函数、指针、编译预处理和动态存储分配)机试模拟试卷2(题后含答案及解析)题型有:1. 选择题选择题1.若有定义语句double a,*p=&a;,下列叙述中错误的是( )。
A.定义语句中的*号是一个间址运算符B.定义语句中的*号是一个说明符C.定义语句中的p只能存放double类型变量的地址D.定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p正确答案:A解析:在变量定义double a,水p=&a;中,木号是一个指针运算符,而非间址运算符,所以A错误。
知识模块:指针2.有以下程序:#include<stdio.h>main( ) { int a=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf(‘‘%d\n’’,c);} 程序的运行结果是( )。
A.1B.2C.3D.4正确答案:C解析:该程序中int*p1=&a,*p2=&b,*p=&c;指定义3个指针变量,并赋值,即使p1指向a;p2指向b;p指向c。
*p=*p1*(*p2);语句是给p所指的存储单元c赋值,就是p1所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a*b,等价于c=1*3=3,因此C选项正确。
知识模块:指针3.有以下程序:#include<stdio.h>main( ) { int n.*pP=NULL;*p=&n:printf(‘‘Input n:’’);scanf(‘‘%d’’,&p);printf(‘‘output n:’’);printf(‘‘%d\n’’,p);} 该程序试图通过指针p为变量n读人数据并输出,但程序有多处错误,下列语句中正确的是( )。
A.int n,*p=NULL;B.*p=&n;C.scanf(‘‘%d’’,&p)D.printf(‘‘%d\n’’,p);正确答案:A解析:B选项的正确写法应为p=&n;C选项的正确写法应为scanf(‘‘%d’’,p);选项D的正确写法应为printf(‘‘%d\n’’,*p)。
国家二级C语言机试(操作题)模拟试卷365(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。
操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵: 1 2 3 计算结果为7 4 1 4 5 6 8 5 2 7 8 9 9 6 3 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 43 void fun(int(*t)[N])4 { int j,r[N];5 for(j=0;j<N;j++)r[j]=t[0][j];6 for(j=0;j<N;j++)7 /**********found**********/8 t[0][N-j-1]=t[j][__1__];9 for(j=0;j<N;j++)10 t[j][0]=t[N-1][j];11 /**********found**********/12 for(j=N-1;j>=0;__2__)13 t[N-1][N-1-j]=t[j][N-1];14 for(j=N-1;j>=0;j--)15 /**********found**********/16 t[j][N-1]=r[__3__];17 }18 main( )19 {int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;20 printf(‘‘\nThe original array:\n’’);21 for(2=0;i<N;i++)22 {for(j=0;j<N;j++)printf(‘‘%2d”,t[i][j]);23 printf(‘‘\n’’);24 }25 fun(t);26 printf(‘‘\nThe result is:\n’’);27 for(i=0;i<N;i++)28 { for(j=0;j<N;j++)printf(‘‘%2d’’,t[i][j]);29 printf(‘‘\n’’);30 }31 }正确答案:(1)0 (2)j-- (3)j解析:第一空:由审题分析可知,此处是使第一列成为第一行,即把第一列元素移动到第一行,第一列元素是“t[j][0]”,第一行元素是“t[0][N-j-1]”,故第一空处应为“0”。
国家二级计算机考试c语言试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言中变量的描述,错误的是:A. 变量名必须以字母开头B. 变量名可以包含数字和下划线C. 变量名区分大小写D. 变量名可以以数字开头答案:D2. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. doubleD. char答案:A3. 在C语言中,以下哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C4. 下列哪个选项不是C语言中的控制结构?A. 顺序结构B. 选择结构C. 循环结构D. 函数结构5. 在C语言中,用于定义函数的关键字是:A. intB. voidC. returnD. function答案:B6. C语言中,用于声明一个字符型变量的关键字是:A. intB. charC. floatD. double答案:B7. 在C语言中,以下哪个选项是正确的注释方式?A. //B. /* */C.D. @@答案:B8. C语言中,用于定义一个浮点型变量的关键字是:A. intB. floatC. doubleD. char答案:B9. 在C语言中,以下哪个选项不是合法的整数常量?B. 0x1AC. 0123D. 1.23答案:D10. 在C语言中,以下哪个选项不是合法的标识符?A. _nameB. name2C. 2nameD. name-name答案:C二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个数组。
答案:int2. C语言中,使用________函数可以输出格式化的字符串。
答案:printf3. 如果要定义一个指向整型数据的指针,应该使用________关键字。
答案:int*4. 在C语言中,使用________关键字可以定义一个结构体。
答案:struct5. 使用________函数可以获取当前系统时间。
答案:time6. 在C语言中,使用________关键字可以定义一个枚举类型。
国家二级C语言(C语言基础知识)机试模拟试卷7(题后含答案及解析)题型有:1. 选择题选择题1.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A.C语言程序仅可以编译执行B.C语言程序仅可以解释执行C.C语言程序既可以编译执行又可以解释执行D.以上说法都不对正确答案:A解析:C语言是编译型语言,只在编译链接后才能执行。
知识模块:C语言基础知识2.以下选项中关于程序模块化的叙述错误的是A.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块B.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序C.把程序分成若干相对独立的模块,可便于编码和调试D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序正确答案:B解析:如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步细化的设计方法把若干独立模块组装成所要求的程序,知识模块:C语言基础知识3.以下叙述中正确的是A.在C语言程序设计中,所有函数必须保存在一个源文件中B.在算法设计时,可以把复杂任务分解成一些简单的子任务C.只要包含了三种基本结构的算法就是结构化程序D.结构化程序必须包含所有的三种基本结构,缺一不可正确答案:B解析:模块化设计思想,就是把复杂的任务分成简单的子任务,用函数或者过程描述子任务,C语言中一个程序可以包括多个源文件,每个源文件可以有若干个函数,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成,不一定全要包括这三种结构,而算法不等于程序。
知识模块:C语言基础知识4.以下叙述中正确的是A.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行B.C语言程序将从源程序中第一个函数开始执行C.main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等D.C语言规定必须用main作为主函数名,程序将从此开始执行正确答案:D解析:C语言规定必须以main作为主函数名。
计算机二级c语言考试题目及答案考试题目一:1. 下面哪个选项是 C 语言中的预处理指令?A. #includeB. intC. printfD. if答案:A. #include考试题目二:2. 在 C 语言中,如何声明一个整型变量?A. String num;B. int num;C. float num;D. num int;答案:B. int num;考试题目三:3. C 语言中的逻辑与运算符是什么?A. &&B. ||C. !D. &答案:A. &&考试题目四:4. 下面哪个选项是正确的C语言定义和初始化数组的方法?A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[5] = (1, 2, 3, 4, 5);C. int arr = [1, 2, 3, 4, 5];D. int arr[5] = [1, 2, 3, 4, 5];答案:A. int arr[5] = {1, 2, 3, 4, 5};考试题目五:5. 下面程序的输出结果是什么?```c#include <stdio.h>int main() {int i = 5;if (i == 5) {printf("Hello, World!");}else {printf("Goodbye, World!");}return 0;}```A. Hello, World!B. Goodbye, World!C. 编译错误D. 运行错误答案:A. Hello, World!考试题目六:6. 下面哪个选项是 C 语言中的循环语句?A. chooseB. forC. switchD. if答案:B. for考试题目七:7. 在 C 语言中,如何访问数组的第一个元素?A. arr[0]B. arr[1]C. arr[-1]D. arr[first]答案:A. arr[0]考试题目八:8. 下面哪个选项是 C 语言中的条件语句?A. do-whileB. switchC. breakD. continue答案:B. switch考试题目九:9. 下面哪个选项是 C 语言中的自增运算符?A. +=B. -=C. ++D. --答案:C. ++考试题目十:10. 下面程序的输出结果是什么? ```c#include <stdio.h>int main() {int i = 0;while (i < 5) {printf("%d ", i);i++;}return 0;}```A. 0 1 2 3 4B. 1 2 3 4 5C. 0 1 2 3 5D. 编译错误答案:A. 0 1 2 3 4以上是计算机二级C语言考试题目及答案。
国家二级C++机试(数据结构与算法)模拟试卷7(题后含答案及解析)题型有:1. 选择题选择题1.下列叙述中正确的是( )。
A.循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B.循环队列中的元素个数随队头指针的变化而动态变化C.循环队列中的元素个数随队尾指针的变化而动态变化D.循环队列中的元素个数不会变化正确答案:A解析:所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。
在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针from指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针舶nt指向的后一个位置与队尾指针rear指向位置之间的元素数量。
知识模块:数据结构与算法2.下列关于线性链表的叙述中,正确的是( )。
A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C.进行插入与删除时,不需要移动表中的元素D.以上都不正确正确答案:C解析:线性表的链式存储结构称为线性链表。
在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
知识模块:数据结构与算法3.下列叙述中正确的是( )。
A.线性表链式存储结构的存储空间一般要少于顺序存储结构B.线性表链式存储结构与顺序存储结构的存储空间都是连续的C.线性表链式存储结构的存储空间可以是连续的,也可以是不连续的D.以上都不正确正确答案:C解析:线性表的存储分为顺序存储和链式存储。
在顺序存储中,所有元素所占的存储空间是连续的。
而在链式存储的方式中,将存储空间的每一个存储结点分为两部分,一部分用于存储数据元素的值,称为数据域;另一部分用于存储下一个元素的存储序号,称为指针域。
所以线性表的链式存储方式比顺序存储方式的存储空间要大一些。
国家二级C语言机试(选择题)模拟试卷100(题后含答案及解析) 题型有:1. 选择题选择题1.数据结构主要研究的是数据的逻辑结构、数据的运算和( )。
A.数据的方法B.数据的存储结构C.数据的对象D.数据的逻辑存储正确答案:B解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
2.一棵二叉树的前序遍历结果是ABCEDF,中序遍历结果是CBAEDF,则其后序遍历的结果是( )。
A.DBACEFB.CBEFDlAC.FDAEBCD.DFABEC正确答案:B解析:由于该二叉树的前序遍历结果是ABCEDF,显然A结点为根结点,所以后序遍历时A结点是最后遍历的,其后序遍历的结果为CBEFDA。
3.在数据处理中,其处理的最小单位是( )。
A.数据B.数据项C.数据结构D.数据元素正确答案:B解析:数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加工处理的信息载体,数据处理的最小单位是数据项。
4.在数据库系统的内部结构体系中,索引属于( )。
A.模式B.内模式C.外模式D.概念模式正确答案:B解析:内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。
5.以下( )不属于对象的基本特征。
A.继承性B.封装性C.分类性D.多态性正确答案:A解析:对象具有特征:标识惟一性,指对象是可区分的:分类性,指可以将具有相同属性和操作的对象抽象成类;多态性,指同一个操作可以是不同对象的行为;封装性,从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法:模块独立性好,对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。
6.数据库系统的核心是( )。
国家二级(C语言)机试模拟试卷120(总分86,考试时间90分钟)1. 选择题1. 下列关于栈和队列的描述中,正确的是( )。
A. 栈是先进先出B. 队列是先进后出C. 队列允许在队头删除元素D. 栈在栈顶删除元素2. 已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是( )。
A. ABCDEB. ECABDC. EACDBD. CDEAB3. 在数据流图中,带有箭头的线段表示的是( )。
A. 控制流B. 数据流C. 模块调用D. 事件驱动4. 结构化程序设计的3种结构是( )。
A. 顺序结构,分支结构,跳转结构B. 顺序结构,选择结构,循环结构C. 分支结构,选择结构,循环结构D. 分支结构,跳转结构,循环结构5. 下列方法中,不属于软件调试方法的是( )。
A. 回溯法B. 强行排错法C. 集成测试法D. 原因排除法6. 下列选项中,不属于模块间耦合的是( )。
A. 内容耦合B. 异构耦合C. 控制耦合D. 数据耦合7. 下列特征中不是面向对象方法的主要特征的是( )。
A. 多态性B. 标识惟一性C. 封装性D. 耦合性8. 在数据库设计中,将E—R图转换成关系数据模型的过程属于( )。
A. 需求分析阶段B. 概念设计阶段C. 逻辑设计阶段D. 物理设计阶段9. 在一棵二叉树上,第5层的结点数最多是( )。
A. 8B. 9C. 15D. 1610. 下列有关数据库的描述,正确的是( )。
A. 数据库设计是指设计数据库管理系统B. 数据库技术的根本目标是要解决数据共享的问题C. 数据库是一个独立的系统,不需要操作系统的支持D. 数据库系统中,数据的物理结构必须与逻辑结构一致11. 以下关于C语言的叙述中正确的是( )。
A. 预处理命令通常位于函数体外面,但也可以位于函数体中间B. C语言中的变量定义须在其他语句之前C. 在C语言程序的书写中,一个语句必须单占一行D. —个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的ma1n函数12. 下列叙述中错误的是( )。
国家二级C语言(编译预处理和指针)机试模拟试卷11(题后含答案及解析)题型有:1. 选择题选择题1.设有定义:int x=0, *p; 紧接着的赋值语句正确的是A.*p=NULL;B.p=NULL;C.p=x;D.*p=x;正确答案:A解析:定义指针变量时,必须将指针变量初始化为NULL(为空),否则,如果不赋给它地址,系统会随机给它分配一个地址。
知识模块:编译预处理和指针2.以下叙述中错误的是A.函数可以返回地址值B.改变函数形参的值,不会改变对应实参的值C.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULLD.可以给指针变量赋一个整数作为地址值正确答案:D解析:指针变量的值只能是存储单元地址,而不能是一个整数,选项D的描述是错误,为待选答案。
函数可以返回内存空间的地址,同时函数形参和实参分别占用不同的内存单元,改变形参的值不会改变对应实参的值,在头文件stdio.h中,NULL被定义为void型的指针。
知识模块:编译预处理和指针3.设已有定义:float x; 则以下对指针变量p进行定义且赋初值的语句中正确的是A.int *p=(float)x;B.float *p=&x;C.float p=&x;D.float *p=1024;正确答案:B解析:定义指针变量的一般形式为:类型名*指针变量名1,*指针变量名2,……;。
对一个指针变量赋值要通过求地址运算符(&)获得变量的地址值,然后把此地址值赋给指针变量。
因而在选项A的表达式中,赋值号的左边表示定义了指针变量p,而右边表示求变量x的地址值。
知识模块:编译预处理和指针4.有以下程序main( ) { int m=1,n=2,*p=&m,*q=&n,*r; r=p; p=q; q=r; printf(“%d,%d,%d,%d\n”,m,n,*p,*q); }程序运行后的输出结果是A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,2正确答案:B解析:在主函数定义了3个整数指针变量p,q,r,并且使p指向m,q指向n,再执行r=p;p=q;q=r;这三条语句,使q指向m,p指向n,再输出变量m,n,*p,*q 时,它们值分别为1,2,2,1。
国家二级(C语言)机试模拟试卷100(题后含答案及解析)题型有:1. 程序填空题 2. 程序修改题 3. 程序设计题程序填空题(30分)1.请补充main 函数,该函数的功能是:先以只写方式打开文件“out99.dat”,再把字符串str中的字符保存到这个磁盘文件中。
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在main 函数的横线上填入所编写的若干表达式或语句。
试题程序:#include “stdio. h”#include “conio.h”#define N 80 main ( ) { FILE *fp; int i=0; char ch; char str[N]=“I’m a student!”; clrscr( ); if ( (fp=fopen (【】) ) ==NULL) {printf(“cannot open out99. dat\n”);exit(0); } while (str[i]) {ch=str[i];【】; putchar(ch); i++; }【】; }正确答案:“out99.dat”,“w”fpnte (ch,fp)fclose (fp)解析:第一空:本题考查对文件操作的掌握。
打开一个文件的调用方式是,fp==fopen (文件名,使用文件方式);,题目要求以只写的方式打开文件“out 99.dat”,所以文件使用方式为“w”。
第二空;fputc ( )函数用于将一个字符写到磁盘文件上去,调用形式为:fputc (要输出的字符,文件指针)。
第三空:对一个文件进行操作后,应该关闭它,以防它再被误用。
调用形式为:fclose (文件指针);程序修改题(30分)2.下列给定程序中,函数fun( )的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。
例如,当n为5时,函数值应为10.407143。
全国高校计算机等级考试(二级C)模拟一试题一、选择题1、设有语句:int k, *p; 以下能正确执行的赋值语句是(D )。
A、k=pB、k=&pC、P=KD、p=&k2、以下运算符中优先级最高的运算符是(A)。
A、!B、&&C、||D、<3、求字符串长度的函数是( D )。
A、strcatB、strcpyC、strcmpD、strlen4、下面程序段的运行结果是(A)。
char x[5]=“ab\0c\0”;printf("%s",x);说明:“\0”中的“0”是数字零。
A、abB、abcC、ab\0D、ab\0c\05、若有说明语句: int a[2][4]; 则对数组a元素的正确引用是( D )。
A、a[2]B、a[4]C、a[2][4]D、a[1][3]6、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。
A、float型B、int型C、long型D、double型7、用数组名作为函数调用的实参时,传递给虚参的是(A)。
A、数组的首地址B、数组第一个元素的值C、数组中全部元素的值D、数组元素的个数8、以下程序的输出结果是( D )。
#include<stdio.h>#define F(y) 8-yvoid main(void){int x,y;y=F(2);printf(“y=%d”,y);}A、2B、y=2C、6D、y=69、以下程序的输出结果是(A)。
#include<stdio.h>struct{int x,y;} a;void main(void){int x,y=50,z;a.x=10;a.y=20;z=a.x+y;printf(“%d”,z);}A、60 B 、10 C、0 D、2010、语句fopen(“file.dat”,”r”); 的功能是(A)。
A、按照“读”方式打开文件B、按照“写”方式打开文件C、按照“读写”方式打开文件D、按照“追加”方式打开文件11、关闭文件的语句是( D )。
国家二级C语言(公共基础知识)机试模拟试卷7(题后含答案及解析)题型有:1. 选择题选择题1.下列叙述中正确的是( )。
A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上3种说法都不对正确答案:D解析:算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A选项错误。
设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。
知识模块:公共基础知识2.算法的有穷性是指( )。
A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用正确答案:A解析:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
有穷性是指算法程序的运行时间是有限的。
知识模块:公共基础知识3.算法的空间复杂度是指( )。
A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数正确答案:A解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,所以选择A选项。
知识模块:公共基础知识4.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是( )。
A.一369B.369C.0.369D.整数集合{1,2,3,4,5}正确答案:B解析:只有B选项369可以用无符号整数来表示和存储。
A选项一369有负号,C选项0.369是小数,都不能用无符号整数类存储。
D选项是一个整数集合,得用数组来存储。
知识模块:公共基础知识5.下列叙述中正确的是( )。
A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上说法均错误正确答案:A解析:程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。
知识模块:公共基础知识6.下列叙述中正确的是( )。
全国计算机等级考试二级C语言模拟试卷(七)一、选择题(每小题1分,共40分)1、下列关于循环队列的叙述,正确的是A.循环队列是队列的一种顺序存储结构B.循环队列是队列的一种链式存储结构C.循环队列是非线性结构D.循环队列是一种逻辑结构2、下列叙述中,正确的是A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈和队列都是非线性结构D.栈和队列都是操作受限的线性结构3、一棵二叉树共有25个节点,其中5个叶子节点,那么度为1的节点数为A.4 B.6 C.10 D.164、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是A.内模式B.外模式C.概念模式D.逻辑模式5、在满足实体完整性约束的条件下A.一个关系中可以没有候选关键字B.一个关系中只能有一个候选关键字C.一个关系中必须有多个候选关键字D.一个关系中应该有一个或者多个候选关键字6、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A.自然连接B.并C.差D.交7、软件生命周期中的活动不包括A.软件维护B.市场调研C.软件测试D.需求分析8、下列不属于需求分析阶段任务的是A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书审评9、在黑盒测试方式中,设计测试用例的主要根据是A.程序外部功能B.程序内部逻辑C.程序数据结构D.程序流程图10、在软件设计中不使用的工具是A.系统结构图B.程序流程图C.PAD图D.数据流图(DFD图)11、针对简单程序设计,以下叙述的实施步骤正确的是A.确定算法和数据结构、编码、调试、整理文档B.编码、确定算法和数据结构、调试、整理文档C.整理文档、确定算法和数据结构、编码、调试D.确定算法和数据结构、调试、编码、整理文档12、下列关于C语言中数的表示的叙述,正确的是A.只有整型数在允许范围内能精确无误的表示,实型数会有误差B.只要在允许范围内整型和实型都能精确的表示C.只有实型数在允许范围内能精确无误的表示,整型数会有误差D.只有用八进制表示的数才不会有误差13、下列关于算法的叙述,错误的是A.算法可以用伪代码、流程图等多种形式来描述B.一个正确的算法必须有输入C.一个正确的算法必须有输出D.用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码14、以下叙述错误的是A.一个C程序可以包含多个不同名的函数B.一个C程序只能有一个主函数C.C程序在书写时,有严格的缩进要求,否则不能编译通过D.C程序的主函数必须用main作为函数名15、设有以下语句char ch1,ch2; scanf(”%c%c”,&ch1,&ch2);若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是A.A和B之间用逗号间隔B.A和B之间不能有任何间隔符C.A和B之间可以用回车间隔D.A和B之间用空格间隔16、下列选项中,非法的字符常量是A.’\102’B.’\65’C.’\xff’D.’\019’17、有以下程序#include <stdio.h>main(){int a=0,b=0,c=0;c=(a-=a-5); a=b,b+=4;p rintf(“%d, %d, %d\n”,a,b,c)}程序运行后输出的结果是A.0,0,0 B.0,4,5 C.4,4,4 D.4,4,518、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是A.x++; printf((“%d\n”,x); B.n=++x; printf((“%d\n”,n);C.++x; printf((“%d\n”,x); D.n=x++; printf((“%d\n”,n); 19、以下选项中,能表示逻辑值“假”的是A.0 B.0.000001 C.1 D.100.020、有以下程序#include <stdio.h>main(){ int a;s canf(“%d”,&a);if (a++<9) printf((“%d\n”,a);else printf(“%d\n”,a--);}程序运行时键盘输入9<回车>,则输出的结果是A.8 B.9 C.10 D.11 21、有以下程序#include <stdio.h>int main(){int s=0,n;for (n=0;n<3;n++){switch(s){ case 0:case 1:s+=1;case 2:s+=2;break;case 3:s+=3;default:s+=4;}printf("%d,",s);}return 0;}程序运行后的结果是A.1,2,4, B.1,3,6 , C.3,6,10, D.3,10,14, 22、若k是int类型变量,且有以下for语句for(k=-1;k<0;k++)printf(“****\n”);下面关于语句执行情况的叙述中正确的是A.循环体执行一次B.循环体执行两次C.循环体一次也不执行D.构成无限循环23、有以下程序#include <stdio.h>int main(){char a,b,c;b='1';c='A';for (a=0;a<6;a++){if(a%2) putchar(b+a);else putchar(c+a);}return 0;}程序运行后输出的结果是A.123456 B.1B3D5F C.A2C4E6 D.ABCDEF24、设有如下定义语句int m[ ]={2,4,6,8},*k=m;以下选项中,表达式的值为6的是A.*(k+2) B.k+2 C.*k+2 D.*k+=225、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。
二级C语言-7-2(总分73.5, 做题时间90分钟)一、选择题1.设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是。
• A. b%(c%4)• B. b%(c-a%5)• C. b%a-a%5• D. (b%a)-(a%4)SSS_SIMPLE_SINA B C D分值: 1答案:D[解析] 选项D)括号内的运算分别是b%a=11%6=5和a%c=6%4=2,最后得到5-2=3。
2.算法的时间复杂度是指• A. 执行算法程序所需要的时间• B. 算法程序的长度• C. 算法执行过程中所需要的基本运算次数• D. 算法程序中的指令条数SSS_SIMPLE_SINA B C D分值: 1答案:C[解析] 算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。
所谓算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。
3.以下程序的运行结果为#include"stdio.h"main(){ int m,n;for(m=0,n=10;m<n;m+=3,n--);printf("%d,%d\n",m,n);}• A. 6,7• B. 7,6• C. 9,7• D. 7,9SSS_SIMPLE_SINA B C D分值: 1答案:C[解析] for后一对括号中的表达式可以是任意有效的C语言表达式。
该题目的循环体部分为空语句,循环控制条件为m<n,每一次m增3,n减1,每当循环体执行结束时,循环控制变量m,n就会分别被增3和减1。
4.负责数据库中查询操作的数据库语言是______。
• A.数据定义语言• B.数据管理语言• C.数据操纵语言• D.数据控制语言SSS_SIMPLE_SINA B C D分值: 1答案:C[解析] 数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
全国计算机等级考试二级C语言笔试模拟试题(7)总分:100分及格:60分考试时间:120分每小题1分,共40分(1)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是A. e3,e1,e4,e2B. e4,e3,e2,e1C. e3,e4,e1,e2D. 任意顺序(2)下列关于标识符的说法中错误的是A. 合法的标识符是由字母、数字和下划线组成B. C语言的标识符中,大写字母和小写字母被认为是两个不同的字符C. C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符D. 用户标识符与关键字不同时,程序在执行时将给出出错信息(3)下列常量中,为不合法的实型常量表示的是A. .0032B. 0.0C. 0.3242E8D. .E3(4)字符型数据在机器中是用ASCII码表示的,字符"5"和"7"在机器中表示为A. 10100011和01110111B. 01000101和01100011C. 00110101和00110111D. 01100101和01100111(5)以下说法错误的是A. 一个算法应包含有限个步骤B. 在计算机上实现的算法是用来处理数据对象的C. 算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现D. 算法的目的是为了求解(6)下列程序执行后的输出结果是main(){ int a[3][3], *p,i; p=&a[0][0]; for(i=1; i<9; i++)p[i]=i+1; printf("%d\n",a[1][2]);}A. 3B. 6C. 9D. 随机数(7)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
其中数据独立性最高的阶段是A. 数据库系统B. 文件系统C. 人工管理D. 数据项管理(8)下列程序执行后的输出结果是void func(int *a,int b[]){ b[0]=*a+6; } main(){int a,b[5]; a=0; b[0]=3; func(&a,b); printf("%d\n",b[0]); }A. 6B. 7C. 8D. 9(9)数据处理的最小单位是A. 数据B. 数据元素C. 数据项D. 数据结构(10)数据库系统的核心是A. 数据库B. 数据库管理系统C. 模拟模型D. 软件工程(11)下列关于C语言数据文件的叙述中正确的是A. 文件由ASCII码字符序列组成,C语言只能读写文本文件B. 文件由二进制数据序列组成,C语言只能读写二进制文件C. 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D. 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(12)下面程序的文件名为t.exe,在DOS下输入的命令行参数如下:t to meet me<回车> 则程序输出的结果是#include "stdio.h" main(argc,argv)int argc;char*argv[]; {int i; printf("%d\n",argc);}A. 3B. 4C. 2D. 以上答案都不正确(13)在单链表中,增加头结点的目的是A. 方便运算的实现B. 使单链表至少有一个结点C. 标识表结点中首结点的位置D. 说明单链表是线性表的链式存储实现(14)以下程序的输出结果是main(){ int x=1,y=3; printf("%d,",x++); { int x=0;x+=y*2; printf("%d,%d, ",x,y); } printf("%d,%d\n",x,y); }A. 1,6,3,1,3B. 1,6,3,6,3C. 1,6,3,2,3D. 1,7,3,2,3(15)在计算机中,算法是指A. 加工方法B. 解题方案的准确而完整的描述C. 排序方法D. 查询方法(16)数据库的故障恢复一般是由A. 数据流图完成的B. 数据字典完成的C. DBA完成的D. PAD图完成的(17)有如下定义struct person{char name[9];int age;}; struct person class[10]={"John",17,"paul",19,"Mary",18,"Adam",16,}; 根据上述定义,能输出字母M的语句是A. printf("%c\n",class[3].name);B. printf("%c\n",class[3].name[1]);C. printf("%c\n",class[2].name[1]);D. printf("%c\n",class[2].name[0]);(18)请选出可用作C语言用户标识符的是A. void,define,WORDB. a3_b3,_123,IFC. FOR,--abc,CaseD. 2a,Do,Sizeof(19)下列语句中,错误的是(x,y,a,b假设已经定义好)A. while(x=y)5;B. dox++while(x==10);C. while(0);D. do2;while(a==b);(20)以下不正确的叙述是A. 在C程序中,逗号运算符的优先级最低B. 在C程序中,APH和aph是两个不同的变量C. 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(21)若有以下调用语句,则不正确的fun函数的首部是main(){ …int a [50],n; …fun(n, &a[9]); …}A. voidfun(intm,intx[])B. voidfun(ints,inth[41])C. voidfun(intp,int*s)D. voidfun(intn,inta)(22)下列叙述中,不属于软件需求规格说明书的作用的是A. 便于用户、开发人员进行理解和交流B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据C. 作为确认测试和验收的依据D. 便于开发人员进行需求分析(23)栈通常采用的两种存储结构是A. 线性存储结构和链表存储结构B. 散列方式和索引方式C. 链表存储结构和数组D. 线性存储结构和非线性存储结构(24)若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是#include <stdio.h> main(){char c; int v0=1,v1=0,v2=0; do{switch(c=getchar()){case ′a′:case ′A′: case ′e′:case ′E′: case ′i′:case ′I′: case ′o′:case ′O′: case ′u′:case ′U′:v1+=1; default:v0+=1;v2+=1; } }while(c!=′\n′); printf ("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}A. v0=7,v1=4,v2=7B. v0=8,v1=4,v2=8C. v0=11,v1=4,v2=11D. v0=13,v1=4,v2=12(25)下面函数的功能是将指针t2所指向的线性链表,链接到t1所指向的链表的末端。
计算机等级考试二级C语言笔试模拟题及答案是全国计算机(National Computer Rank Examination,简称NCRE)四个等级中的一个等级,考核计算机根底知识和使用一种高级计算机语言编写程序以及上机调试的根本技能。
那么计算机等级考试二级会怎么考?以下仅供参考!以下各题 A),B),C),D)四个选项,只有一个选项是正确的,请将正确的选项在答题卡相应位置上涂黑。
答在试卷上不得分。
(1) 二进制数101110 转换为等值的八进制数是()。
A.45B.56C.67D.78(2) CPU 是由()组成的。
A.内存储器和控制器B.控制器和运算器C.内存储器和运算器D.内存储器、控制器和运算器(3) DOS 是为IBM PC 系列微型计算机及其兼容机所配置的()磁盘。
A.多用户多任务B.单用户单任务C.分时D.分布式(4) 启动MS-DOS 操作系统后,()已驻留内存。
A.B.C.D.CCCC.EXE(5) 设驱动器B 中软盘上的目录构造如以下图所示。
设当前目录为F2,那么把A 盘根目录下的PROG.BAS 文件复制到B 盘F3 子目录中的命令是()。
A.COPY PROG.BAS B:B.COPY A:PROG.BAS B:C.COPY A:PROG.BAS B:F3D.COPY A:PROG.BAS B:F3(6) 下面四组DOS 命令中,意义完全相同的一组是()。
A.COPY 和DISKCOPYB.P 和DISKPC.DEL 和RDD.RENAME 和REN(7) 防止软盘感染病毒的有效方法是()。
A.不要把软盘和有毒软盘放在一起B.在写保护缺口上贴上胶条C.保持机房清洁D.定期对软盘格式化(8) 双面高密度5 英寸软磁盘的容量是()。
A.360KBB.720KBD.1.44MB(9) 在FOXBASE 中,可以使用的两类变量是()。
A.内存变量和字段变量B.全局变量和部分变量C.字段变量和简单变量D.内存变量和自动变量(10) 建立一个新子目录的DOS 命令是()。
国家二级C语言机试(编译预处理和指针)模拟试卷8(总分52, 做题时间90分钟)1. 选择题1.以下叙述中正确的是SSS_SINGLE_SELA 在C语言中,预处理命令行都以”#”开头B 预处理命令行必须位于C源程序的起始位置C #include必须放在C程序的开头D C语言的预处理不能实现宏定义和条件编译的功能分值: 2答案:A解析:在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。
预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。
预处理命令有宏定义、文件包含和条件编译三类。
#include命令行表示程序中要引用C标准函数库中的标准输入输出函数。
2.有以下程序,程序运行后的输出结果是 #define PT 3.5; #define S(x)PT*x*x; main(){int a=1,b=2; printf("%4.1 f\n",S(a+b));}SSS_SINGLE_SELA 31.5B 7.5C 程序有错无输出结果D 14.0分值: 2答案:C解析:本题考查宏定义。
预处理语句后面不能加分号,因此程序有错。
如果没加分号的话S(a+b)=PT*a+b*a+b=3.5*1+2*1+2=7.5。
3.以下关于宏的叙述中正确的是SSS_SINGLE_SELA 宏定义必须位于源程序中所有语句之前B 宏名必须用大写字母表示C 宏调用比函数调用耗费时间D 宏替换没有数据类型限制分值: 2答案:D解析:本题考查宏替换的规则。
宏替换分为简单的字符替换和带参数的宏替换两类。
使用宏时应注意几点:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查;②为了区别程序中其他的标识符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。
4.有以下程序,程序运行后的输出结果是 #include #define S(x)4*(x)*x+1 void main() {int k=5,j=2; printf("%d\n",S(k+j)); }SSS_SINGLE_SELA 197B 143C 33D 28分值: 2答案:B解析:这道题涉及到带参数的宏的定义和替换这个知识点。
国家二级C语言机试(编译预处理和指针)模拟试卷7(总分:56.00,做题时间:90分钟)一、选择题(总题数:28,分数:56.00)1.有以下程序:#include<stdio.h>void main() void fun(char*c) {char s[81];{while(*c) gets(s);fun(s);puts(s); {if(*c>='a'&&*c<='z')*c=*c-('a'-'A'); } c++: }} 当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是(分数:2.00)A.HELLO BEIJING √B.Hello BeijingC.hello BeijingD.hELLO Beijing解析:解析:子函数fun的功能是把小写字母转换成大写字母,所以程序的输出结果为选项A)。
2.有以下程序#include<stdio.h>void f(int*p,int*q) void f(int*p,int*q);{ main() p==p+1;*q=*q+1; { int m=1,n=2,*r=&m; } f(r,&n);printf("%d,%d",m,n); }程序运行后的输出结果是(分数:2.00)A.2,3B.1,3 √C.1,4D.1,2解析:解析:本题考查函数的调用与指针。
fun()函数的作用是:使指针p指向原来所指变量的下一个变量,使q指针指向的值加1。
主函数中,指针r指向m,调用fun()函数的结果是,使r指向地址位于m后面的变量,使位丁n的地址上的变量(就是n)的值加1,因此,结果为1,3。
3.有以下程序 #include<stdio.h> main() void fun(int*a,int*b) { int x=3,y=5,*p=&x,*q=&y;{ int*c;fun(p,q);printf("%d,%d,",*p,*q);c=a;a=b;b=c;} fun(&x,&y);printf("%d,%d\n",*p,*q);}程序运行后的输出结果是(分数:2.00)A.3,5,5,3B.3,5,3,5 √C.5,3,3,5D.5,3,5,3解析:解析:本题考查函数的调用与指针。
p和q分别为指向x和y的指针,函数fun()的两个形参均为指针型,主要功能为交换两个指针的指向,当调用结束以后,该操作不能返回主函数。
而主函数中,fun(p,q)、fun(&x,&y)的实参均为x与y的地址,因此,两者结果相同,并且两者指针指向的值不能变化。
4.有下列程序:void f(int b[]) {int I;for(i=2;i<6;i++)b[i]*=2;} main() {int a[10]={1,2,3,4,5,6,7,8,9,10},i;f(a);for(i=0;i<10,i++)printf("%d,",a[i]);}程序运行后的输出结果是(分数:2.00)A.1,2,3,4,5,6,7,8,9,10,B.1,2,3,4,10,12,14,16,9,10,C.1,2,6,8,10,12,7,8,9,10,√D.1,2,6,8,10,12,14,16,9,10,解析:解析:函数void f(int b[])的功能是对数组b[]中第2个到第5个元素的值逐个扩大2倍。
所以在main()函数中,f(a)语句的作用是对数组a[10]中从a[2]到a[5]的各个数字乘以2,因而数组a[10]的元素就变成了{1,2,6,8,10,12,7,8,9,10}。
5.有以下程序 #include<stdio.h> int fun(char s[]) main() {int n==0; {char s[10]={'6','1','*','4','*','9','*','0','*'};while(*s<='9'&&*s>='0') printf("%d\n",fun(s));{n=10*n+*s-'0';s++;} } return(n);}程序的运行结果是(分数:2.00)A.61490B.61 √C.9D.5解析:解析:在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。
若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。
所以在主函数中调用fun(s)时,将把字符数组s中的数字组成一个数输出。
因为当指针s指向数组的第3位时,即字符'*',循环条件不成立,循环结束,返回n的值。
所以输出n的值为61。
6.若有以下程序 #include<stdio.h> void sp(int*a){ int b=2; main(){int k=3,*p=&k; a=&b;sp(p); *a=*a*2; printf("%d,%d\n",k,*p); printf("%d,",*a);} }则程序的输出结果是(分数:2.00)A.4,3,4B.4,3,3 √C.6,3,6D.6,6,6解析:解析:主函数中定义指针变量p指向k,调用函数sp(p),将k的地址传递给形参指针a,函数转到sp运行,a指向b的地址,表达式*a=*a*2,相当于b=b*2,得到*a的数据4输出。
函数调用结束,此时a 和b的空间撤销,而对实参k和p的值并没有改变,仍旧是3。
7.若有以下程序 #include<stdio.h> int k=7: void f(int**s){int*t=&k; *s=t:printf("%d,%d,%d,",k,*t,**s);} main(){int i=3,*p=&i,**r=&p;f(r);printf("%d,%d,%d\n",i,*p,**r);}则程序的输出结果是(分数:2.00)A.3,7,7,7,7,7B.7,7,7,3,3,3C.3,3,3,7,7,7D.7,7,7,3,7,7 √解析:解析:本题考查了二级指针,二级指针可以保存一级指针的地址。
主函数中p指向i,r指向p,函数调用后s指向p,在f函数中t指向全局变量k=7,s指向t,同时s保存了实参p的地址,此时p也指向t,输出三个7,流程转到主函数,i的值为3,p以及r的值为7。
8.若有以下程序#include<stdio.h>int*f(int*s,int*t){int*k;if(*s<*t){ k=s;s=t;t=k;} return s;} main(){ int i=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*P,*q,*r);}则程序的输出结果是(分数:2.00)A.3,5,5,3,5B.5,3,5,3,5C.5,3,3,5,5D.3,5,3,5,5 √解析:解析:本题考查了返回值为指针的函数,函数f的主要功能为第一个参数小于第二个参数,那么交换指针的指向,这对于实参指向的数据时没有影响的。
最后返回比较大的元素的地址。
主函数中p指向i,q指向j,调用r=f(p,q),返回q的地址,因此*p=3,*q=5,*r=5。
9.若有以下程序#include<stdio.h>main(){int k=3;void sp(int*a){int b=2;sp(&k);*a=*a*2;printf("%d\n",k); printf("%d,",*a); } a=&b; *a=*a*2; pfintf("%d,",*a);}则程序的输出结果是(分数:2.00)A.6,4,6 √B.6,4,3C.6,12,12D.9,4,9解析:解析:本题考查了指针作为函数的参数,可以接收实参变量的地址,改变实参的值。
主函数调用sp(&k),执行sp函数a指向向k,执行语句*a=*a*2后a指向空间的值k的值为6,改变a的指向以后,此时a指向b,则执行*a=*a*2以后,a指向空间b的值为4。
调用结束返回主函数,输出k的值为6。
10.若有以下程序#include<stdio.h>int k=7,m=5;void f(int**s){int*t=&k;s=&t;*s=&m;printf("%d,%d,%d,",k,*t,**s);} main(){int i=3,*p=&i,**r=&p; f(r); printf("%d,%d,%d\n",i,*P,**r);}则程序的输出结果是(分数:2.00)A.7,5,7,3,3,3,B.7,5,7,3,5,7,C.7,5,5,3,3,3,√D.7,7,5,3,3,3,解析:解析:本题考查二级指针作为函数的参数,可以通过函数调用来改变主函数中一级指针的指向。
主函数中指针变量p指向i,r指向p,调用f函数,形参指针s指向p,流程转到f函数执行,指针变量t指向k,s指向t,此时更改了s的指向,s指向了t,更改了s指向的地址空间内容为m的地址,同时t也指向变量m,因此**s的值为m的值,*t为m的值,k为7。
流程返回到主函数,没有对主函数空间的数据和指向作出更改,因此全部为3。
11.若有以下程序#include<stdio.h>int*f(int*s,int*t){int k;if(*s<*t){ k=*s;*s=*t;*t=k;} return s;} main(){int i=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);}则程序的输出结果是(分数:2.00)A.3,5,5,3,5B.3,5,3,5,5C.5,3,5,3,5 √D.5,3,3,5,5解析:解析:函数f为返回值为指针的函数,主要功能是返回s和t指向空间值大的数据的地址,同时如何s指向空间数据大于t指向空间的数据,那么交换。