ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:55.50KB ,
资源ID:498876      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-498876.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级C语言机试(选择题)模拟试卷69及答案与解析.doc)为本站会员(twoload295)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级C语言机试(选择题)模拟试卷69及答案与解析.doc

1、国家二级 C语言机试(选择题)模拟试卷 69及答案与解析 一、选择题 1 有以下程序: #include void f(int*P, int*q); main( ) int m=1, n=2, *r=&m; f(r, &n); printf(“ d, d“, m, n); void f(int*P, int*q) P=P+1; *q=*q+1: 程序运行后的输出结果是 ( )。 ( A) 2, 3 ( B) 1, 3 ( C) 1, 4 ( D) 1, 2 2 设已有定义: float x;,则以下对指针变量 P进行定义且赋初值的语句中正确的是 ( )。 ( A) int *P=(float)

2、x; ( B) float *P=&x; ( C) float P=&x; ( D) float *P=1024; 3 若有定义语句: double a, *P=&a; 以下叙述中错误的是 ( )。 ( A)定义语句中的 *号是一个间址运算符 ( B)定义语句中的 *号是一个说明符 ( C)定义语句 中的 P只能存放 double类型变量的地址 ( D)定义语句中, *P=&a把变量 a的地址作为初值赋给指针变量 P 4 有以下程序: #include main( ) int a=1, b=3, c=5; int *p1=&a, *p2=&b, *P=&c; *P=*p1*(*p2); pri

3、ntf(“ d n“, c); 执行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 5 以下叙 述中正确的是 ( )。 ( A) int*p1; int*p2; int*p3;都是合法的定义指针变量的语句 ( B)指针变量只能通过求地址运算符 (&)来获得地址值 ( C)语句 P=NULL;与 P= 0;是等价的语句 ( D)语句 P=NULL;执行后,指针 P指向地址为 0的存储单元 6 以下叙述中正确的是 ( )。 ( A)即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同 ( B)如果企图通过一个空指针来访问一个存储单元,将会得到一

4、个出错信息 ( C)设变量 p是 个指针变量,则 语句 p=0;是非法的,应该使用 p=NULL ( D)指针变量之间不能用关系运算符进行比较 7 有以下程序: #include main( ) int n, *p=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) scartf(“ d“, &p

5、) ( D) printf(“ d n“, P); 8 若有定义语句: double x, y, *px, *Py;执行了 px= x; Py=&y;之后,正确的输入语句是 ( )。 ( A) scanf(“ If le“, px, PY); ( B) seanf(“ f f“ t&x, &y); ( C) scanf(“ f f“, x, y); ( D) scanf(“ If If“, x, y); 9 以下程序段完全正确的是 ( )。 ( A) int *p; seanf(“ d“, &p); ( B) int *p; scanf(“ d“, P); ( C) int k, *P=&k;

6、 scanf(“ d“, P); ( D) int k, *p; *P=&k; scanf(“ d“, P); 10 若有定义语句: int a23, *P3; 则以下语句中正确的是 ( )。 ( A) P=a; ( B) p0=a; ( C) p0=&a12; ( D) p1=&a; 11 若有以下程序: #include int *f(int *s, int *t) int *k; if(*s *t) k=s; s=t; t=k; retum s; main( ) int i=3, j=5, *P=&i, *q=&j, *r; r=f(P, q); printf(“ d, d, d, d,

7、 d n“, i, j, *P, *q, *r); 则程序的输出结果是 ( )。 ( A) 3, 5, 5, 3, 5 ( B) 3, 5, 3, 5, 5 ( C) 5, 3, 5, 3, 5 ( D) 5, 3, 3, 5, 5 12 有以下程序: #include inelude int fun(int n) int *P; p ram=(int*)malloe(sizeof(int); *p=n; return *p; main( ) int a; a=fun(10); printf(“ d n“, a+fun(10); 程序的运行结果是 ( )。 ( A) 0 ( B) 10 ( C

8、) 20 ( D)出错 13 有以下程序: include void fun(int a, int n) int i, t; for(i=0; i #defilie N 4 void fun(int aN, int b) int i; for(i=0; i #inelude void fun(int*p1, int*p2, int*s) s=(int*)malloc(sizeof(int); *s=*p1+*(p2+); main( ) int at2=1, 2, b2=10, 20, *s=a; fun(a, b, s); printf(“ d n“, *s); 程序运行后的输出结果是 (

9、)。 ( A) 11 ( B) 10 ( C) 1 ( D) 2 16 有以下程序: #include #include main( ) char strzo=“One*World“, “One*Dream!“, *P=str1; printf(“ d, “, strlen(P); printf(“ s n“, P); 程序运行后的输出结果是 ( )。 ( A) 10, One*Dream! ( B) 9, One*Dream! ( C) 9, One*Wodd ( D) 10, One*World 17 若有定义: int w35; 则以下不能正确表示该数组元素的表达式是 ( )。 ( A)

10、 *(&w00+1) ( B) *(*w+3) ( C) *(*(w+1) ( D) *(w+1)4 18 有以下程序: #include void fun(char *p) +P; printf(“ s n“, *p); main( ) char*a=“Morning“, “Afternoon“, “Evening“, “Night“; fun(a); 程序的运行结果是 ( )。 ( A) Afternoon ( B) fternoon ( C) Morning ( D) orning 19 有以下程序,程序中库函数 islower(ch)用以判断 ch中的字母是否为小写字母: #inclu

11、de #include void fun(char*p) int i=0; while(pi) if(Pi=&islower(pi-1) pi-1=Pi-1-a+A; i+; main( ) char sl100=“ab cd EFG!“; fun(s1); printf(“ s n“, s1); 程序运行后的输出结果是 ( )。 ( A) ab cd EFg! ( B) Ab Cd EFg! ( C) ab cd EFG! ( D) aB eD EFG! 20 有以下程序: #include void fun(char *p) int i; for(i=0; i 4; i+)printf(“

12、 s“, Pi); main( ) char*s6=“ABCD“, “EFGH“, “IJKL“, “MNOP“, “QRST“, “UVWX“; fun(s); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) ABCDEFGHIJKL ( B) ABCD ( C) AEIM ( D) ABCDEFGHIJKLMNOP 21 下列语句组中,正确的是 ( )。 ( A) char*s; s=“Olympic“; ( B) char s7; s=“Olympic“; ( C) char*s; s=“Olympic“; ( D) char s 7; s=“Olympic“;

13、22 有以下程序 (注:字符 a的 ASCII码值为 97): #include main() char *s=“abc“; do pfintf(“ d“, *s 10); +8; while(*s); 程序运行后的输出结果是 ( )。 ( A) 789 ( B) abe ( C) 7890 ( D) 979899 23 设有定义: char*c; 以下选项中能够使 c正确指向一个字符串的是 ( )。 ( A) char six=“string“; c=str; ( B) scanf(“ s“, c); ( C) c=getchar( ); ( D) *c=“string“; 24 设有定义语

14、句: int(*f)(int); 则以下叙述正确的是 ( )。 ( A) f是基类型为 int的指针变量 ( B) f是指向函数的指针变量,该函数具有一个 int类型的形参 ( C) f是指向 int类型一维数组的指针变量 ( D) f是函数名,该函数的返回值是基类型为 int类型的地址 25 有以下程序: #include int add(int a, int b)return(a+b); main() int k, (*f)(), a=5, b=10; f=add; 则以下函数调用语句错误的是 ( )。 ( A) k=f(a, b); ( B) k=add(a, b); ( C) k=(*

15、f)(a, b); ( D) k=*f(a, b); 26 有以下程序: #include include main( ) int *a, *b, *c; a=b=c=(in*)malloc(sizeof(int); *a=1; *b=2, *c=3; a=b; pfintf(“ d, d, d n“, *a, *b, *c); 程序运行后的输出结果是 ( )。 ( A) 1, l, 3 ( B) 2, 2, 3 ( C) 1, 2, 3 ( D) 3, 3, 3 27 以下语句中存在语法错误的是 ( )。 ( A) char ss620; 881=“right?“; ( B) char ss

16、()20=“right?“; ( C) char*ss6; 881=“right“; ( D) char*ss()=“right?“; 28 若有以下程序: inchde int k=7; void f(int *s) int *t=&k; *8=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); 则程序的输出结果是 ( )。 ( A) 3, 3, 3, 7, 7, 7 ( B) 3, 7, 7, 7, 7, 7 ( C) 7, 7, 7

17、, 3, 3, 3 ( D) 7, 7, 7, 3, 7, 7 29 若有以下程序: #include int k=7, m=5; void f(int *s) int *t=&k; 8=&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); 则程序的输出结果是 ( )。 ( A) 7, 5, 7, 3, 5, 7, ( B) 7, 5, 7, 3, 3, 3, ( C) 7, 5, 5, 3, 3, 3, ( D) 7,

18、7, 5, 3, 3, 3, 国家二级 C语言机试(选择题)模拟试卷 69答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 在 f(int*p, int*q)函数中,执行 p=p+1是将 p所对应的地址加 1,而 *q=*q+1是将 q所指向的 (n的地址所对应的 )值加 1,所以 m所对应的值没有变,而 n的值则为 3。因此 B选项正确。 2 【正确答案】 B 【试题解析】 指针是用来存放地址的变量, 用 (类型名 *指针变量名 )的形式定义。赋值时应将某个变量地址即 x赋给指针变量,所以选择 B。 3 【正确答案】 A 【试题解析】 在变量定义 double a, *p=&a;中

19、, *号是一个指针运算符,而非间址运算符,所以 A错误。 4 【正确答案】 C 【试题解析】 该程序中 int*p1=&a, *p2= b, *p= c;定义了三个指针变量,并赋值,即使 p1指向 a; p2指向 b; p指向 c。 *p=*p1*(*p2);该语句是给 p所指的存储单元 c赋值,就是 p1所指的存储单元的值,即 a的值,与 p2所指的存 储单元 (b)的值相乘,也就是 c=a*b,等价于 c=1*3=3;因此 C选项正确。 5 【正确答案】 A 【试题解析】 B选项描述不正确,指针变量可以通过求地址运算符 (&)来获得地址值,也可以通过指针变量获得地址值,还可以通过标准函数获

20、得地址值; C选项中, p=NULL;和 p=0;或 p= 0;等价; D选项中,语句 p=NULL;执行后,指针 p并不是指向地址为 0的存储单元,而是具有一个确定的值一 “空 ”。因此 A选项正确。 6 【正确答案】 B 【试题解析】 A选项描述不正确,指针变量的赋值只能赋 予地址,决不能赋予任何其它数据,否则将引起错误; C选项中, p=NULL;和 p=0;是等价的; D选项中,指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的关系。因此 B选项正确。 7 【正确答案】 A 【试题解析】 选项 B的正确写法应为 p=&n;选项 C的正确写法应为 scanf(“d“, p)

21、;选项 D的正确写法应为, printf(“ d n“, *p)。 8 【正确答案】 A 【试题解析】 因为 x, y都是 double型数据,所以输入的格式字符应为 lf,所以 B与 C错误。 D选 项中 scanf(“ lf lf“, x, y);应为 scanf(“ lf lf“, x,&y)。 9 【正确答案】 C 【试题解析】 A选项中错在没有对指针进行初始化,是无效指针,并且在scanf(“ d“, p)中无需再进行取地址操作; B选项中没有对指针进行初始化,是无效指针; D选项中语句 *p= k;的左端 * p是指针所指内存空阔的值, k是地址,应为 p=&k。因此 C选项正确。

22、 10 【正确答案】 C 【试题解析】 A选项错误,因为 p是指向一个指针数组,作为数组名,不能指向别的地方。 B选项 错误,因为 p0是一个 int指针,也就是 int*;而 a是一个指向指针的指针 int*。 C选项正确,因为 p0是一个 int*, a12是 int, &a12是int*,类型吻合。 D选项错误,因为 a作为数组名,不能取其地址。即使能取,p1是 int*, &a是 int*,类型不对。因此 C选项正确。 11 【正确答案】 B 【试题解析】 在主函数中分别给整型变量 i、 j和指针型变量 p、 q赋初值,并声明指针变量 r;调用 f函数,并将实参变量 p和 q的值传递给

23、形参变量 s和 t,而且 f函数是指针型函数 ,即函数的返回值是一个地址。在 f函数中,如果条件成立。则将指针变量 s和 t互换,并且将指针 s的地址返回主函数。最后输出 i, j,*p, *q, *r的值,即 3, 5, 3, 5, 5。因此 B选项正确。 12 【正确答案】 C 【试题解析】 malloc(sizeof(int)的作用是开辟一个长度为 sizeof(int)的存储空间,并通过强制类型转换 (int*)将此存储空间的地址赋给一个整型的指针变量 p,然后执行语句 *p=n,使得 *p的值为 10,并通过 return返回此值,即 a的值为10。最后在主函数中通过 printf(

24、)函数输出 a+fun(10)=10+10=20。 13 【正确答案】 A 【试题解析】 本题中的函数 fun()的功能是将数组 k中前 5个元素倒序,因此返回后数组 k中的元素排列是 5, 4, 3, 2, 1, 6, 7, 8, 9, 10。最后打印输出 k2到 k7元素的值,即 321678,故选择 A选项。 14 【正确答案】 A 【试题解析】 本题中由 fun函数可知, b0=a00-a03=1-4=-3, b1=a1 1-a12=6-7=-1, b22-a21=1-10=1, b3=a33-a31=16-13=3。因此主函数中打印 y数组元素的值为 A选项。 15 【正确答案】 C

25、 【试题解析】 本题考查数组名作为函数参数。执行 fun函数后, s的值并没有发生变化,仍然是指向 a,所以输出结果为 1,故选项 C正确。 16 【正确答案】 A 【试题解析】 p是指向二维字符数组第二行 “One*Dream!”的数组指针,所以长度是 10,打印输出的也是该字符串。 17 【正确答案】 D 【试题解析】 A选项中的 “*(&w00+1)”表示 w01; B选项中的 “*(*w+3)”表示 w03; C选项中的 “*(*(w+1)”表示 w01;而 D选项中的 “*(w+1)4”的正确写法是 “(*w+1)4”,表示 w14,因此选择 D选项。 18 【正确答案】 A 【试题

26、解析】 本题主函数中定义了一个指针数组 a,可以将它看成一个以字符指针为元素的一维数组。和一般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针,所以数组名 a可以用做函数 fun()的实参。在 fun()函数中, +p操作使形参 p向后移动一个字符指针的位置,即指针 a1的位置。故最后通过 printf()函数输出的字符串为 “Afternoon”。因此 A选项正确。 19 【正确答案】 D 【试题解析】 调用 fun函数后,实参数组名 sl传给形参指针 p, p也指向数组s1。 fun函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小

27、写字母,就把前一个字符转换为大写。程序中语句 pi-1=pi-1-a+A;即 p pi-1=pi-1-32,意思是将 pi-1中的 字符转换为大写。因此 D选项正确。 20 【正确答案】 D 【试题解析】 本题考查字符串数组。 s表示指向字符数组的指针, s指向了第一个字符串, s+指向了第二个字符串,所以最后输出结果为 D选项。 21 【正确答案】 A 【试题解析】 字符型指针变量可以用选项 A的赋值方法赋值: char *s;s=“Olympic“,选项 C的写法: char*s, s=“Olympic“;是错误的。字符数组可以在定义的时候初始化: char s=“Olympic“;或者

28、char s=“Olympic“;都是正确的,但是不可以在定义字符数组后对数组名赋值 (数组名是常量,代表数组首地址 ),所以选项 B和选项 D都是错误的。对于本例,选项 B、 D中的字符数组 s的大小至少为 8,才能存放下字符串 (字符串的末尾都有结束标志 “ 0“)。 22 【正确答案】 A 【试题解析】 因为小写字符 a、 b、 c的 ASCII的值分别为 97、 98、 99,而在 do while循环语句中,每次对字符的 ASCII的值取余数并输出,所以分别输出 7、8、 9。 23 【正确答案】 A 【试题解析】 A选项为正确用法,先将字符串存于 字符数组中,然后将数组名赋给字符指

29、针 (数组名代表数组首地址,定义数组时为其分配确定地址 )。 C选项错误, getchar()函数输入字符给字符型变量,而不是字符指针。 B选项和 D选项有类似的错误,两个选项并无语法错误,但运行时可能会出现问题。因为在 B选项和 D选项中,字符指针没有被赋值,是个不确定的值,指向一个不确定的内存区域,这个区域可能存放有用的指令或数据。在这个不确定的区域重新存放字符串,可能会发生无法预知的错误。因此 A选项正确。 24 【正确答案】 B 【试题解析】 int(*f)(int);为指 向函数的指针变量的定义方法,其中 f为指向函数的指针变量,第一个 int为函数返回值类型,第二个 int为函数的

30、形参类型。因此 B选项正确。 25 【正确答案】 D 【试题解析】 D选项中的 “*f(a, b)”表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量 k。 26 【正确答案】 D 【试题解析】 malloc函数动态分配一个整型的内存空间,然后把函数返回的地址用 (int*)强制类型转换为整型指针,再把它赋给 a、 b、 c,即让指针变量 a、 b、 c都指向 刚申请的内存空间。所以只有最后一个赋值语句 “*c=3”的值保留在了该空间内,因为 a、 b、 c三个指针变量均指向该空间,所以打印该空间内的数值为 3。 27 【正确答案】 A 【试题解析

31、】 数组定义后,不可以对数组整体赋面, s是二维数组,因 ss1是一维字符数组,即字符串,字符串赋值可以使用 “strcpy(ss1, “right“); ”这样的形式,而选项 A中对二维数组中的第 l维 (相当于一个一维数组 )赋值,是不可以的。选项 B和 D是定义时对数组初始化,这是可以的。选项 C中,将字符串在内存中的首地址赋给指 针数组的一个元素,这也是可以的。 28 【正确答案】 D 【试题解析】 在主函数中分别给整型变量 i、指针型变量 p和指向指针的指针变量 r赋初值;调用 f函数,并将实参变量 r的值传递给形参变量 s。在 f函数中,通过 “printf(“ d, d, d,

32、“, k, *t, *s); ”语句输出 7, 7, 7;返回主函数,通过 “printf(“ d, d, d n“, i, *p, *r); ”语句再输出 3, 7, 7。因此 D选项正确。 29 【正确答案】 C 【试题解析】 在主函数中首先初始化整型变量 i,将 i的地址赋给 指针变量 p,再将指针变量 p的地址赋给指向指针的指针变量 r;调用 f函数,将变量 r的值传递给变量 s;由于 k和 m分别赋值 7和 5,执行语句 “printf(“ d, d, d, “,k, *t, *s); ”的结果为 7, 5, 5;返回主函数,执行语句 “printf(“ d,d, d、 n“, i, *p, *r); ”的结果为 3, 3, 3。因此 C选项正确。

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