[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷19及答案与解析.doc

上传人:bowdiet140 文档编号:497946 上传时间:2018-11-30 格式:DOC 页数:24 大小:60KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷19及答案与解析.doc_第1页
第1页 / 共24页
[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷19及答案与解析.doc_第2页
第2页 / 共24页
[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷19及答案与解析.doc_第3页
第3页 / 共24页
[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷19及答案与解析.doc_第4页
第4页 / 共24页
[计算机类试卷]国家二级C语言机试(C语言程序设计)模拟试卷19及答案与解析.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、国家二级 C语言机试( C语言程序设计)模拟试卷 19及答案与解析 一、选择题 1 以下叙述中正确的是 ( A)在 C语言中,预处理命令行都以 ” ”开头 ( B)预处理命令行必须位于 C源程序的起始位置 ( C) #include必须放在 C程序的开头 ( D) C语言的预处理不能实现宏定义和条件编译的功能 2 有以下程序,程序运行后的输出结果是 #define PT 3 5; #define S(x)PT*x*x; main() int a 1, b 2; printf(“ 4 1f n“, S(a b); ( A) 31 5 ( B) 7 5 ( C)程序有错无输出结果 ( D) 14

2、3 以下关于宏的叙述中正确的是 ( A)宏定义必须位于源程序中所有语句之前 ( B)宏名必须用大写字母表示 ( C)宏调用比函数调用耗费时间 ( D)宏替换没有数据类型限制 4 有以下程序,程序运行后的输出结果是 #include #define S(x)4*(x)*x 1 void main() int k 5,j 2; printf(“ d n“, S(k j); ( A) 197 ( B) 143 ( C) 33 ( D) 28 5 设有宏定义: #define IsDIV(k, n)(k n=1)?1: 0)且变量 m已正确定义并赋值,则宏调用: IsDIV(m, 5)&IsDIV(m

3、, 7)为真时所要表达的是 ( A)判断 m是否能被 5和 7整除 ( B)判断 m被 5或者 7整除是否余 1 ( C)判断 m被 5和 7整除是否都余 1 ( D)判断 m是否能被 5或者 7整除 6 有以下程序,程序运行后的输出结果是 #include #define SUB(a) (a) (a) main() int a 2, b 3, c 5, d; d SUB(a b)*c: printf(“ d n“, d; ( A) 12 ( B) 0 ( C) 10 ( D) -20 7 有以下程序,程序运行后的输出结果是 #include #define f(x)x*x*x main()

4、int a 3, S, t; s f(a 1); t f(a 1); printf(“ d, d n“, s, t); ( A) 10, 10 ( B) 10, 64 ( C) 64, 10 ( D) 64, 64 8 有下列程序,程序的运行结果是 #include #deftne N 5 #define M N 1 #define f(x)(x*M) main() int i1, i2; i1 f(2); i2 f(1 1); printf(“ d d n“, i1, i2); ( A) 12 7 ( B) 12 12 ( C) 11 11 ( D) 11 7 9 以下叙述中错误的是 ( A

5、)预处理命令行的最后不能以分号表示结束 ( B) C程序对预处理命令行的处理是在程序执行的过程中 进行的 ( C) #define MAX是合法的宏定义命令行 ( D)在程序中凡是以 “ ”开始的语句行都是预处理命令行 10 若程序中有宏定义行: #define N 100则以下叙述中正确的是 ( A)宏定义行中定义了标识符 N的值为整数 100 ( B)上述宏定义行实现将 100赋给标示符 N ( C)在运行时用 100替换标识符 N ( D)在编译程序对 C源程序进行预处理时用 100替换标识符 N 11 若有以下程序,则程序的输出结果是 #define S(x)x*x #define T

6、(x)S(x)*S(x) main() int k 5, j 2; printf(“ d, d n“, S(k j), T(k j); ( A) 17, 37 ( B) 49, 2401 ( C) 17, 289 ( D) 49, 289 12 有以下程序,程序运行后的输出结果是 #include #define N 2 #deftne M N 1 #define NUM(M 1)*M 2 main()printf(“ d n“, NUM); ) ( A) 4 ( B) 8 ( C) 9 ( D) 6 13 有以下程序,程序运行 后的输出结果是 #include #define SUB(X,

7、Y)(X 1)*Y main() int a 3, b 4; printf(“ d n“, SUB(a, b ); ( A) 20 ( B) 12 ( C) 16 ( D) 25 14 下面选项中关于编译预处理的叙述正确的是 ( A)凡是以号开头的行,都被称为编译预处理命令行 ( B)预处理命令行必须使用分号结尾 ( C)预处理命令行不能出现在程序的最后一行 ( D)预处理命令行的作用域是到最近的函数结束处 15 有以下程序,程序的输出结果是 #include #define SQR(X)X*X main() int a 10, k 2, m 1; a SQR(k m) SQR(k m); p

8、rintf(“ d n“, a); ( A) 0 ( B) 1 ( C) 9 ( D) 10 16 以下叙述中正确的是 ( A)在包含文件中,不得再包含其他文件 ( B) #include命令行不能出现在程序文件的中间 ( C)在一个程序中,允许使用任意数量的 #include命令行 ( D)虽然包含文件被修改了, 包含该文件的源程序也可以不重新进行编译和连接 17 有以下程序,程序的运行结果是 #include #include int fun(int n) int *p; P (int*)malloc(sizeof(int); *p n; return *p; main() int a;

9、a fun(10); printf(“ d n“, a fun(10); ( A) 10 ( B) 20 ( C) 0 ( D)出错 18 有以下程序,程序运行后 的输出结果是 #include #include main() int *a, *b, *c; a b c (int*)malloc(sizeof(int); *a 1; *b 2, *c 3; a b; printf(“ d, d, d n“, *a, *b, *c); ( A) 2, 2, 3 ( B) 3, 3, 3 ( C) 1, 2, 3 ( D) 1, 1, 3 19 有以下程序,程序运行后的输出结果是 void fun

10、(int *p1, int *p2, int *S) s (int*)malloc(sizeof(int); *S *p1 *(p2 ); main() int a2 1, 2, b2 10, 20, *s a; fun(a, b, s); printf(“ d n“, *s); ( A) 10 ( B) 11 ( C) 2 ( D) 1 20 有以下程序段 int *p; p _malloc(sizeof(int);若要求使 P指向一个int型的动态存储单元,在横线处应填入的是 ( A) (int*) ( B) int ( C) int* ( D) (*int) 21 有以下程序,程序的输出

11、结果是 void fun(double *p1, double *p2, double *s) s (double*)calloc(1, sizeof(double); *s *p1 *(p2 1); main() double a21 1, 2 2, b2 10 0, 20 0), *s a; fun(a, b, S); printf(“ 5 2f n“, *s); ( A) 1 10 ( B) 11 10 ( C) 12 10 ( D) 21 10 22 设有以下函数: void fun(int n,char*s) 则下面对函数指针的定义和赋值均正确的是 ( A) void*Pf(); p

12、f fun; ( B) void(*pf)(int, char*); pf fun; ( C) void*Pf(); *pf fun; ( D) void(*pf)(int, char); pf &fun; 23 设有定义语句 int(*f)(int);则以下叙述正确的是 ( A) f是基类型为 int的指针变量 ( B) f是指向 int类型一维数组的指针变量 ( C) f是指向函数的指针变量,该函数具有一个 int类型的形参 ( D) f是函数名,该函数的返回值是基类型为 int类型的地址 24 以下叙述中正确的是 ( A)指针变量只能通过求地址运算符 (&)来获得地址值 ( B)语句 p

13、 NULL;与 p 0;是等价的语句 ( C) int*p1; int*p2; int*p3;都是合法的定义指针变量的语句 ( D)语句 p NULL;执行后,指针 P指向地址为 0的存储单元 25 以下叙述中正确的是 ( A)函数的类型不能是指针类型 ( B)函数的形参类型不能是指针类型 ( C)基类型不同的指针变量可以相互混用 ( D)设有指针变量为 double *p,则 p 1将指针 P移动 8个字节 26 设有某函数的说明为 int*func(int a10, int n);则下列叙述中,正确的是 ( A)说明中的 a10写成 a或 *a效果完全一样 ( B)形参 a对应的实参只能是

14、数组名 ( C) func的函数体中不能对 a进行移动指针 (如 a )的操作 ( D)只有指向 10个整数内存单元的指针,才能作为实参传给 a 27 设有定义: int x 0, *p;紧接着的赋值语句正确的是 ( A) *p NULL; ( B) p NULL; ( C) p x; ( D) *p x; 28 以下叙述中错误的是 ( A)函数可以返回地址值 ( B)改变函数形参的值,不会改变对应实参的值 ( C)当在程序的开头包含头文件 stdio h时,可以给指针变量赋 NULL ( D)可以给指针变量赋一个整数作为地址值 29 设已有定义: float x:则以下对指针变量 P进行定义

15、且赋初值的语句中正确的是 ( A) int *p (float)x; ( B) float *p &x; ( C) float p &x; ( D) float *p 1024; 30 有以下程序,程序运行后的输出结果是 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, 2 ( B) 1, 2, 2, 1 ( C) 2, 1, 2, 1 ( D) 2, 1, 1, 2 31 下面选项中的程序段,没有编译错误的是 ( A) char*

16、sp, s10; sp “Hello“; ( B) char* sp, s10; s “Hello“; ( C) char str110 “computer“, str210; str2 strl; ( D) char mark; mark “PROGRAM“; 32 设有定义 double a10, *s a;以下能够代表数组元素 a3的是 ( A) (*s)3 ( B) *s3 ( C) *s 3 ( D) *(s 3) 33 有以下程序,执行后的输出结果是 main() int a 1, b 3, c 5; int *p1 &a, *p2 &b, *P &c; *P *p1*(*p2);

17、 printf(“ d n“, c); ( A) 2 ( B) 3 ( C) 1 ( D) 4 34 若有定义语句: int a23, *p3;则以下语句中正确的是 ( A) p0 a12; ( B) p0 a; ( C) p a; ( D) p1 a; 35 若有定义语句: int year 2009, *p &year;以下不能使变量 year中的值增至2010的语句是 ( A) (*p); ( B) (*p); ( C) *p; ( D) *p 1; 36 有以下程序 main() int a5 2, 4, 6, 8, 10, *p, *k; P a; k p; printf(“ d“,

18、 *(p ); printf(“ d n“, *k); 程序运行后的输出结果是 ( A) 4 4 ( B) 2 4 ( C) 2 2 ( D) 4 6 37 以下叙述中正确的是 ( A)如果 P是指针变量, *p表示变量 P的地址值 ( B)如果 P是指针变量,则 &p是不合法的表达式 ( C)在对指针进行加、减算术运算时,数字 1表示 1个存储单元的长度 ( D)如果 P是指针变量,则 *p 1和 *(p 1)的效果是一样的 38 有以下程序 (注:字符 a的 ASCII码值为 97) main() char *S “abc“; do printf(“ d“, *s 10); s; )whi

19、le(*S); 程序运行后的输出结果是 ( A) abe ( B) 7890 ( C) 979899 ( D) 789 39 设有定义: char *c;以下选项中能够使 c正确指向一个字符串的是 ( A) char str “string“; c str; ( B) scanf(“ s“, c); ( C) c getchar(); ( D) *c “string“; 国家二级 C语言机试( C语言程序设计)模拟试卷 19答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 在 C语言中,凡是以 “ ”号开头的行,都称为 “编译预处理 ”命令行。预处理命令可以放在程序中的任何位置,其有

20、效范围是从定义开始到文件结束。预处理命令有宏定义、文件包含和条件编译三类。 include命令行表示程序中要引用 C标准函数库中的标准输入输出函数。 【知识模块】 C语言程序设计 2 【正确答案】 C 【试题解析】 本题考查宏定义。预处理语句后面不能加分号,因此程序有错。如果没加分号的话 S(a b) PT*a b*a b 3 5*1 2*1 2 7 5。 【知识模块】 C语言程序设计 3 【正确答案】 D 【试题解析】 本题考查宏替换的规则。宏替换分为简单的字符替换和带参数的宏替换两类。使用宏时应注意以下几点: 宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查; 为了区别程序中其他的标识

21、符,宏名的定义通常用大写字母,但不是必须用大写; 双引号中出现的宏名不替换; 使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。 【知识模块】 C语言程序设计 4 【正确答案】 B 【试题解析】 这道题涉及到带参数的宏的定义和替换这个知识点。在程序中定义了带参数的宏 S(x),当在主函数中用参数 k i调用宏 S时,根据宏替换的原则,则 S(k j) S(5 2) 4*7*5 2 1 143。 【知识模块】 C语言程序设计 5 【正确答案】 C 【试题解析】 本题考查宏定义和三目运算符。三目运算符的格式为: test?语句1:语句 2其中, test可以是任 何 Boolean表达式。语句

22、 1,当 test是 true时执行该语句,可以是复合语句;语句 2,当 test是 false时执行该语句,可以是复合语句。 isDIV(k, n)要表达的是当 k除 n的余数是 1时表达式的值为 1,否则为 0,所以题中要表达的是 m被 5 和 7整除是否都余 1。 【知识模块】 C语言程序设计 6 【正确答案】 D 【试题解析】 本题主要考查的是宏替换,在程序中执行 d sub(a b)*c这条语句时,首先要进行宏替换,依据宏 SUB(a)的定义可知,上面这条语句替换为 d(a b) (a b) *c,因为乘法的优先级比减法的优先级高,所以先进行乘法运算,即 d 5 5*5 20。 【知

23、识模块】 C语言程序设计 7 【正确答案】 B 【试题解析】 根据题目中宏 f(x)的定义, f(a 1) a 1*a 1*a 1 a a a 1 10,而 f(a 1) (a 1)*(a 1)*(a 1) 4*4*4 64。 【知识模块】 C语言程序设计 8 【正确答案】 D 【试题解析】 在本题中,定义了 3个宏定义语句,分别是: #defineN 5、 #define M N 5和 #define f(x)(x*M),所以根据 C语言的宏替换规则,我们可知, f(2)2*N 1 2*5 1 11, f(1 1) 1 1*N 1 1 1*5 1 7。 【知识模块】 C语言程序设计 9 【正

24、确答案】 B 【试题解析】 预处理命令行是以 “ ”开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为: define标识符字符串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。 【知识模块】 C语言程序设计 10 【正确答案】 D 【试题解析】 在 C语言中,凡是以 “ ”号开头的行,都称为 “编译预处理 ”。其含义是在 C编译程序对 C源程序进行编译前,由编译预处理程序对这些编译预处理命令进行处理的过程。由 #define定义的宏就是编译预处理命令。 C程序在进行编译之前,都要先对程序中所有出现的 “宏名 ”,都用

25、宏定义中的替换文本进行替换。 【知识模块】 C语言程序设计 11 【正确答案】 A 【试题解析】 本题考查了宏替换,宏替换就是简单的字符替换,不会进行语法错误检查也不会进行运算。 S(k j)宏展开 以后为 k j*k j,值为 17, T(k j)宏展开以后为 k j*k j*k j*k j,值为 37。 【知识模块】 C语言程序设计 12 【正确答案】 B 【试题解析】 宏展开以后 NUM为 (2 1 1)*2 1 2,计算以后值为 8。注意在进行宏展开的时候,千万不要试图计算,展开以后再进行计算。 【知识模块】 C语言程序设计 13 【正确答案】 C 【试题解析】 宏展开的结果 (a 1

26、)*b,后缀自加表达式参加运算,先用a和 b的初值得到表达式的值,进行计算,然后 a和 b在自加 。因此计算结果为16。 【知识模块】 C语言程序设计 14 【正确答案】 A 【试题解析】 在 C语言中,凡是以 “ ”号开头的行,都称为编译预处理命令行。这些预处理命令组成的预处理命令行必须在一行的开头以 “撑 ”号开始,每行的末尾不能用 “; ”号结束,以区别于 C语句、定义和说明语句。根据需要,命令行可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾。 【知识模块】 C语言程序设计 15 【正确答案】 B 【试题解析】 SQR(k m)宏展开以后为 k m*k m,值为 5,表

27、达式 aSQR(k m) SQR(k m)为 a a (5 5),表达式值为 1。 【知识模块】 C语言程序设计 16 【正确答案】 C 【试题解析】 #include文件包含命令,使用时应注意以下 5个规则: 包含文件的 #include命令行通常应书写在所用源程序文件的开头,故有时也把包含文件称作 “头文件 ”。头文件名可以由用户指定,其后缀不一定用 “.h”。 包含文件中,一般包含有一些公用的 #define命令行、外部说明或对 (库 )函数的原型说明。 当包含文件修改后,对包含该文件的源程序 必须重新进行编译连接。 在一个程序中,允许有任意多个 #include命令行。 在包含文件中还

28、可以包含其他文件。 【知识模块】 C语言程序设计 17 【正确答案】 B 【试题解析】 函数 fun(int n)的功能是在内存中每次动态的申请一个整型变量的存储空间,把整型变量 n的值存入这个存储空间中。所以当在主函数中执行输出语句时, a fun(10)的值等于 20。 【知识模块】 C语言程序设计 18 【正确答案】 B 【试题解析】 a b c (int*)malloc(sizeof(int);含义为申请了一个整型的存储空间,让指针 a,b,c分别指向它, *a 1; *b 2; *c 3;语句的含义为所申请的整型存储空间的内容, *c 3最后执行导致存储空间的内容为 3。 a b的含

29、义让指针 a也指向指针 b所指向的存储空间, a,b,c都指向整型的存储空间,里边的内容为 3。 【知识模块】 C语言程序设计 19 【正确答案】 D 【试题解析】 主函数中定义指针 s指向数组 a,调用 fun函数,首先是实参传给形参,因此 p1指向 a, p2指向 b, s指向 a,即 *s的值为 1。流程到调用函数 fun 执行,首先更改 s的指向为新分空间的首地址,表达式 *s *p1 *(p2 ),取 p1指向数据位 l,加上 p2指向数据 10, p2后移,存放到 s指向的空间中 11.流程结束,形参 s和 p1, p2撤销,存入 s指向空间的数据丢失,主函数输出 s指向数据仍然是

30、 1。 【知识模块】 C语言程序设计 20 【正确答案】 A 【试题解析】 ANSIC标准规定 malloc函数返回值的类型为 void*。使用形式为: maUoc(size),其中 size的类型为 unsigned int。 malloc函数用来分配 size个字节 的存储区,返回一个指向存储区首地址的基类型为 void的地址。若没有足够的内存单元供分配,函数返回空 (NULL)。可以通过强制类型转换将返回值转换为需要类型的地址。 【知识模块】 C语言程序设计 21 【正确答案】 A 【试题解析】 ANSIC标准规定 calloc函数返回值的类型为 void*。具体使用格式为: callo

31、c(n,size)。 该函数用来给 n个同一类型的数据项分配连续的存储空间,每个数据项的长度为size个字节。若分配成功,函数返回存储空间的首地址;否则返回空。通过调用calloc函数所分配的存储单元,系统自动置初值 0。 主函数中定义数组 a, b,以及指针 s指向数组 a,调用 fun函数,实参 a和 b,以及 s的值传递给相对应形参 p1, p2,以及 s,在 fun函数中更改 s的指向,以及指向的数据,但是函数调用结束以后,形参空间撤销,这项改变对于实参没有影响,因此实参 s指向值不变,仍然为 1 1。 【知识模块】 C语言程序设计 22 【正确答案】 B 【试题解析】 函数指针的定义

32、形式是:数据类型标识符 (*指针变量名 )();void(*Pf)()定义了一个没有返回值的函数指针 pf,在给函 数指针变量赋值时,只需给出函数名而不必给出参数。所以给 pf给赋值时,把函数名 fun赋给 pf即可。 【知识模块】 C语言程序设计 23 【正确答案】 C 【试题解析】 定义语句 int(*f)(int)中 f是指向函数的指针变量,该函数中也只有一个 int型的形参。 【知识模块】 C语言程序设计 24 【正确答案】 C 【试题解析】 指针变量定义形式为:类型 *指针变量名; 其中 *号的个数决定了几级指针,指针变量赋地址值的方式有 3种方式: 通过求地址运算符 ( )获得地址

33、值; 通 过指针变量获得地址值; 通过标准函数获得地址值。 另外 NULL是在 stdio h头文件中定义的预定义符。 NULL的代码值为 0。可以给指针变量赋 NULL值。例如 p NULL;赋值语句,称 p为空指针。这条语句等价于 p 0;或 p 0;这时,指针 p并不是指向地址为 0的存储单元,而是具有一个确定的值 “空 ”。 【知识模块】 C语言程序设计 25 【正确答案】 D 【试题解析】 在对指针进行加、减算术运算时,数字 1表示 1个存储单元的长度,而 double类型数据在内存中占 8个字节,因此移动一次移 动 8个字节。其他三个都不正确。 【知识模块】 C语言程序设计 26

34、【正确答案】 A 【试题解析】 函数 func为返回值为指针的函数,有两个形参,形参数组 a为指针变量,保存实参数组的首地址,其元素个数由实参数组决定,因此说明中的a10写成 a或 *a效果完全一样。 【知识模块】 C语言程序设计 27 【正确答案】 B 【试题解析】 定义指针变量时,必须将指针变量初始化为 NULL(为空 ),否则,如果不赋给它地址,系统会随机给它分配一个地址。 【知识模块】 C语言程序设 计 28 【正确答案】 D 【试题解析】 指针变量的值只能是存储单元地址,而不能是一个整数,选项 D的描述是错误,为待选答案。函数可以返回内存空间的地址,同时函数形参和实参分别占用不同的内

35、存单元,改变形参的值不会改变对应实参的值,在头文件stdio h中, NULL,被定义为 void型的指针。 【知识模块】 C语言程序设计 29 【正确答案】 B 【试题解析】 定义指针变量的一般形式为:类型名 *指针变量名 1, *指针变量名 2, ;。对一个指针变量赋值要通过求地址运算符 ( )获得变量 的地址值,然后把此地址值赋给指针变量。因而在选项 A的表达式中,赋值号的左边表示定义了指针变量 p,而右边表示求变量 x的地址值。 【知识模块】 C语言程序设计 30 【正确答案】 B 【试题解析】 在主函数定义了 3个整数指针变量 p,q,r,并且使 p指向 m, q指向 n,再执行 r

36、 p; p q; q r;这三条语句,使 q指向 m, p指向 n,再输出变量 m, n, *p, *q时,它们值分别为 1, 2, 2, 1。 【知识模块】 C语言程序设计 31 【正确答案】 A 【试题解析】 选项 B中数组名为常量,不 能赋值,选项 C字符数组之间无法完成赋值操作,选项 D和选项 B相同,无法对数组进行赋值。 【知识模块】 C语言程序设计 32 【正确答案】 D 【试题解析】 语句 *s a,使用指针变量 s指向一维数组 a的首地址,所以 *(s 3)表示的是引用数组 a3。 【知识模块】 C语言程序设计 33 【正确答案】 B 【试题解析】 程序使整型指针 p1、 p2

37、、 p3指向 a、 b、 c值所存放的地址空间。然后再将指针变量 *p1、 *p2中的值的乘积赋给指针变量 *p,即赋给变量 c,输出 c的值 30 【 知识模块】 C语言程序设计 34 【正确答案】 A 【试题解析】 定义语句 int a23,。 p3;定义了整型二维数组 a23和指针数组 p3。在 C语言中,二维数组名也是一个存放地址常量的指针,其值为二维数组中第一行的地址。所以选项 A中,把整型数组 a0的指针赋给 p0。 【知识模块】 C语言程序设计 35 【正确答案】 C 【试题解析】 由于自加运算符的运算级高于间接运算 *的运算级,所以选项A的表达式 *p不能使变量 year中的值

38、增至 2010。 【知识模块】 C语言程序设计 36 【正确答案】 B 【试题解析】 主函数中指针变量 p指向数组 a中下标为 0的元素, k指向 p,那么 *(p )的值为 2, p指向数组中下标为 1的元素, k指向 p,所以 *k的值为 4。 【知识模块】 C语言程序设计 37 【正确答案】 C 【试题解析】 移动指针是对指针变量加上或减去一个整数,或通过赋值运算,使指针变量指向相邻的存储单元。因此,只有当指针指向一串连续的存储单元时,指针的移动才有意义。当指针指向一串连续的存储单元时,可以对指针变量进行加上或减去一 个整数的运算,也可以对指向同一串连续存储单元的两个指针进行相减的运算。

39、除此之外,不可以对指针进行任何其他的算术运算。 C语言提供了一个间接访问运算符 (*),又称间址运算符,它是一个单目运算符,优先级比较高,高于普通的算术运算符,。但是低于 ()运算符,因此 *p 1和 *(p 1)的含义是不一样。当指针变量中存放了一个确切的地址值时,就可以用 “间接访问运算符 ”通过指针来引用该地址的存储单元。 【知识模块】 C语言程序设计 38 【正确答案】 D 【试题解析】 因为小写字符 a,b,c的 ASCII的值分 别为 97, 98, 99,而在 do while循环语句中,每次对字符的 ASCII的值取余数并输出,第一次循环输出 7,第二次循环输出 8,第三次循环输出 9。 【知识模块】 C语言程序设计 39 【正确答案】 A 【试题解析】 在题目的题干中定义了字符指针变量 c,在选项 A中,首先定义字符数组 str,然后再把字符数组 str的首地址赋给字符指针变量 c。所以选项 A是正确的。在选项 D中,如果在定义字符指针 c时,同时给 c赋初值时,这样的表达式是正确的。而本题不是在定义指针 c时,同时给 c赋初值。 【知识模块 】 C语言程序设计

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1