特意为大家整理的09年4月全国计算机等级二级C语言考前练习,希望对大家的备考有好的帮助!
1.以下程序运行后,输出结果是()
#include
ss(char *s)
{char *p=s;
while(*p)p++;
return(p-s);
}
main()
{char*a="abded";
inti;
i=ss(a);
printf("%d\n",i);
}
A)8
B)7
C)6
D)5
2.若有如下程序:
int sub()
{static int n=1;
int x=1;
x*=n;n++;
return x;}
main()
{int n,t=1;
for(n=1;n<6;n++)t*=sub();
printf("%d\n",t);}
则程序运行后的输出结果是()
A)15
B)120
C)34560
D)-30976
3.在C语言中,函数的隐含存储类别是()
A)static
B)auto
C)extern
D)register
4.有以下程序:
intf1(doublea)
{returna*a; }
intf2(doublex,doubley)
{doublea,b;
a=f1(x);
b=f1(y);
returna+b;
}
main()
{doublew;
w=f2(1.1,2.0);
…
}
变量w中的值是()
A)5.21
B)5
C)5.0
D)0.0
5.下面被调用函数sub的函数值的类型是()
sub(float a)
{float b;
b=a*a+1;
return b;}
A)单精度型
B)双精度型
C)空类型
D)整型
6.若有以下定义语句:
doublea[5];inti=0;
能正确给a数组元素输入数据的语句是()
A)scanf("%lf%lf%lf%lf%lf",a);
B)for(i=0;i<=5;i++)scanf("%lf",a+i);
C)while(i<5)scanf("%lf",&a[i++]);
D)while(i<5)scanf("%lf",a+i);
7.以下程序的输出结果是()
main()
{ charss[16]="test\0\n\"";
printf("%d,%d\n",strlen(ss),sizeof(ss));
}
A)4,16
B)7,7
C)16,16
D)4,7
8.以下说法正确的是()
A)宏定义是C语句,所以要在行末加分号
B)可以使用#undef命令来终止宏定义的作用域
C)在进行宏定义时,宏定义不能层层置换
D)对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换
9.以下程序的输出结果是()
#include
main()
{struct stru{int a,b;
char c[6];
};
printf("%d\n",sizeof(stru));
}
A)2
B)4
C)8
D)10
10.若有如下定义:
int s[3];
则下面表达式中不能代表数组元素s[1]的地址的是()
A)&s[1]
B)&s[0]+1
C)s+1
D)s++
答案:1.D 2.B 3.C 4.C 5.D 6.C 7.A 8.B 9.D 10.D
11.若以下对fun函数的调用是正确的:
x=fun(fun(a,b,c),(a+b,a+c),a+b+c);
则fun函数的形参个数为()
A)3
B)4
C)5
D)6
12.若有说明:int*p, m=5; n;,以下正确的程序段是()
A)p=&m;
scanf("%d",&p)
B)p=&n;
scanf("%d",&p)
C)scanf("%d",&p)
p=&n;
D)p=&n;
p=&m;
13.以下程序调用findmax函数返回数组中的最大值
findmax(int*a,int n)
{ int*p,*s;
for(p=a,s=a;p-a if()s=p;
return(*s);
}
main()
{ intx[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是()
A)p>s
B)*p>*s
C)a[p]>a[s]
D)p-a>p-s
14.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是()
A)p=2*(int*)malloc(sizeof(int));
B)p=(int*)calloc(2*sizeof(int));
C)p=(int*)malloc(2* sizeof(int));
D)p=2*(int*)calloc(sizeof(int));
15.下列程序的输出结果是()
main()
{char *p1,*p2,str[50]="xyz";
p1="abcd";
p2="ABCD";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
}
A)xyabcAB
B)abcABz
C)Ababcz
D)XycdBCD
16.以下叙述中不正确的是()
A)一个变量的作用域完全取决于变量定义语句的位置
B)全局变量可以在函数以外的任何部位进行定义
C)局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用
D)一个变量说明为static存储类是为了限制其他编译单位的引用
17.交换两个变量的值,不允许用临时变量,应该使用下列哪一个位运算符()
A)~
B)&
C)^
D)|
18.下面的说法不正确的是()
A)函数调用时,先求出实参表达剑缓蟠胄尾巍6褂么蔚暮曛皇墙屑虻サ淖址婊?BR> B)函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,在展开时也要分配内存单元,进行值传递
C)对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏名有类型
D)调用函数只可得到一个返回值,而用宏可以设法得到几个结果
19.fscanf函数的正确调用形式是()
A)fscanf(fp,格式字符串,输出表列);
B)fscanf(格式字符串,输出表列,fp);
C)fscanf(格式字符串,文件指针,输出表列);
D)fscanf(文件指针,格式字符串,输入表列);
20.以下程序的运行结果是()
# define MAX 10
int a[MAX],i;
main()
{ printf("\n");sub1();sub3(a);sub2();sub3(a);
}
sub2()
{ int a[MAX],i,max;
max=5;
for(i=0;i }
sub1()
{for(i=0;i }
sub3(int a[])
{ int i;
for(i=0;i printf("\n");
}
A)0 2 4 6 8 10 12 14 16 18
0 1 2 3 4
B)0 1 2 3 4
0 2 4 6 8 10 12 14 16 18
C)0 1 2 3 4 5 6 7 8 9
0 1 2 3 4
D)0 2 4 6 8 10 12 14 16 18
0 2 4 6 8 10 12 14 16 18
答案:11.A 12.D 13.B 14.C 15.D 16.B 17.C 18.B 19.D 20.D
3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/