二级C语言选择题专项强化真题试卷9
选择题
1.以下表达式中,结果为“假”的是( )。(B)
A. (3+4)>6
B. (31=4)>2
C. 3<=4||3
D. (3<4)=1
解析:A项,先执行3+4=7,7>6,结果为真;B项,先执行3!=4为真,即为1,1>2结果为假;C项,先执行3<=4结果为真,即1,再逻辑或3,结果为真;D项,先执行3<4结果为真,即为1,再执行1=1,结果为真。
2.一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般都有一个教练,则实体运动队和队员的联系是( )。(A)
A. 一对多
B. 一对一
C. 多对一
D. 多对多
解析:一个运动队有多个队员,表明在运动队表中的每个队与队员表中的一个或多个队员相关;一个队员仅属于一个运动队,表明队员表中的每个队员只可以与运动队表中的一个队相关,为一对多关系。故正确答案为A。
3.关于C语言标识符,以下叙述中错误的是( )。(A)
A. 标识符可全部由数字组成
B. 标识符可全部由下画线组成
C. 标识符可全部由小写字母组成
D. 标识符可全部由大写字母组成
解析:C语言标识符只能由字母、数字、下画线构成,且只能以字母、下画线开头,故选项A不正确。
4.有以下程序:
#include<stdio.h>
main()
{
int x=1,y=0;
if(!x)y++;
else if(x==0)
if(x)y+=2;
else y+=3;
printf(\\(A)
A. 0
B. 2
C. 1
D. 3
解析:在该题中,选择结构的表达式都不成立,所以整个选择语句都没有执行,y值没有发生改变,答案选A。
5.有以下程序:
#nclude
main()
{ int y=9;
for(;y>0;y- -)
if(y%3= =0)printf(\\(A)
A. 852
B. 963
C. 741
D. 875421
解析:第一次for循环,y的值为9,y%3的值为0,满足条件打印–y,即先减一后打印,所以打印8;
第二次for循环,y的值为7,y%3的值为1,不执行打印语句;
第三次for循环,y的值为6,y%3的值为0,满足条件打印–y,即先减一后打印,所以打印5;
第四次for循环,y的值为4,不满足if条件,不执行打印语句;
第五次for循环,y的值为3,满足if条件,打印输出2;
第六次for循环,y的值为1,不满足条件,不执行打印语句。
6.有以下程序:
#include<stdio.h>
void fun1(char*p)
{
char*q;
q=p;
while(*q!=’\0’)
{
(*q)++;
q++;
}
}
main( )
{
char a[]={\\(B)
A. Prphsbn
B. Prohsbn
C. Progsbn
D. Program
解析:(*q)++是q所指的字符加1,q++就是指针移到下一个字符。因此B选项正确。
7.以下叙述正确的是( )。(A)
A. 计算机只接收由0和1代码组成的二进制指令或数据
B. 计算机只接收由0和1代码组成的十进制指令或数据
C. 计算机可直接接收并运行C源程序
D. 计算机可直接接收并运行任意高级语言编写的源程序
解析:计算机认识自己的母语——机器语言,即0和1代码组成的二进制指令和数据,故A选项正确,B选项错误。C语言是一种高级语言,计算机不能直接运行C源程序和高级语言编写的源程序,C和D选项错误。
8.有以下程序
#include<stdio.h>
main( )
{
char i,j,n;
for(i=’1’;i<=’9’;i++)
{
if(i<’3’)continue;
for(j=’0’;j<=’9’;j++)
{
if(J<’2’||j>=’4’)continue;
n=(i-’0’)*10+j-’0’;
prinff(\\(A)
A. 32 33 42 43
B. 30 31 40 41
C. 34 35 44 45
D. 35 36 45 46
解析:数字字符‘0’-‘9’的ASCII码值是连续递增的,即‘1’比‘0’的ASCII码值大1……所以题意中,外层for循环的循环变量i取值为‘1’、‘2’、……‘9’;内层for循环的循环变量j取值为‘0’、‘1’……‘9’;另外外层for循环的循环体中if(i<‘3’)语句表示当i的ASCII码小于字符‘3’的ASCII码值时,执行continue语句跳入下一次循环(i的ASCII码值自增1);if(i==‘4’)语句表示当i是字符‘4’时,执行break语句跳出循环;同理,内层for循环中的if(j<’2’||j>=’4’)语句在j的值不等于‘2’、‘3’时,执行continue跳入下一次循环;综上,只有在i取值为‘3’或‘4’,j取值为‘2’或‘3’时,才执行语句:n=(i-’0’)*10+j-’0’;和printf(\\
9.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。(C)
A. auto和static
B. extem和register
C. auto和register
D. static和register
解析:auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在CPU中的寄存器中,这种变量称为寄存器变量,只有局部自动变量和形式参数可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量,属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。
10.以下叙述中错误的是( )。(B)
A. main( )是C语言主函数的起始
B. main( )作为主函数必须位于源程序的起始位置行
C. main( )是C程序执行的起始行
D. main是不可替代的主函数名
解析:C语言规定必须用main作为主函数名,选项D正确:main( )是C语言中主函数的起始行,也是C程序执行的起始行,选项A、c正确;main( )作为主函数可以在源程序的任意位置,但是程序执行必须从main( )函数开始,选项B错误,本题答案为B
11
本文档预览:3600字符,共8616字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载