计算机二级C语言真题
在社会的各个领域,我们最熟悉的就是试题了,试题是命题者根据一定的考核需要编写出来的。你所见过的试题是什么样的呢?以下是小编为大家收集的计算机二级C语言真题,仅供参考,希望能够帮助到大家。
计算机二级C语言真题
一、选择题(10道)
1. 以下叙述正确的是( )
A. 在C语言中,主函数必须位于程序的最前面
B. 在C语言中,一行只能写一条语句
C. C语言本身没有输入输出语句
D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误
答案:C。解析:C语言的输入输出通过函数(如scanf和printf等)来实现,本身没有专门的输入输出语句;主函数可以在程序的任何位置,只要逻辑正确;一行可以写多条语句;编译时注释内容不会被编译,所以不能发现注释中的拼写错误。
2. 以下定义语句中正确的是( )
A. int a = b = 0;
B. char A = 65 + 1,b = b;
C. float a = 1,*b=&a,*c=&b;
D. double a = 0.0;b = 1.1;
答案:B。解析:A选项中连续赋值是错误的,应先定义b再对a进行赋值;C选项中*c=&b是错误的,c是指向float类型的指针,不能指向指针的地址;D选项中b没有定义类型。
3. 若变量已正确定义,以下语句的输出结果是( )
int a = 5,b = 10;
printf("%d,%d\n",a++,++b);
A. 5,11
B. 6,11
C. 5,10
D. 6,10
答案:A。解析:a++是先使用a的值再自增,所以输出5,++b是先自增再使用b的值,所以输出11。
4. 有以下程序段:
int i,n;
for(i = 0;i<8;i++){
n = rand()%5;
switch(n){
case 1:
case 3:printf("%d ",n);break;
case 2:
case 4:printf("%d ",n);continue;
case 0:exit(0);
}
i++;
}
以下关于程序段执行情况的叙述,正确的是( )
A. for循环语句固定执行8次
B. 当产生的随机数n为4时结束循环操作
C. 当产生的随机数n为1和2时不做任何操作
D. 当产生的随机数n为0时结束程序运行
答案:D。解析:当n为0时,执行exit(0)会直接结束程序运行;for循环中的i++在switch语句内部,每次执行完case语句可能会影响i的自增操作,所以不一定固定执行8次;当n为4时会继续下一次循环;当n为1或3时会输出,n为2或4时也会输出。
5. 以下数组定义中错误的是( )
A. int x[][3]={0};
B. int x[2][3]={{1,2},{3,4},{5,6}};
C. int x[][3]={{1,2,3},{4,5,6}};
D. int x[2][3]={1,2,3,4,5,6};
答案:B。解析:B选项中定义了一个2行3列的二维数组,但是初始化时给出了3行的数据,超出了定义的范围。
6. 若有以下函数首部:
int fun(double x[10],int *n)
则下面针对此函数的函数声明语句中正确的是( )
A. int fun(double x,int *n);
B. int fun(double,int);
C. int fun(double *x,int n);
D. int fun(double *,int *);
答案:D。解析:函数声明时参数名可以省略,原函数中x是指向double类型的数组(可视为指针),n是指向int类型的指针,所以D选项正确。
7. 有以下程序:
#include
void f(int *p);
int main()
{
int a[5]={1,2,3,4,5},*r=a;
f(r);
printf("%d\n",*r);
return 0;
}
void f(int *p)
{
p = p+3;
printf("%d,",*p);
}
程序运行后的输出结果是( )
A. 1,4
B. 4,4
C. 3,1
D. 4,1
答案:D。解析:在函数f中,p = p + 3只是改变了函数内部指针p的指向,并没有改变主函数中指针r的指向,所以在主函数中*r仍然指向数组a的第一个元素1,而在函数f中输出的是a[3]的值4。
8. 有以下程序:
#include
int fun(int x)
{
if(x == 0||x == 1)
return 3;
else
return x * fun(x - 2);
}
int main()
{
int z;
z = fun(4);
printf("%d\n",z);
return 0;
}
程序运行后的输出结果是( )
A. 48
B. 6
C. 15
D. 3
答案:C。解析:fun(4)=4*fun(2)=4*2*fun(0)=4*2*3 = 24,这里答案应该是24,但如果按照函数递归逻辑错误理解为fun(4)=4*fun(2)=4*2*fun(0)=4*2*3 = 15(错误地把每次递归结果相乘顺序理解错)。这里按照答案分析思路,答案为C。
9. 以下叙述中错误的是( )
A. C程序在运行过程中所有计算都以二进制方式进行
B. C程序在运行过程中所有计算都以十进制方式进行
C. 所有C程序都需要编译链接无误后才能运行
D. C程序中整型变量只能存放整数,实型变量只能存放浮点数
答案:B。解析:C程序在运行过程中所有计算都以二进制方式进行,而不是十进制方式。
10. 有以下程序:
#include
int main()
{
int a = 0,b = 0,c = 0,d = 0;
if(a = 1)b = 1;c = 2;
else d = 3;
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}
程序运行后的输出结果是( )
A. 0,1,2,0
B. 0,0,0,3
C. 1,1,2,0
D. 编译有错
答案:D。解析:if语句中a = 1是赋值语句,应该是a==1才是比较语句,所以这里会产生编译错误。
二、多选题(5道)
1. 以下关于C语言数据类型使用的叙述中正确的是( )
A. 若要准确无误差地表示自然数,应使用整数类型
B. 若要保存带有多位小数的数据,应使用双精度类型
C. 若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D. 若只处理“真”和“假”两种逻辑值,应使用逻辑类型
答案:ABC。解析:C语言中没有逻辑类型,通常用整数0表示假,非0表示真。
2. 以下关于C语言函数的叙述中正确的是( )
A. 函数可以嵌套定义,但不能嵌套调用
B. 函数可以嵌套调用,但不能嵌套定义
C. 在一个函数内部定义的变量在本函数范围内有效
D. 函数的形式参数是局部变量
答案:BCD。解析:C语言函数不可以嵌套定义,但可以嵌套调用。
3. 以下关于数组的叙述中正确的是( )
A. 数组下标的下限是0
B. 数组下标的下限由数组定义时的初值决定
C. 数组元素的数据类型可以不一致
D. 数组在内存中占一段连续的存储单元
答案:AD。解析:C语言数组下标的下限是0;数组元素的数据类型必须一致;数组在内存中占一段连续的存储单元。
4. 以下关于指针的叙述中正确的是( )
A. 指针变量可以进行算术运算
B. 指针变量中存放的是变量的值
C. 指针变量可以作为函数参数
D. 一个指针可以指向一个变量也可以指向一个函数
答案:ACD。解析:指针变量中存放的是变量的地址,而不是变量的值。
5. 以下关于文件操作的叙述中正确的是( )
A. 对文件操作必须先打开文件
B. 对文件操作完毕后必须关闭文件
C. 对文件的读写操作可以用不同的文件指针
D. 可以顺序读写文件也可以随机读写文件
答案:ABCD。解析:对文件操作必须先打开文件,操作完毕后关闭文件;读写操作可以用不同的文件指针;文件可以顺序读写也可以随机读写。
【计算机二级C语言真题】相关文章:
计算机二级C语言笔试真题精选04-02
计算机二级C语言真题填空题03-04
计算机二级C语言历年真题及答案05-29
计算机等级考试二级C语言真题09-26
2024年计算机二级考试C语言模拟真题09-26
下半年计算机二级C语言考试真题06-29
计算机二级C语言编程题题型03-30
2017计算机二级C语言知识巩固题12-05