国家二级(C语言)机试模拟试卷449
选择题
1.有以下程序:
#include <stdio.h>
main()
{ char a,b,c,d;
scanf(\\(D)
A. 12
34
B. 12
C. 1234
D. 12
3
解析:按照从键盘输入的数据可以判断字符1给了变量a,字符2给了变量b,字符<CR>即回车给了变量c,字符3给了变量d。所以打印输出的结果为D)选项。
2.有以下程序:
#include<stdio.h>
main()
{int i,j;
for(i-3;i>=1;i–)
{for(j=1;j<=2;j++)printf(\\(B)
A. 4 3
2 5
4 3
B. 4 5
3 4
2 3
C. 2 3
3 4
4 5
D. 2 3
3 4
2 3
解析:第一次执行外循环,i的值为3,第一次执行内循环j的值为1,j<=2条件成立,打印i+j的值,即4;第二次执行内循环j的值为2,j<=2条件成立,打印i+j的值,即5;再判断条件不成立,打印回车换行符,跳出内循环。第二次执行外循环,i的值为2,内循环的执行同第一次一样,所以打印3和4,打印回车换行,结束内循环。第三次执行外循环i的值为1,同理内循环中打印2和3,打印回车换行符,结束内循环。
3.有以下程序:
main()
{int n=0;
do{n++;
printf(\\(C)
A. 1
2
B. 1
2
3
C. )1
2
3
4
D. 1
解析:本题考查do…while循环。存do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值。当执行完第三次循环时,得到n=3,while循环表达式仍然成立,接着执行直到n=4,表达式不成立,跳出循环,结束程序。
4.下列叙述中错误的是( )。(C)
A. 在C语言中,对二进制文件的访问速度比文本文件快
B. 在C语言中,随机文件以二进制代码形式存储数据
C. 语句FILE fp;定义了一个名为fp的文件指针
D. C语言中的文本文件以ASCII码形式存储数据
解析:在C语言中,文件指针实际上是指向一个结构体类型的指针,一般称这个结构体类型名为FILE,可以用此类型名来定义文件指针。定义文件类型指针变量的一般形式为:FILE *指针变量名;选项C)中少了“*”,所以选项C)错误。
5.有以下程序:
#include
int b=3:
int fun(int*k)
{b=*k+b;return(b);}
main()
{int a[10]={1,2,3,4,5,6,7,8},i;
for(i=2;i<4;i++){b=fun(&a[i])+b;printf(“%d”,b);}
printf(“\n”);
}
程序运行后的输出结果是( )。(B)
A. 12 14
B. 12 32
C. 10 14
D. 10 20
解析:i=2时,fun(&a[2])返回值是b=b+a[1]=3+3=6,b=b+b=6+6=12;i=3时,fun(&a[3])返回值是b=b+a[3]=12+4=16,b=b+b=16+16=32。
6.有以下程序
#include
typedef struct { int b, p; } A;
void f(A c) /* 注意:c是结构变量名 */
{ int j;
c.b += 1; c.p+=2;
}
main()
{ int i;
A a={1,2};
f(a);
printf(\\(A)
A. 1,2
B. 2,4
C. 1,4
D. 2,3
解析:考查结构体变量作为函数实参整体传递,也是一种值传参,形参的变化不能影响到实参,所以调用函数f(a)对a中的数据没有影响,输出结果为1,2,答案选A)。
7.下列叙述中正确的是( )。(D)
A. 循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B. 在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C. 在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D. 循环队列中元素的个数是由队头指针和队尾指针共同决定的
解析:循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B与C错误。
8.以下选项中,能用作数据常量的是( )。(A)
A. 115L
B. 0118
C. 1.5e1.5
D. 0115
解析:A选项中115L表示115是长整型数据,合法。B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B错误。C选项中e后面应该是整数不能是小数1.5,所以C错误。D选项中八进制常量应该是数字“0”开始,而不是字母“o”开始。
9.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。(C)
A. scanf(\\
B. scanf(\\
C. scanfi[\\
D. scanf(\\
解析:程序语句“int a,b,c,*p=&c;”定义了3个整型变量a,b,c和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf(\\
10.当变量c的值不为2、4、6时,值也为\\(D)
A. (c>=2&&c<=6)&&(c%21=1)
B. (c==2)||(c==4)||(c==6)
C. (c>=2&&c<=6)&&!(c%2)
D. (c>=2&&c<=6)||(c!=3)||(c!=5)
解析:逻辑或运算符中只要有一个运算量为真结果就是真,当c>=2&&c<=6条件不成立时c的值肯定不是2、3、4、5、6,所以c!=3,与c!=5均成立。所以D选项的结果一定为真。
11.有以下程序:
#include<stdio.h>
main()
{ints;
scanf(\\(B)
A. 66656
B. 6566456
C. 66666
D. 6666656
解析:switch语句的执行流程是:首先计算switch后面
本文档预览:3600字符,共14061字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载