二级C语言分类模拟题529
(总分47.5, 做题时间90分钟)
选择题
1.
在C语言中,char型数据在内存中的存储形式为______。
A 反码
B 补码
C ASCII码
D 原码
分值: 2
答案:C
2.
下列叙述中,正确的是______。
A 软件交付使用后还需要进行维护
B 软件一旦交付使用就不需要再进行维护
C 软件交付使用后其生命周期就结束
D 软件维护是指修复程序中被破坏的指令
分值: 1
答案:A
3.
有下列程序:
#include<stdio.h>
main()
{ int a=6,b=7,m=1;
switch(a%2)
{ case 0:m++;break;
case 1:m++;
switch(b%2)
{ defaut:m++;
case0:m++;break;
}
}
printf("%d\n",m);
}
程序运行后的输出结果是 ____ 。
#include<stdio.h>
main()
{ int a=6,b=7,m=1;
switch(a%2)
{ case 0:m++;break;
case 1:m++;
switch(b%2)
{ defaut:m++;
case0:m++;break;
}
}
printf("%d\n",m);
}
程序运行后的输出结果是 ____ 。
A 1
B 2
C 3
D 4
分值: 1
答案:B
[解析] 本题考查switch语句。第一个switch语句,因为a=6,a%2=0,所以执行case0.将m加1,遇到break语句跳出switch语句,结束循环。
4.
下列合法的声明语句是______。
A int _abc=50;
B double int=3+5e2.5;
C long do=1L;
D float 3_asd=3e-3;
分值: 1
答案:A
[解析] 标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。
5.
以下选项中叙述正确的是______。
A char c1,c2,*c3,c4[40j;是合法的变量定义语句
B 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
C 数组下标的下限可以是负值
D 若有数组定义float array[4];则语句printf("%f",array[3.12]);是合法的
分值: 1
答案:A
[解析] A选项正确定义了字符变量c1、c2,字符型指针c3,字符型一维数组c4[40],A选项正确。“[]”是下标运算符,“下标”可以是任何非负整型数据,取值范围是0~(数据元素的个数-1)。在引用数组元素时,下标运算符内可以是常量也可以是变量或者表达式,B选项错误。
数组下标的下限不可以是负值,C选项错误。数组下标必须是整型数据,3.12为浮点数,故D选项错误。
6.
有以下程序
main()
{ int p[8]=(11,12,13,14,15,16,17,18),i=0,j=0;
while(i++<7)if(p[i]%2) j+=p[i];
printf("%d\n",j);
} printf函数返回值
程序运行后的输出结果是______。
main()
{ int p[8]=(11,12,13,14,15,16,17,18),i=0,j=0;
while(i++<7)if(p[i]%2) j+=p[i];
printf("%d\n",j);
} printf函数返回值
程序运行后的输出结果是______。
A 42
B 45
C 56
D 60
分值: 1
答案:B
[解析] 本题程序中while循环的条件是i++<7,由于在循环体中没有改变i的值,所以循环过程是i从初始值0开始,每次自加1,当i为7再次进行循环条件判断时退出循环。而在循环体中,i从1到7变化。循环体是一个if语句,当p[i]%2为真,即p[i]为奇数时执行j+=p[i]。所以该段程序的实际效果是将p[1]~p[7]中的奇数累加到变量j中。所以j=13+15+17=45,选B。
7.
下列二维数组初始化语句中,不正确的是 ____ 。
A int b[][2]={1,2,3,4,5,6,7};
B int b[3][5]={0,0,0};
C intb[][4]={{1,2},{3,4,5},{6}};
D int b[3][2]={(1,2) ,(3,4) ,(5,6) };
分值: 1
答案:D
[解析] 在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0;C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。
在选项D)赋值表达式中对每一维的元素赋初值应用 {},而不是()。
在选项D)赋值表达式中对每一维的元素赋初值应用 {},而不是()。
8.
以下程序的输出结果是______。
试题程序
#include <stdio.h>
main()
{ int i=2, p;
p=f(i, i+1);
printf("% d\n", p);
}
int f(int a, int b)
{ int c;
c=a;
if(a>b)
c=1;
else if(a==b)
c=0;
else
c=-1;
return(c);
}
return(c);
}
A -1
B 0
C 1
D 2
分值: 1
答案:A
[解析] 以上程序中定义了名为f()的整型函数,它有两个int类型的形参。在main()函数中调用
了f()函数,可以很直观地看到,实参的值分别是2和3,2传给函数形参a,3传给函数形参b。函数返回的值赋给变量p,main()函数中输出的值就是函数中的返回值。在函数f()中,若a的值大于b,c被赋1;若a的值等于b,c被赋0;若a的值小于b,c被赋-1。按照实参传送过来的值,a的值小于b,因此c被赋-1,所以函数的返回值为-1。总结:本题中没有复杂的算法,但读者必须熟练地掌握if...else分支结构的执行流程,同时建立清晰的有关函数定义和函数调用的基本概念,就可得出正确的答案。
9.
假定x和y为double型,则表达式x=2,y=x+3/2的值是______。
A 3.500000
B 3
C 2.000000
D 3.000000
分值: 1
答案:D
[解析] 在x=2,y=x+3/2中,3/2=1,2+1=3,因此表达式的值为3,因为x、y为double型变量,故选择D选项。
10.
以下叙述中正确的是______。
A int * p1; int * * p2; int *p3;都是合法的定义指针变量的语句
B 指针变量只能通过求地址运算符(&)来获得地址值
C 语句p=NULL;与p=\0;是等价的语句
D 语句p=NULL;执行后,指针p指向地址为0的存储单元
分值: 2
答案:A
[解析] B选项描述不正确,指针变量可以通过求地址运算符(&)来获得地址值,也可以通过指针变量获得地址值,还可以通过标准函数获得地址值;C选项中,p=NuLL;和p=0;或p="\0";等价;D选项中,语句p=NULL;执行后,指针p并不是指向地址为0的存储单元,而是具有一个确定的值-“空”。因此A选项正确。
11.
定义无符号整数类为UInt,下面可以作为类UInt实例化值的是______。
A -369
B 369
C 0.369
D 整数集合{1,2,3,4,5}
分值: 2.5
答案:B
[解析] 只有B选项369可以用无符号整数来表示和存储。A选项-369有负号,选项C0.369是小数,它们都不能用无符号整数类存储。选项D是一个整数集合需要用数组来存储。
12.
若要通过位运算使整型变量a中的各位数字全部清零,以下选项正确的是______。
A a=a&0;
B a=a|0;
C a=a^0;
D a=!a;
分值: 1
答案:A
[解析] 本题考查位运算符和位运算。“|”运算符,1|0=1,0|0=0,所以选项B中a变量的各位数字保持不变,故B选项错误;“^”运算符,1^0=1,0^0=1,所以选项C中a变量的各位数字中,1保持不变,0变成1,故C选项错误;“!”运算符,!1=0,!0=1,所以选项D中a变量的个位数字中,1变成0,0变成1,故D选项错误;“&”运算符,1&0=0,0&0=0,所以选项A中各位数字全部清零,故答案为A选项。
13.
一个C语言程序是由______。
A 一个主程序和若干子程序组成
B 函数组成
C 若干过程组成
D 若干子程序组成
分值: 2
答案:B
14.
下列程序段中完全正确的是______。
A int*p;scanf("%d",&p);
B int*p;scanf("%d",p);
C int k,*p=&k;scanf("%d",p);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论