1C语言模拟试卷(1)一、选择题(1)在C语言提供的合法的关键字是A)swicthB)cherC)CaseD)default(2)在C语言中,合法的字符常量是A)'\084'B)'\x43'C)'ab'D)\0(3)若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是A)1B)2C)2.0D)2.5(4)合法的数组定义是A)inta[]=string;B)inta[5]={0,1,2,3,4,5};C)vhsts=string;D)chara[]={0,1,2,3,4,5};(5)若t为double类型,表达式t=1,t=5,t++的值是A)1B)6.0C)5.0D)1.0(6)若有定义和语句:chars[10];s=abcd;printf(%s\n,s);则结果是(以下u代表空格)A)输出abcdB)输出aC)输出abcduuuuuD)编译不通过(7)若有定义和语句:int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf(%d,%d\n,*p,**pp);则输出结果是:A)10,20B)10,10C)20,10D)20,20(8)若有以下定义和语句:intu=010,v=0x10,w=10;printf(%d,%d,%d\n,u,v,w);则输出结果是:A)8,16,10B)10,10,10C)8,8,10D)8,10,10(9)若有以下定义和语句charc1='b',c2='e';printf(%d,%c\n,c2-c1,c2-'a'+’A’);则输出结果是:A)2,MB)3,EC)2,ED)输出项与对应的格式控制不一致,输出结果不确定(10)若有以下定义:chars[20]=programming,*ps=s;则不能代表字符’o’的表达式是A)ps+2B)s[2]C)ps[2]D)ps+=2,*ps(11)若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是for(i=5;i;i--)for(j=0;j4;j++){...}A)20B)25C)24D)30(12)若有以下定义和语句:char*s1=12345,*s2=1234;2printf(%d\n,strlen(strcpy(s1,s2)));则输出结果是A)4B)5C)9D)10(13)若有以下定义和语句:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则不能表示a数组元素的表达式是A)*pB)a[10]C)*aD)a[p-a](14)下面程序的输出是main(){char*s=121;intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'0';continue;}b=b+s[k]-'0';a=a+s[k]-'0';}while(s[k+1]);printf(k=%da=%db=%d\n,k,a,b);A)k=3a=2b=3B)k=3a=3b=2C)k=2a=3b=2D)k=2a=2b=3(15)下面程序的输出是main(){unsigneda=32768;printf(a=%d\n,a);}A)a=32768B)a=32767C)a=-32768D)a=-1(16)若有定义:intx,y;chara,b,c;并有以下输入数据(此处CR代表换行符,u代表空格):1u2CRAuBuCCR则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是A)scanf(x=%dy+%d,&x,&y);a=getchar();b=getchar();c=getchar();B)scanf(%d%d,&x,&y);a=getchar();b=getchar();c=getchar();C)scanf(%d%d%c%c%c,&x,&y,&a,&b,&c);D)scanf(%d%d%c%c%c%c%c%c:&x,&y,&a,&a,&b,&b,&c,&c);(17)以下程序输出的结果是main(){charw[][10]={ABCD,EFGH,IJKL,MNOP},k;for(k=1;k3;k++)printf(%s\n,&w[k][k]);}A)ABCDB)ABCDFGHEFG3KLIJMC)EFGKLD)FGHKL(18)若有以下的定义:inta[]={1,2,3,4,5,6,7,88,9,10},*p=a;则值为3的表式是A)p+=2,*(p++)B)p+=2,*++pC)p+=3,*p++D)p+=2,++*p(19)假定所有变量均已正确说明,下列程序段运行后x的值是a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;A)34B)4C)35D)3(20)在以下一组运算符中,优先级最高的运算符是A)=B)=C)%D)&&(21)若有以下定义和语句:intw[2][3],(*pw)[3];pw=w;则对w数组元素非法引用是A)*(w[0]+2)B)*(pw+1)[2]C)pw[0][0]D)*(pw[1]+2)(22)若有以下程序片段:charstr[]=ab\n\012\\\;printf(%d,strlen(str));上面程序片段的输出结果是A)3B)4C)6D)12(23)函数调用:strcat(strcpy(str1,str2),str3)的功能是A)将串str1复制到串str2中后再连接到串str3之后B)将串str1连接到串str2之后再复制到串str3之后C)将串str2复制到串str1中后再将串str3连接到串str1之后D)将串str2连接到串str1之后再将串str1复制到串str3中(24)以下对C语言函数的有关描述中,正确的是A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B)C函数既可以嵌套定义又可以递归调用C)函数必须有返回值,否则不能使用函数D)C程序中有调用关系的所有函数必须放在同一个源程序文件中(25)以下叙述中不正确的是A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。B)在C中,在调用函数时,实参数和对应形参在类型上只需赋值兼容。C)在C中,外部变量的隐含类别是自动存储类别。D)在C中,函数形参可以说明为register变量。(26)以下程序的输出结果是#includestring.h4subl(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chara,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A)BABBABB)ABBBBAC)BABABAD)BAABBA(27)设有如下定义:structsk{inta;floatb;}data,*p;若有p=&data;,则对data中的a域的正确引用是A)(*p).data.aB)(*p).aC)p-data.aD)p.data.a(28)以下对枚举类型名的定义中正确的是A)enuma={one,two,three};B)enuma{one=9,two=-1,three};C)enuma={one,two,three};D)enuma{one,two,three};(29)下列不正确的转义字符是A)'\\'B)'\‘C)'074'D)'\0'(30)若有以下定义:chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为A)floatB)intC)charD)double(31)设x和y均为int型变量,则执行下的循环后,y值为for(y=1,x=1;y=50;y++){if(x=10))break;if(x%2==1){x+=5;continue;}x-=3;}A)2B)4C)6D)8(32)给出以下定义:charx[]=abcdefg;chary[]={'a','b','c','d','e','f','g'};则正确的叙述为A)数组x和数组y等价B)数组x和数组y的长度相同C)数组x的长度大于数组y的长度D)数组x的长度小于数组y的长度(33)以下叙述中不正确的是A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效5(34)假定a和b为int型变量,则执行以下语句后b的值为a=1;b=10;do{b-=a;a++;}while(b--0);A)9B)-2C)–1D)8(35)设j为int型变量,则下面for循环语句的执行结果是for(j=10;j3;j--){if(j%3)j--;--j;--j;printf(%d,j);}A)63B)74C)62D)73(36)设有以下宏定义:#defineN3#defineY(n)((N+1)*n)则执行语句:z=2*(N+Y(5+1));后,z的值为A)出错B)42C)48D)54(37)设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是A)k=*P1+*P2;B)p2=k;C)P1=P2;D)K=*P1*(*P2);(38)设有如下定义:intarr[]={6,7,8,9,10};int*ptr;则下列程序段的输出结果为ptr=arr;*(ptr+2)+=2;printf(%d,%d\n,*ptr,*(ptr+2));A)8,10B)6,8C)7,9D)6,10(39)以下程序的输出结果是main(){inti,k,a[10],p[3]:K=5;for(i=0;i10;i++)a[i]=i;for(i=0;i3;i++)p[i]=a[i*(i+1)];for(i=0;i3;i++)k+=p[i]*2;printf(%d\n,k);}A)20B)21C)22D)23(40)执行以下程序段后,m的值为inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));6A)15B)14C)13D)12(41)有以下程序段main(){union{intk;chari[2];}*s,a;s=&a;s-i[0]=0x39;s-i[1]=0x38;printf(%x\n,s-k);}输出结果是A)3839B)3938C)380039D)390038(42)有以下程序#includemain(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf(%d,%d\n,a,b);}输出结果是A)2,1B)3,2C)4,3D)2,-1(43)设有如下定义:int(*ptr)();则以下叙述中正确的是A)ptr是指向一维组数的指针变量B)ptr是指向int型数据的指针变量C)ptr是指向函数的指针,该函数返回一个int型数据D)ptr是一个函数名,该函数的返回值是指向int型数据的指针(44)有以下程序#includestructstu{intnum;charname[10];intage;};voidfun(structstu*p){printf(%s\n,(*p).name);}main(){structstustudents[3]={{9801,Zhang,20},{9802,Wang,19},{9803,Zhao,18}};7fun(students+2);}输出结果是A)ZhangB)ZhaoC)WangD)18(45)有以下程序main(){chara[]