-> -> ->
2010年全国计算机等级考试专家预测试卷(二)二级公共基础知识和C语言程序设计(五)
时间:2011-03-12 10:55:14
微信搜索关注"91考试网"公众号,领30元,获取事业编教师公务员等考试资料40G
,4,5,6C.3,4,5,6,7 D.2,3,4,5,1 参考答案: B 函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从O开始,每个元素都自加1。----------------------------------------22、有以下程序:void.funl(char*P){char*q;q=p;while(*q!=''\0''){(*q)++;q++;}}main(){char a[]={"Program"),*p;p=&a[3];funl(p);printf("%s\n",a);)程序执行后的输出结果是( )。 A.Prohsbn B.PrphsbnC.Progsbn D.Program 参考答案: A 本调中使用了函数的调用,由funl函数中的while循环可知,循环的作用是为了把q所指向的内容增加1,而从主函数传到函数时是把下标为3开始传,因此当调用函数执行完后,传过去的字符串为''hsbn'',前面不变。----------------------------------------23、 若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是()。int t[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][o]; A.t[2][0] B.t[2][2]C.t[l][2]D.t[2][1] 参考答案: C 从for循环可知pt是指向行的首地址的指针变量,因此由指针的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。----------------------------------------24、 有以下程序:main(){union{char ch[2];int d;}s;s.d=0x4321;printf("%X,%x\n",s.ch[o],s.ch[l]);}在16位编译系统上,程序执行后的输出结果是( )。 A.21,43B.43,21 C.43,00D.21,00 参考答案: A s是一个公用体,d的值分别与ch中的两上元素的值相同,d的高位放大ch[1]中和低位放在ch[0]中,因此输出的结果为21,43。----------------------------------------25、 以下程序的输出结果是( )。main(){int a=1,b;for(b=1,b<=10;b++){if(a>=8)break;iI(a%2==1){a+=5;continue;)a=3;)printf("%d\n",b); A.3 B.4C.5D.6 参考答案: B 当b=1时,a=1,第二个if语句成立,此时a=6,返回for循环;当b=2,两个if语句都为假,此时a一3,再返回循环;当b=3,第二个if成立,此时a=8,继续循环中;当b=4,第一个if成立,退出for循环小组时b为4,a为8。----------------------------------------26、 有以下程序:main(){int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12,},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;jA.i-1 B.i C.i+1 D.4-i 参考答案: B 本题中要求输出右上半角的数,对角线上的数的下标相同,所以j=i。----------------------------------------27、 设有以下定义和语句:char str[20]="Program",*p;p=str;则以下叙述中正确的是( )。 A.*p与str[0]的值相等B.str与p的类型完全相同C.str数组长度和p所指向的字符串长度相等D.数组str中存放的内容和指针变量p中存放的内容相同 参考答案: A 本题中,str为一个字符型数组,p为字符型指针变量,其指向str的首地址,*p的值为str[0]中的内容,百其类型、长度不同,内容也另有第一个相同,故选择A选项。----------------------------------------28、 有下列程序:#include"stdio.h"main(){ int x=0:int y=0;while(x<7&&++y){ y--;x++;}printf("%d,%a",y,x);}程序的输出结果是( )。 A.0,7 B.7,7C.0,6 D.1,6 参考答案: A 本题考查while循环。在while循环中,y自加每次循环都加1,在循环体内y--每次减l,所以总的y值不变,当x自加到7时不满足循环条件,循环结束。----------------------------------------29、 下列程序的运行结果是( )。#includemain(){ int a=2,b=3,c=4;if(aA.2 B.3 C.5D.4 参考答案: C 本题考查if else语句。第一个if语句,先判断条件,发现a----------------------------------------30、 #define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5f,正确的宏定义语句为( )。的值的函数 A.#define f(x)5*x*x+5*x+5 B.#define f5*x*x+5*x+5C.#define f(a)(5*a*a+5*a+5)D.#define(5*x*x+5*x+5)f(x) 参考答案: C 本题考察带参数宏的格式:#deftne标识符(形参表)形参表达式。其功能:把预处理程序中出现的所有带实参的宏名,展开形成由实参组成的表达式。故c正确。----------------------------------------31、 函数调用strcat(strcpy(strl,str2),str3)的功能是( )。 A.将字符串strl复制到字符串str2中后再连接到字符串str3之后B.将字符串strl连接到字符串str2之后再复制到字符串str3之后C.将字符串str2复制到字符串strl之后再将字符串str3连接到字符串strl之后D.将字符串str2连接到字符串strl之后再将字符串strl复制到字符串str3中 参考答案: C strcat(s1,s2)函数的功能是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制到给s1字符串,要保证s1的容量。----------------------------------------32、 若有定义"double a;",则正确的输入语句是( )。 A.scanf(B.scanf(C.scanf(D.scanf( 参考答案: D 本题考察scanf函数的调用形式:scanf(格式字符串,输入项地址表)。题中定义变量a为双精度型变量,双精度变量的格式符为“le”;变量的地址用取地址符“&”加变量名表示,所以选项D正确。----------------------------------------33、 若希望下列的程序运行后输出25,程序空白处的正确选项是( )。main(){int i,j=50,a[]={7,4,10,5,8);for( )j+=a[i];printf("%d",j-40);} A.i=1;i<4;++i B.i=1;i<3;++iC.i=4;i>2;i-- D.i=2;i<4;++i 参考答案: D 要想使程序输出是25,则在printf中,j一40=25,j=65,而j初值是50,j十=a[i];也可写成i=J十a[i];j=50+a[i]=65,当a[i]=15条件满足数组下标由。开始,当i=2时,指向元素10,i=3时,lO+5=15退出循环体,所以选项D正确。----------------------------------------34、 下列程序的输出结果是( )。#includemain(){ int a=0,i;for(i=1;i<5;i++){ switch(i){ case 0;case 3:a+=1;case 1:case 2:a=2;default:a+=3;)printf("%d",a);} A.19B.18C.6 D.8 参考答案: A 本题考查switch case开关语句,default退出继续循环。当i:1时,执行case 1,因为没有break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case 2,没有break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case 3,当a=a+1=11,没有break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,没有case语句,则执行defatllt,a=a+3=19,i=5不成立循环结束。----------------------------------------35、 下列能正确定义且赋初值的语句是( )。 A.int nl=n2=1;B.char c=99;C.float f=f+1;D.double x=1.2E5.6; 参考答案: B 在C语言规定中,可以在定义变量的同时给变量赋初值,选项A中n2没有定义;选项c中不能在赋值表达式的右边出现变量本身,选项D中字母E后面的数应该为整数,无线不对。----------------------------------------36、 下列程序的输出结果是( )。main(){ int a=6,b=3,c;if(aA.3,6,18 B.3,6,2C.6,3,18 D.6,3,2 参考答案: B 本题考查if else语句。如果if条件成立,则执行if下面的语句,不成立则执行else,先判断条件,发现a----------------------------------------37、 若有定义和语句;int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**pp);则输出结果是( )。 A.20,10B.20,20C.10,20 D.10,10 参考答案: D 本题考查指针变量的赋值。**pp是定义一个指针变量,语句pp=&p是将pp指向指针p,*p和**pp都是指针p所指的内存空间的内容,则b的值。----------------------------------------38、 下列程序的运行结果是( )。#includevoid fun(int*s,int*p){ static int t=3;*p=s[t];t--;)void main(){int a[]={2,3,4,5),k;int x;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}} A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5 参考答案: A 依据fun函数,可知其要实现的功能是将s中第(t+1)个元素以前的元素逆置赋给数组p。由于fun中函数定义了静态变量t=3,因此,main()函数中调用函数flan(a,&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。----------------------------------------39、 下列程序的输出结果是( )。#includemain(){ struct st{ int y,x,z;};union{long i;int j;char k;}un;printf("%d,%d",sizeof(struct st),sizeof(un)};} A.6,2B.6,4 C.8,4 D.8,6 参考答案: B 本题主要考查结构和联合内存使用的一些区别:结构中每个成员相互独立,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,联合所占用内存空间最长的成员占用的空间。----------------------------------------40、 标准库函数fgets(s,n,file)的功能是( )。 A.从文件file中读取长度为n的字符串存人字符数组s中B.从文件file中读取长度为不超过n一1个字符的字符串放到字符数组s中C.从文件file中读到n个字符串存入字符数组s中D.从文件file中读取长度为n一1个字符的字符串存入字符数组s中 参考答案: B 本题考察fgets()函数的使用调用形式为:fgets(s,n,fp)。fgets函数参数说明:“s”可以是一个字符数组名,也可以是指向字符串的指针:“n”为要读取的最多的字符个数:“fp”是指向该文件型指针。fgets函数的功能是:从fp所指向的文件中读取长度不超过n一1个字符的字符串,并将该字符串放到字符数组s中,读入字符串后会自动在字符串未尾加入“O”结束符,表示字符串结束。
微信搜索关注"91考试网"公众号,领30元,获取公务员事业编教师考试资料40G