国家二级C语言机试(选择题)模拟试卷601
选择题
1.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。(D)
A. 下划线
B. 大写字母
C. 数字字符
D. 连接符
解析:C语言中标识符由字母、下划线或数字组成,且开头必须是字母或下划线。
2.设有定义:double x=2.12;,则以下各项中不能完整输出变量x值的语句是( )。(A)
A. printf(”x=%5.0f\n”,x);
B. printf(”x=%f\n”,x);
C. printf(”x=%lf\n”,x);
D. printf(”x=%0.5f\n”,x);
解析:“格式控制字符串”部分为“%f”表示按照浮点型输出,故B选项正确;加入长度格式符l即“%l”表示按照双精度浮点型输出,故C选项正确;若要控制输出精度,则需以“.”开头,后跟十进制整数,如“%.2f”或“%0.2f”,故D选项正确;控制输出宽度则是用整数表示,如“%5f”,A选项中“%5.0f’表示输出宽度为5,右对齐,小数点后保留位数为0,所以结果输出为2,不能完整输出x。
3.有以下程序:
#include <stdio.h>
int b=2;
int fun(int*k)
{
b=*k+b;
return(b);
}
void 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”);
}
程序运行后的输出结果是( )。(C)
A. 10 12
B. 8 10
C. 10 28
D. 10 16
解析:因为b是全局变量,所以它的值在整个程序结束才会消失。for循环中,第一次循环,i=2,a[2]=3,所以fun(&a[i])=3+2=5,b=5,所以b=fun(&a[i])+b=5+5=10;第二次循环,b=10,然后fun(&a[i])代入a[3]=4,这时fun(&a[i])=10+4=14,所以b=fun(&a[i])+b=14+14=28。
4.设有如下程序段:
int a[8]={1,2};
int b[]={0};
char c[2]={’\0’,”B”};
char d=”AB\0”;
以下叙述中正确的是( )。(A)
A. 只有a,b的定义是合法的
B. a,b,c,d的定义都是合法的
C. 只有a,b,c的定义是合法的
D. 只有c的定义是合法的
解析:int a[8]={1,2}定义了一个长度为8的整型数组,并初始化了数组的前2项;定义整型数组b,没有指定长度,但为1个元素赋值0,所以自动指定长度为1,b定义是合法的;char c[2]={’\0’,\\
5.一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为( )。(B)
A. 219
B. 229
C. 230
D. 231
解析:二叉树中,度为0的结点数等于度为2的结点数加1,度为0的结点即叶子结点有80个,则度为2的结点数为79,总结点数为80+70+79=229,故B选项正确。
6.有以下程序:
#include <stdio.h>
#include <string.h>
main()
{
char str[]={\\(B)
A. 13,13
B. 13,14
C. 13,15
D. 14,15
解析:strlen返回字符串的长度,结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个’\0’,所以结果为13+1=14。
7.执行以下程序段后,s的值为( )。
int a[]={1,2,3,4,5,6,7,8,9},s=0,k;
for(k=0;k<8;k+=2)
s+=*(a+k);
printf(”%d\n”,s);(B)
A. 13
B. 16
C. 17
D. 45
解析:数组元素为:a[0]=1,a[1]=2…a[8]=9。k=0时,s=s+*(a+k)=0+1=1;k=2时,s=1+*(a+2)=1+3=4;k=4时,s=4+5=9;k=6时,s=9+7=16。
8.有以下程序:
#include <stdio.h>
main()
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2==0)continue;x++;
}
x++;
}
printf(”x=%d\n”,x);
}
程序的运行结果是( )。(C)
A. x=4
B. x=6
C. x=8
D. x=12
解析:第一次循环:i=0,执行x++后x=1,执行内层循环j=0,由于j%2!=0时才执行x++,即只有j取1和3时,执行x++,此时x=1+1+1=3,跳出内层循环,执行下一条语句x++,x=4。第二次循环:x=1时,重复上述循环,共执行两次循环,故x最终结果是4*2=8。
9.若有以下程序:
#include <stdio.h>
int f(int m)
{
static int n=0;
int a=2;
n++;a++;
return n+m+a;
}
main()
{
int k;
for(k=0;k<4;k++)
printf(”%d,”,f(k));
}
程序运行后的输出结果是( )。(D)
A. 3,5,7,9,
B. 4,7,10,13,
C. 4,5,6,7,
D. 4,6,8,10,
解析:本题中,k为0时,retur
本文档预览:3600字符,共9476字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载