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
解锁即可开始刷题
并加入考生交流群
第一时间获取
计算机等级考试考试资讯
热搜排行榜
互动交流
-
扫码进入
解锁即可开始刷题
并加入考生交流群
-
扫码加入
与广大计算机等级考生
共同学习交流