15301312193

您现在的位置是: 首页>真题资料>历年真题>二级

NCRE计算机等级考试《二级 月 C语言》考试题库一

整理编辑:全国计算机等级考试网  发布时间:2023-06-24 22:55:21  阅读量:745

24.以下叙述中错误的是( )。

A. 当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

B. 函数可以返回地址值

C. 改变函数形参的值,不会改变对应实参的值

D. 可以给指针变量赋一个整数作为地址值

【答案】:D

【解析】:

A项正确,NULL是在头文件stdio.h中定义的符号常量;B项正确,函数的返回值可以是地址,即指针;C项正确,函数调用中

形参值的变化不会传递给实参;D项错误,不能将一个整数直接赋给指针变量作为地址,只能用取地址运算符“&”把该整型变

量的地址赋值给该指针变量。答案选择D选项。

25.有以下程序(说明:字母A的ASCII码值是65):

#include <stdio.h>

void fun(char *s)

{

while(*s)

{

if(*s%2)printf("%c",*s);

s++;

}

}

main()

{

chara[]="BYTE";

fun(a);

printf(" ");

}

程序运行后的输出结果是( )。

A. BY

B. BT

C. YT

D. YE

【答案】:D

【解析】:

函数只会输出ASCII码值为奇数的字母,执行fun(a)时,依次取出a[]中的字母,当取第一个字母B时,因为B的ASCII码值为66,

所以不会输出B,字母Y的ASCII码值为89,字母T的ASCII码值为84,字母E的ASCII码值为69,所以最后输出字母YE。答案选

择D选项。

26.有以下程序:

#include <stdio.h>

main()

{…

while(getchar()!=' '); …

}

以下叙述中正确的是( )。

A. 此while语句将无限循环

B. getchar()不可以出现在while语句的条件表达式中

C. 当执行此while语句时,只有按回车键程序才能继续执行

D. 当执行此while语句时,按任意键程序就能继续执行

【答案】:C

【解析】:

本题中while循环条件为getchar()!=' ',表示只要不输入回车键,getchar()!=' '语句一直为真,则while循环会出现空循环,当按下

回车键后跳出while循环执行下一条语句。答案选择C选项。

27.有以下程序:

#include <stdio.h>

void fun(int *p,int *q)

main()

{

intm=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. 1,3

B. 2,3

C. 1,4

D. 1,2

【答案】:A

【解析】:

语句p=p+1;只改变指针p的地址,与p的内容无关,所以m值没有改变,而语句*q=*q+1;是改变该指针所指地址中的内容,所以n

变为3,m不变,仍为1,答案选择A选项。

28.以下函数按每行8个输出数组中的数据:

void fun(int *w,int n)

{

int i;

for(i=0;i<n;i++)

{

______

printf("%d",w[i]);

}

printf(" ");

}

下划线处应填入的语句是( )。

A. if(i/8==0) printf(" ");

B. if(i/8==0)continue;

C. if(i%8==0)printf(" ");

D. if(i%8==0)continue;

【答案】:C

【解析】:

每行输出8个数组数据后输入一个换行,所以应该采取对8取余的方法,余数循环一次便换行一次,所以语句为

if(i%8==0) printf(" ");

答案选择C选项。

29.以下叙述中正确的是( )。

A. 函数的形参类型不能是指针类型

B. 函数的类型不能是指针类型

C. 设有指针变量为double *p,则p+1将指针p移动8个字节

D. 基类型不同的指针变量可以相互混用

【答案】:C

【解析】:

C项正确,一般情况下,double类型的变量长度为8个字节,对指针进行加、减运算时,数字“1”指1个存储单元长度。A项错

误,函数的形参可以是数值类型,也可以是指针类型;B项错误,C语言中有指向函数的指针,称为函数指针;D项错误,int类

型的指针只能指向int,不能指向double,基类型不同的指针变量不能混用。答案选择C选项。


注:需要了解更多信息可以关注:公众号 哦~


计算机等级考试交流群点击查看 加入考生交流群,一起学习更有动力!


模拟软件实操题库好消息!全国计算机等级考试网正版软件实操题库,已经上线啦~


30.设有以下定义:

char s1[]="0123";

char s2[]={'0','1','2','3'};

则以下叙述正确的是( )。

A. 数组s1的长度小于s2的长度

B. 数组s1和s2的长度相同

C. 数组s1的长度大于s2的长度

D. 数组s1和s2完全等价

【答案】:C

【解析】:

字符数组s1赋值字符串"0123",字符串中字符依次放入数组中,在最后一个字符后要添加一个结束字符'�',数组s1长度为5。数

组s2只需要4个单元即可放下所有初始化值,故数组长度为4。所以数组s1的长度大于s2的长度,C项正确,AB错误。两个数组

等价是指两个数组长度和类型以及对应每个元素值均相同,所以s1和s2不是完全等价,D项错误。答案选择C选项。

31.有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数):

#include <stdio.h>

#include <string.h>

main()

{

chara[10] = "abc",b[10] = "012",c[10] = "xyz";

strcpy(a+1,b+2);

puts(strcat(a,c+1));

}

程序运行后的输出结果是( )。

A.a12xyz

B. 12yz

C.a2yz

D. bc2yz

【答案】:C

【解析】:

先执行strcpy,将b数组中第2个及之后位置上的字符复制到a数组中第1个及之后的位置上的字符位置,即此时数组a中字符为

a2,再执行strcat连接函数,将a中字符与c数组中第2个及之后位置上的字符连接,即为a2yz。注意,数组下标从0开始。答案选

择C选项。

32.以下叙述中正确的是( )。

A. 简单递归不需要明确的结束递归的条件

B. 任何情况下都不能用函数名作为实参

C. 函数的递归调用不需要额外开销,所以效率很高

D. 函数既可以直接调用自己,也可以间接调用自己

【答案】:D

【解析】:

D项正确,C语言中的函数可以直接或间接地自己调用自己,前者称简单递归,后者称间接递归。A项错误,递归必定要有一

个明确的结束递归的条件;B项错误,递归就是把函数名作为实参的一种特殊情况;C项错误,函数的递归调用过程中,系统

要为每一层调用中的变量开辟存储单元,记住每一层调用后的返回点,要增加许多额外的开销,通常会降低程序的运行效率。

答案选择D选项。

33.有以下函数:

#include <stdio.h>

void func(int n)

{

int i;

for(i=0;i<=n;i++)printf("*");

printf("#");

}

main()

{

func(3);

printf("????");

func(4);

printf(" ");

}

程序运行后的输出结果是( )。

A. ****#????***#

B. ***#????*****#

C. **#????*****#

D. ****#????*****#

【答案】:D

【解析】:

从main函数开始,执行func(3)函数,for循环执行4次,连续输出四个“*”,然后输出一个“#”;输出“????”;再次调用func(4),for循

环执行5次,连续输出五个“*”,然后输出一个“#”;最后输出换行符。答案选择D选项。

34.有以下程序:

#include <stdio.h>

int b=2;

int fun(int *k)

{

b=*k+b;

return(b);

}

main()

{

inta[10]={1,2,3,4,5,6,7,8},i;

for(i=2;i<4;i++)

{

b=fun(&a[i])+b;

printf("%d",b);

}

printf(" ");

}

程序运行后的输出结果是( )。

A. 1012

B. 810

C. 1028

D. 1016

【答案】:C

【解析】:

因为int是全局变量,所以它的值在整个程序结束时才会消失。for循环第一次i=2,a[i]=3,所以fun(&a[i])=3+2=5,这时b为5,所

以b=fun(&a[i])+b=5+5=10。第二次循环时,b=10,然后fun(&a[i]),代入a[i]=4,这时fun(&a[i])=10+4=14,所以

b=fun(&a[i])+b=14+14=28。答案选择C选项。

35.以下叙述中正确的是( )。

A. 在C语言中,预处理命令行都以“#”开头

B. 预处理命令行必须位于C源程序的起始位置

C. #include<stdio.h>必须放在C程序的开头

D. C语言的预处理不能实现宏定义和条件编译的功能

【答案】:A

【解析】:

“编译预处理”就是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令行进行处理的过程。A项正

确,在C语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。B项错误,预处理命令行可以出现在程序的任何一行的

开始部位,其作用一直持续到源文件的末尾;C项错误,#include <stdio.h>可以出现在程序的任意一行的开始部位;D项错误,

预处理可以实现宏定义、条件编译和文件包含。答案选择A选项。


本文标签:全国计算机等级考试二级NCRE计算机等级考试《二级 月 C语言》考试题库一

转载请注明:文章转载自(http://www.jsjdjks.cn

本文地址:http://www.jsjdjks.cn/lnztej/35.html

计算机等级微信刷题助手
扫码进入微信刷题助手

解锁即可开始刷题
并加入考生交流群

计算机等级微信公众号
扫码关注微信公众号

第一时间获取
计算机等级考试考试资讯

《全国计算机等级考试网》免责声明:

1、因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。联系邮箱:1225682794@qq.com。