国家二级C语言机试(语言程序设计)模拟试卷31
选择题
1.设int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( )。(A)
A. *p=*q;
B. p=*q;
C. *p=n1;
D. p=q;
解析:本题考查指针的使用。指针p和q分别指向变量n2和n1,所以可以用*p代替n2,*q代替n1。
2.通过键盘输入数据,为数组中的所有元素赋值,在程序中下划线处应填入的是( )。
#nclude
#define N 10
void fun(int x[N])
{int i=0;
while(i<N)scanf(’’%d’’,______);}(C)
A. x[i+1]
B. x+i
C. x+(i++)
D. X[++i]
解析:程序通过while循环来给数组元素赋值,赋值语句通过调用scanf函数来实现。scanf函数从键盘接收数据,注意scanf的第二个参数必须是地址,选项A和选项D不是地址,错误。选项B和选项C是地址,但是选项B的i值不会发生变化,循环体内每次都是给同一个元素赋值,不满足要求,选项C正确。
3.设int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组中6个元素的值,不能完成此操作的语句是( )。(D)
A. for(i=0;i<6;i++)printf(’’%2d’’,*(p++));
B. for(i=0;i<6;i++)printf(’’%2d’’,*(p+i));
C. for(i=0;i<6;i++)printf(’’%2d’’,*p++);
D. for(i=0;i<6;i++)prinff(’’%2d’’,(*p)++);
解析:指针p指向数组x,因此可以使用p来引用数组元素。选项A中,*(p++)表示先取出p指向的元素的值,然后p++指向下一个元素,满足要求;选项B中*(p+i)每次i的值发生变化,(p+i)指向x数组的x[i]元素,因此*(p+i)是取出数组x的x[i]元素的值,满足要求;选项C和选项A相比,少了括号,由于*运算符的优先级比++要低,因此,因此*p++表示先取出p指向的元素的值,然后p再++指向下一个元素,满足要求;选项D中(*p)++表示先取出p指向的元素的值,然后该值++,p没有增加,不满足要求。
4.执行以下程序段后,w的值为( )。
int w=’A’,x=14,y=15;
w=((x‖y)&(w<’a’));(C)
A. 一1
B. 2
C. 1
D. 0
解析:本题考查表达式和逻辑运算。x和y分别为14和15,因此(x‖y)的值是真。w的值为A,其ASCⅡ值为65,a的ASCⅡ值为97,因此(w<’a’)的值为真。表达式w=((x‖y)&(w<’a’))的前后两个值均为真,整个表达式的值为真。
5.若int x=12;double y=3.141593;则printf(’’%d%8.6f’’,x,y);的输出结果是( )。(A)
A. 123.141593
B. 12 3.1415930
C. 12,3.141593
D. 123.1415930
解析:本题考查格式化输出函数printf,在printf函数调用里面首先输入整型变量x的值12.然后按照’’%8.6f’’格式输出double类型变量y的值,’’%8.6f’’表示输出8位,小数点后输出6位,这里的8位是指输出的总长度。
6.要通过语句scaRf(’’%d,%d,%d’’,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是( )。(D)
A. 口口口1,2,3
B. 1,口口口2,口口口3
C. 1,2,3
D. 1口2口3
解析:C语言中的标准输入函数scanf要求严格按照格式输入,本题要求在输入数据时。两个数据间一定以一个逗号“,”作为间隔符,所以选项D不正确。
7.设int a;:float b;执行scanf(’’%2d%f’’,&a,&b);语句时,若从键盘输入876 543.0,则a和b的值分别是( )。(B)
A. 543和876.0
B. 87和6.0
C. 876和543.0
D. 765和543.0
解析:scanf的输入格式符%2d%f中,2d表示输入的数据的总宽度为2,所以当从键盘输入876543.0时,这时把输入数字串的前两位87赋给变量a.然后紧接着将6按照格式控制符%f的形式赋给变量b,所以b的值为6.000000.
8.若有定义int a;float b;double c;程序运行时输入:3 4 5能把值3输入给变量a、4输入给变量b、5输入给变量c的语句是( )。(B)
A. scanf(’’%d%1f%lf’’,&a,&b,&c);
B. scanf(’’%d%f%1f’’,&a,&b,&c);
C. scanf(’’%d%f%f’’,&a,&b,&c);
D. scanf(’’%1f%lf%1f,&a,&b,&c);
解析:scanf函数进行输入的时候,默认的输入间隔为空格、跳格和回车,变量a、b和c均为数值型数据,输入时间隔为空格,因此scanf函数的第一个表示格式的参数之间不用加入分隔符,而要输入double型数据,格式控制必须用%lf(或%le)。否则,数据不能正确输入或出现赋值有误的现象。
9.关于C语言程序的叙述中正确的是( )。
A
解析:当使用scanf函数从键盘输入数据时,可以输入间隔符,但输入回车后scanf函数即接收了这一行数据,不能再修改,选项A正确;在复合语句中可以定义变量为局部变量,选项B错误;而空语句为“;”,不是空行,选项C错误;对于选项D,{}还可以表明复合语句的开头结尾,或者循环体的开头结尾等,选项D错误。
10.关于scanf语句叙述中正确的是( )。(A)
A. 在Scanf函数的格式控制字符串中,必须有与输入项一一对应的格式转换说明符
B. 复合语句也被称为语句块,它至少要包含两条语句
C. Scanf函数中的格式控制字符串,是提示程序员的,输入数据时不必管它
D. 只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度
解析:输入函数的调用格式如%d,%53.1等主要作用是指定输入时的数据转换格式,格式串中,必须含有与输入项对应的格式转换说明符,选项A正确;复合语句还可以是空语句,并没有规定语句条数,选项B错误;scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,都不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用printf函数输出,选项C错误;在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以用实数指定小数位的宽度,选项D错误。
11.与其他三个选项的含义不同的是( )。(D)
A. if(k%2)
B. if(k%2==1)
C. if((k%2)!=0)
D. if(!k%2==1)
解析:本题考查if语句和if语句构成的选择,注意if语句中else与if的匹配。选项A表示k除以2的余数,如果余
本文档预览:3600字符,共8535字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载