国家二级C语言(C语言程序设计)机试模拟试卷11
选择题
1.以下叙述中正确的是(C)
A. 赋值语句是一种执行语句,必须放在函数的可执行部分
B. scanf和printf是C语言提供的输入和输出语句
C. 由printf输出的数据都隐含左对齐
D. 由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的
解析:C语言本身没有提供输入输出语句,但是可以通过调用标准库函数中提供的输入和输出函数来实现输入和输出,选项B错误;采用printf输出数据,输出数据都默认为右对齐,若要左对齐,可以在格式控制中的“%”和宽度之间加一个“-”号来实现,选项C错误;printf的输出精度由变量的类型决定,与域宽无关,选项D错误。
2.有以下程序
main() {
int a=3;
a+=a-=a*a;
printf( \\(C)
A. 9
B. 3
C. -12
D. 0
解析:对于表达式a+=a-=a*a相当于a=a-(a*a),然后计算a=a+a,a的初值为3,则表达式的值为-12。
3.有如下程序段:
int x=12;
double y=3.141593;
printf(\\(C)
A. 12 3.141593
B. 12, 3.141593
C. 123.1415930
D. 123.141593
解析:本题考查printf语句。printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf(\\
4.若有以下程序
#include <stdio.h>
main() {
int b=10, a=-11;
a %= b %= 4;
printf(\\(C)
A. 1 2
B. -1 -2
C. -1 2
D. 1 -2
解析:对于表达式a %= b %= 4为复合的赋值运算,结合性自右至左,相当于先计算b=b%4,a=a%b;结果的符号和第一个操作数的符号相同,因此b为2,a的结果为-1.
5.有以下程序
main() {
int a=2, c=5;
printf( \\(B)
A. a=%2,b=%5
B. a=%d,b=%d
C. a=2,b=5
D. a=%%d,b=%%d
解析:输出“%”,可以在格式控制中用“%%”表示,将输出一个“%”,而没有%表示格式符的开始,%%d不能表示格式符,因此仅输出:a=%d,b=%d。
6.有以下程序
main() {
char a,b,c,d;
scanf(\\(C)
A. 12
B. 1234
C. 12 3
D. 12 34
解析:scanf和getchar函数分别从键盘上读入一个字符,因此输入12空格34,则变量a中存放的为1,b中存放2,c中存放空格,d中存放3。
7.若变量已正确定义为int型,要通过语句 scanf(\\(C)
A. □□□1,2,3
B. 1,□□□2,□□□3
C. 1,2,3
D. 1□2□3
解析:本题主要考查scanf函数的输入格式问题。
scanf函数的一般形式为:scanf(格式控制字符串,地址1,地址2,…);
格式控制字符串是由双撇号括起来的字符串,它主要由两种类型的字符组成:
①格式说明符由“%”和格式字符组成,如%c,%d,%s,%f等。其作用是将输入的数据转换为指定的格式,赋给scanf的二个参量(是地址1)所指定的内存单元(可能一次使用多个)中。格式说明以“%”字符为标志。
②普通字符,是需要用户在输入时原样输入的字符。
在本题中格式控制字符串为“%d,%d,%d”,表示按十进制输
8.设变量均已正确定义,若要通过 scanf(\\(C)
A. 10□X20□Y
B. 10□X 20□Y
C. 10X 20Y
D. 10□X□20□Y
解析:
9.设有定义: int a; float b; 执行 scanf(\\(B)
A. 876和543.0
B. 87和6.0
C. 87和543.0
D. 76和543.0
解析:在输入函数scanf的输入格式符%2d%f中,2d表示输入的数据的宽度为2,所以当从键盘输入876543.0<CR>时,这时把输入数字串的前两位87赋给变量a,然后将紧接着将6按照格式控制符%f的形式赋给变量b,所以b的值为6.000000。
10.若有定义: int a,b; 通过语句 scanf(\\(C)
A. 3,5
B. 3 5
C. 3;5
D. 35
解析:在采用scanf这个函数输入数据时,要严格遵守其输入的规则定义。本题此函数定义的规则是,在两个整数之间加分号输入。
11.若有定义 int a; float b; double c; 程序运行时输入: 3 4 5 能把值3输入给变量a、4输入给变量b、5输入给变量c的语句是(B)
A. scanf(\\
B. scanf(\\
C. scanf(\\
D. scanf(\\
解析:scanf函数进行输入的时候,默认的输入间隔为空格、跳格和回车,变量a、b和c均为数值型数据,输入时间隔为空格,因此scanf函数的第一个表示格式的参数之间不用加入分隔符,而要输入double型数据,格式控制必须用%lf(或%le)。否则,数据不能正确输入。
12.设有定义: double a,b,c; 若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:此处□代表一个空格) □□1.0□□2.0□□3.0 则能进行正确输入的语句是(C)
A. scanf(\\
B. scanf(\\
C. scanf(\\
D. scanf(\\
解析:输入格式scanf(格式控制,输入项1,输入项2,…),其中在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以用实数指定小数位的宽度。输入double型数据,格式控制必须用%lf(或%le)。否则,数据不能正确输入。由于输入是一个字符流,scanf函数从这个字符流中按照格式控制指定的格式解析出相应数据,送到指定地址的变量中。
13.以下叙述中正确的是(A)
A. 当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键) 前,可以任意修改
B. 花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的
C. 空语句就是指程序中的空行
D. 复合语句在语法上包含多条语句,其中不能定义局部变量
解析:当使用scanf函数从键盘输入数据时,每行数据在未按下回车键之前,可以任意修改。但按下回车键后,scanf函数即接受了这一行数据,不能再修改。选项A正确,对于选项B,{}还可以表明复合语句的开头结尾,或者循环体的开头结尾等,选项B错误,而空语句为 ;,不是空行,选项C错误,在复合语句中可以定义变量为局部变量,选项D错误。
本文档预览:3600字符,共8404字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载