国家二级C语言(C语言程序设计)机试模拟试卷15
选择题
1.有以下程序
#include<stdio.h>
main(){char c1,c2,c3,c4,c5,c6;
scanf(\\(C)
A. 1256
B. 1278
C. 1245
D. 1267
解析:当用scanf函数从键盘输入数据时,每行数据的未尾按下回车键(Enter键)之前,可以任意修改。但按下回车键putchar(c1)(Enter键)之后,scanf函数即接受了这一行数据,不能再回去修改。所以本题中,当输入123<CR>时,变量c1、c2、c3的值分别为1、2、3,当输入45678<CR>时,变量c5、c6的值4和5。所以用输出函数putchar(c1)输出1,putchar(c2)输出2,printf(\\
2.若有定义语句:double x,y,*px,*py;执行px=&x;py=&y;正确的输入语句是(C)
A. scanf(\\
B. scanf(\\
C. scanf(\\
D. scanf(\\
解析:本题考查scanf语句。scanf(1函数的一般格式为:scanf(\\
3.以下程序段完全正确的是(A)
A. int k,*p=&k;scantf(\\
B. int*p;scanf(\\
C. int*p;scanf(\\
D. int k,*p;*p=&k;scanf(\\
解析:选项B)没有对指针进行初始化,无效指针。选项C)错在没有对指针进行初始化,无效指针,并且在scanf(\\
4.若在定义语句:int a,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是(C)
A. scanf(\\
B. scanf(\\
C. scanf(\\
D. scanf(\\
解析:程序语句int a,b,c,*p=&c;定义了三个整型变量a,b,c,和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf(“格式控制字符串”,地址列表)”,其中的地址列表应当是存放输入数据变量的地址。
5.有以下程序段
int j;float y;
char name[50];
scanf(\\(C)
A. 55566.0
B. 7777.0
C. 566.0
D. 566777.0
解析:因为在输入格式控制符中指定变量j的输入格式控制符为“%2d”,即变量j所占的宽度为2,所以变量j只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项C)。
6.有以下程序段
char name[20];
int num;
scanf(\\(D)
A. name=Lili
B. Lili num=
C. name=Lilinum=1001
D. Lili
解析:在题目中以字符串的形式给字符数组赋值,所以字符数组name的值为Lili。
7.sl和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是(D)
A. if(s1>s2)S;
B. if(strcmp(s1,s2))S;
C. if(strcmp(s2,s1)>0)S;
D. if(strcp(s1,s2)>0)S;
解析:字符串标记使用strcmp函数,该函数有两个参数分别是需要比较大小的两个字符串s1和s2,如果s1大于s2则返回值大于0,如果s1小于s2则返回值小于0,否则s1和s2相同返回0。题目要求s1大于s2时执行语句S,因此strcmp(s1,s2)的返回值大于o时执行S。
8.把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是(D)
A. k%2
B. k%2==1
C. (k%2)!=0
D. !k%2==1
解析:本题考查if语句和if语句构成的选择。选项A)表示k除以2的余数,如果余数为1则if成立,否则不能成立,即if判断k是否为奇数;选项B)是判断k除以2的余数是否等于1,函数和选项A)相同;选项C)表示k除以2的余数不为0,和选项A)一致;选项D)中,!运算符优先级高于%预算符,先计算!k,然后再取余数,并判断余数是否等于1。
9.以下是if语句的基本形式:
if(表达式)语句
其中“表达式”(D)
A. 必须是逻辑表达式
B. 必须是关系表达式
C. 必须是逻辑表达或关系表达
D. 可以是任意合法的表达式
解析:本题考查if语句,C语言中if语句中的表达式可以是任意合法的表达式。
10.有以下程序
main(){int a=0,b=0,c=0,d=0;
if(a=1)b=1;
c=2:
else d=3;
printf(\\(C)
A. 0,0,0,3
B. 1,1,2,0
C. 编译有错
D. 0,1,2,0
解析:if语句的格式为:
ifr表达式) 语句1
else 语句2
if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句。因此题目“if(a=1)b=1;c=2;else d=3;”,if分支有两条语句,没构成复合语句。
11.有以下程序
main(){int x=1,y=0;
if(!x)y++;
else if(x==0)
if(x)y+=2;
else y+=3;
printf(\\(B)
A. 2
B. 0
C. 1
D. 3
解析:x=1,if和elseif的条件都不满足,故y值不改变输出。
12.若变量己正确定义,在if(W)printf(\\(C)
A. ch=getchar()
B. a==b+c
C. a<>b+c
D. a++
解析:在if()语句的括号是一个合法的C语言表达式即可,如果表达式的值为0,则不执行if语句,否则执行if语句,而在选项C)中,符号<>不是C语言的合法运算符,如果要表达a大于或小于b+c可用a!=b+c或(a>b+c)||(a<b+c)来表达,而不能使用a<>b+c。所以它不是一个合法的C语言表达式。
13.有以下程序段
int a,b,c;
a=10;b=50;c=30;
if(a>b)a=b,b=c;c=a;
printf(\\(C)
A. a=10 b=50 c=30
B. a=10 b=30 c=10
C. a=10 b=50 c=10
D. a=50 b=30 c=50
解析:本题的程序段首先定义三个整型变量a,b,c,并且其初始值分别等于10,50,30,然后判断a>b是否成立,如果条件成立,则把b的值赋给a,把c的值赋给b。由a和b的初始
本文档预览:3600字符,共7936字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载