模拟试题集6套答案.docx 30页

  • 125.40 KB
  • 2022-04-22 11:38:21 发布

模拟试题集6套答案.docx

  • 30页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'模拟试卷1第一部分:基础知识(20题,共40分)1.若有定义:inta=8,b=5,C;,执行语句C=a/b+0.4;后,c的值为B。A)1.4B)1C)2.0D)22.若变量a是int类型,并执行了语句:a=‘A"+1.6;,则正确的叙述是D。A)a的值是字符CB)a的值是浮点型C)不允许字符型和浮点型相加D)a的值是字符‘A’的ASCII值加上1。3.不合法的main函数命令行参数表示形式是C。A)main(inta,char*c[])B)main(intarc,char**arv)C)main(intargc,char*argv)D)main(intargv,char*argc[])4.以下选项中不属于C语言的类型的是D。A)signedshortintB)unsignedlongintC)unsignedintD)longshort5.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是A。A)scanf("%d%d%d",&a,&b,d);B)scanf("%d%d%d",&a,&b,&d);C)scanf("%d%d%d",a,b,d);D)scanf("%d%d%d",a,b,*d);6.在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是D。A)a=20000+20000;B)a=4000*10;C)a=30000+10000;D)a=4000L*10L;(长整数常量后面要加L。没有加L,则默认为int类型,在16位系统下,int是16位的,占2个字节,有效范围是-32768到+32767,A、B、C的选项都会超出这个范围)7.以下叙述正确的是B。A)可以把define和if定义为用户标识符B)可以把define定义为用户标识符,但不能把if定义为用户标识符C)可以把if定义为用户标识符,但不能把define定义为用户标识符D)define和if都不能定义为用户标识符(标识符是指常量、变量、语句标号以及用户自定义函数的名称)8.若定义:inta=511,*b=&a;,则printf("%dn",*b);的输出结果为D。A)无确定值B)a的地址C)512D)5119.以下程序的输出结果是C。A)5B)4C)6D)不确定main(){inta=5,b=4,c=6,d;printf("%dn",d=a>b?(a>c?a:c):(b));}10.以下程序中,while循环的循环次数是D。29 main(){inti=0;while(i<10){if(i<1)continue;(i的值没变,为0)if(i==5)break;i++;}}A)1B)10C)6D)死循环,不能确定次数1.设有以下说明语句,则下面叙述中正确的是B。typedefstruct{intn;charch[8];}PER;A)PER是结构体变量名B)PER是结构体类型名C)typedefstruct是结构体类型D)struct是结构体类型名2.设有以下说明语句structex{intx;floaty;charz;}example;则下面的叙述中不正确的是BA)struct结构体类型的关键字B)example是结构体类型名C)x,y,z都是结构体成员名D)structex是结构体类型3.设有以下语句typedefstruct S{ intg; char h;}  T;则下面叙述中正确的是B。A)可用S定义结构体变量         B)可以用T定义结构体变量C)S是struct类型的变量        D)T是struct S类型的变量1.已知structstudent{char*name;intstudent_n;chargrade;};structstudenttemp,*p=&temp;temp.name="chou";则下面不正确的是B。表达式值A、p->namechouB、(*P)->name+2hC、*P->name+2e29 D、*(P->name+2)O1.若有以下程序#includevoidf(intn);main(){voidf(intn);f(5);}voidf(intn){printf("%dn",n);}则以下叙述中不正确的是C。A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数fC)对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明D)函数f无返回值,所以可用void将其类型定义为无值型2.若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是C。A)ps+1B)*(ps+3)C)ps[0][2]D)*(ps+1)+33.在C语言中,形参的缺省存储类是A。(定义的变量默认是auto类型)A)autoB)registerC)staticD)extern4.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是A。A)p=2*(int*)malloc(sizeof(int));B)p=(int*)malloc(2*sizeof(int));C)p=(int*)malloc(2*2);D)p=(int*)calloc(2,sizeof(int));5.在说明语句:int*f();中,标识符f代表的是D。A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名6.若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是B。(复习fopen)A)fopen("A:userabc.txt","r")B)fopen("A:\user\abc.txt","r+")C)fopen("A:userabc.txt","rb")D)fopen("A:\user\abc.txt","w")7.以下不能正确进行字符串赋初值的语句是D。29 A)charstr[5]="good!";B)charstr[]="good!";C)char*str="good!";D)charstr[5]={‘g",‘o",‘o",‘d"};1.若有下面的说明和定义:(sizeof“对齐”处理,union取最大变量,struct成员字节数相加)structtest{intml;(2)charm2;(1)floatm3;(4)unionuu{charul[5];intu2[2];}ua;(5)}myaa;则sizeof(structtest)的值是A。A)12B)16C)14D)9(13)2.若有定义:intaa[8];。则以下表达式中不能代表数组元aa[1]的地址的是C。A)&aa[0]+1B)&aa[1]C)&aa[0]++D)aa+1第二部分:简单程序(12题,共30分)3.以下程序的输出结果是A。A)1B)0C)非0的数D)-1main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;(&&||判断返回0或者1)printf("%dn",d);}4.以下程序的输出结果是B。A)3B)4C)1D)9main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t=t+b[i][b[j][j]];printf("%dn",t);}012t=0012t=2012t=45.以下程序的输出结果是D。A)8B)3C)1D)7#include#includemain(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pb);//循环3次,最后一次把“abcdefg”拷给b2。printf("%dn",strlen(b2));}29 1.以下程序的输出结果是A。A)10B)18C)8D)15f(intb[],intm,intn){inti,s=0;for(i=m;imain(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}printf("%dn",a);}第一次循环:i=0;(i%10)==0满足,break出循环;i+=11;i变为11;a+=i;a变为11;第二次循环:i=11;(i%10)==0不满足,i--;i=10;运行for循环:(i%10)==0满足,break出循环;i+=11;i变为22;a+=i;a变为32.2.以下程序的输出结果是B。charcchar(charch){if(ch>=‘A’&&ch<=‘Z")ch=ch-‘A"+‘a";returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%sn",s);}A)abc+ABC=DEFdefB)abc+abc=defdefC)abcaABCDEFdefD)abcabcdefdef3.以下程序的输出结果是D。A)20B)24C)25D)15intf(){staticinti=0;29 ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i<5;i++)a+=f();printf("%dn",a);}s=1i=1a=1s=1+1i=2a=1+2s=1+2i=3a=3+3s=1+3i=4a=6+4s=1+4i=5a=10+51.以下程序的输出结果是D。A)4B)5C)6D)0unionmyun{struct{intx,y,z;}u;intk;}a;main(){a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf(“%dn”,a.u.x);}(这个是结构体和共用体的嵌套,共用体中套着结构体。对于a这个共用体变量,它的域要么为a.u要么为.k这两个是不同时存在的,因为他们共用一个存储空间(虽然空间大小不同)。共用体的域是并行的关系。对于a.u这个结构体来说,它有3个域,分别是a.u.x、a.u.y和a.u.z。他们是串行的关系,彼此互不影响。故这个题目在输出的时候前面虽然给a.u的各个域都给了值,但是后面有给a.k赋值,就会把前面的覆盖掉。最后x的会变成0。当然因为a的这两个域的大小不同,所以a.k只覆盖了a.u.x,而a.u.y和a.u.z还是有值的)2.下列程序执行后的输出结果是C。A)helloB)helC)hloD)hlmvoidfunc1(inti);voidfunc2(inti);charst[]="hello,friend!";voidfunc1(inti){printf("%c",st[i]);hoif(i<3){i+=2;func2(i);}i=2}voidfunc2(inti){printf("%c",st[i]);lif(i<3){i+=2;func1(i);}i=4}main()29 {inti=0;func1(i);printf("n");}1.下列程序执行后的输出结果是C。A)14B)15C)16D)13#includeinta[]={0,1,2,3,4,5,6,7,8,9};floatf(intn){if(n==1)returna[0];elsereturn((float)(n*f(n-1)+a[n])/n+1);1/10}main(){intn=9;printf(“f(%d)=%fn”,n+1,f(n));}模拟试卷2第一部分:基础知识(20题,共40分)1.以下叙述中正确的是B。A)C语言的源程序不必通过编译就可以直接运行B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C源程序经编译形成的二进制代码可以直接运行D)C语言中的函数不可以单独进行编译2.以下选项中不正确的实型常量是C。A)2.6E-1B)0.8324eC)-78.8745D)456e-2(在C语言中可以用两种形式表示一个实型常量,小数形式表示的实型常量必须要有小数点,C语言语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。如e3、5e3.6、.e、e等都是非法的指数形式。注意:在字母e或E的前后以及数字之间不得插入空格)3.若以下选项中的变量x1、x2、x3、x4已正确定义,则正确的赋值语句是C。A)x1=26.8%3 B)1+2=x2C)x3=0x12D)x4=1+2=3;4.有定义语句:intx,y;,若变量x得到数值11,变量y得到数值12,下面四组输入要通过scanf("%d,%d",&x,&y);语句使变量x得到数形式中,错误的是D。A)1112<回车>B)11,12<回车>C)11,12<回车>D)11 ,<回车>12<回车>5.设有以下定义int  a=0; double b=1.25;charc=’A’;#define  d  2则下面语句中错误的是D。A)a++; B)b++ C)c++; D)d++;6.有以下程序29 main(){ intx=102,y=012;y是八进制数 printf("%2d,%2dn",x,y);} 执行后输出结果是C。A)10,01B)002,12C)102,10D)02,101.设有如下程序段:intx=2002,y=2003;printf("%dn",(x,y));则以下叙述中正确的是D。A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出B)运行时产生出错信息C)输出值为2002 D)输出值为2003//逗号表达式(逗号表达式的要领:(1)逗号表达式的运算过程为:从左往右逐个计算表达式。(2)逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。(3)逗号运算符的优先级别在所有运算符中最低)2.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是(A)A)scanf("%d",pa);       B)scanf("%d",&a);C)scanf("%d",&pa);      D)scanf("%d",*pa);3.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是A。A)if((a>b)&&(b>c))k=1;         B)if((a>b)||(b>c)) k=1 else k=0;            else k=0;C)if(a<=b) k=0;            D)if(a>b) k=1;elseif(b<=c) k=1;    elseif(b>c) k=1;elsek=0;4.有以下程序main(){ inti,s=0;  for(i=1;i<10;i+=2) s+=i+1;  printf("%dn",s);}     程序执行后的输出结果是D。A)自然数1~9的累加和            B)自然数1~10的累加和C)自然数1~9中的奇数之和        D)自然数1~10中的偶数之和5.若程序中定义了以下函数 double myadd(doublea,doubleb)  {return(a+b);}29 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是A。A)doublemyadd(doublea,b);          B)doublemyadd(double,double);C)doublemyadd(doubleb,doublea);       D)doublemyadd(doublex,doubley);1.有以下函数定义 :  voidfun(intn,doublex){……}若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是C。A)fun(inty,doublem);B)k=fun(10,12.5);C)fun(x,n);D)voidfun(n,x);2.有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是D。A)5  B)6  C)8  D)93.有以下程序main(){ chara[]="abcdefg",b[10]="abcdefg";  printf("%d %dn",sizeof(a),sizeof(b));(尾巴有)}  执行后输出结果是C。A)7 7  B)88 C)810 D)10104.有以下定义#includechara[10],*b=a;不能给数组a输入字符串的语句是B。A)gets(a)   B)gets(a[0])   C)gets(&a[0]);   D)gets(b);5.下列选项中正确的语句组是DA)chars[8];s={"Beijing"};B)char*s;s={"Beijing"};C)chars[8];s="Beijing";D)char*s;s="Beijing";6.有以下程序main(){ unsignedchara,b;  a=4|3;  b=4&3;  printf("%d%dn",a,b) ;29 }执行后输出结果是A。A)7 0   B}0 7 C)1 1  D)430|&是按位运算4|3=00000100|00000011=00000111=74&3=00000100&00000011=00000000=01.若有定义:int *p[3];,则以下叙述中正确的是B。A)定义了一个基类型为int的指针变量p,该变量具有三个指针B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针C)定义了一个名为*p的整型数组,该数组含有三个int类型元素 D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素2.下列关于C语言数据文件的叙述中正确的是D。A)文件由ASCII码字符序列组成,C 语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件第二部分:简单程序(12题,共30分)3.以下程序的输出结果是C。 A}0,0B)0,1C)1,0 D)1,1main(){inta=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a);  printf("%d,%dn",k,m); )4.以下程序的输出结果是D。A)n=5  B)n=2 C)n=3   D)n=4main(){ inti,n=0;  for(i=2;i<5;i++)    { do          { if(i%3) continue;            n++;//6         }while(!i);//7        n++;//8    }  printf("n=%dn",n);}  i=2,执行continue跳出dowhile循环,执行第8行操作n=1;i=3,if条件不成立,执行第6行n++,n=2,再执行第8行操作n=3;i=4,执行continue跳出dowhile循环,执行第8行操作n=4;i=5结束for循环,结果输出45.以下程序的输出结果是D。A)函数调用出错  B)8  C)9  D729 charfun(charx,chary){ if(x=0;i--)  sum(&aa[i]);  printf("%dn",aa[0]);}2.以下程序的输出结果是C。A)0B)29C)31D)无定值fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,a);printf(“%d”,a);}   3.以下程序的输出结果是C。A)1,2,3,4,5,6,7,8,9,10,        B)10,9,8,7,6,5,4,3,2,1,29 C)9,2,7,4,5,6,3,8,1,10,        D)1,10,3,8,5,6,7,4,9,2,voidsort(inta[],intn){ inti,j,t;  for(i=0;iScore>p[j]->Score){t=p[i];p[i]=p[j];p[j]=t;}  printf("%5d %dn",s[1].Score,p[1]->Score);}  2.有以下程序#includemain(intargc,char*argv[]){ inti,len=0;  for(i=1;i后,程序的输出结果是BA)hellogoodB)hgC)helD)hellogoodmain()(intargc,char*argv[]){inti;for(i=1;istructNODE{ intnum; structNODE*next;};main(){ structNODE*p,*q,*r;intsum=0;p=(structNODE*)malloc(sizeof(structNODE)); q=(structNODE*)malloc(sizeof(structNODE));  r=(structNODE*)malloc(sizeof(structNODE));p->num=1;q->num=2;r->num=3;p->next=q;q->next=r;r->next=NULL;sum+=q->next->num;sum+=p->num;printf("%dn",sum);} 链表问题,在内存中开辟了3个空间,分别把地址放在指针变量p,q,r中分别对结构体元素赋值p->num=1;q->num=2;r->num=3;当程序执行到sum+=q->next->num;相当与sum=sum+(q->next->num)即sum=0+3的时候,因为sum开始初始为0,所以执行上面语句后sum的值变成3了sum+=p->num;相当与sum=sum+(p->m),即sum=3+1模拟试卷3第一卷1-6与模拟题1重复第一部分:基础知识(20题,共40分)1.略。2.略。3.以下程序段的输出结果是Cinta=1234;printf("%2dn",a);A)12B)34C)1234D)提示出错、无结果4.略。5.略。6.略。7.有以下程序段,while循环执行的次数是AA)无限次B)有语法错,不能执行C)一次也不执行D)执行1次intk=0while(k=1)//赋值语句k++;8.以下所列的C语言常量中,错误的是BA)0xFFB)1.2e0.529 C)2LD)"72"7.下列选项中,合法的C语言关键字是DA)VARB)cherC)integerD)default8.设有以下定义:inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*ptr)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是D。A)*((*ptr+1)[2]B)*(*(p+5))C)(*ptr+1)+2D)*(*(a+1)+2)9.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是CA)-3B)9C)–12D)61、a-=a*a2、a=a+(-6)10.设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为CA)不定值B)4C)3D)111.若执行以下程序时从键盘上输入9,则输出结果是BA)11B)10C)9D)8main(){intn;scanf("%d",&n);if(n++<10)printf("%dn",n);elseprintf("%dn",n--);}12.若变量c为char类型,能正确判断出c为小写字母的表达式是DA)"a"<=c<="z"B)(c>="a")||(c<="z")C)("a"<=c)and("z">=c)D)(c>="a")&&(c<="z")13.下列程序的输出结果是CA)非法B)a[4]的地址C)5D)3main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}14.设有intx=11;则表达式(x++*1/3)的值是AA)3B)4C)11D)12后自增比乘除优先级高,先预算自增,因为是后自增,所以先使用x*1=11,11/3=2,再使x增一,所以表达式的值是315.当调用函数时,实参是一个数组名,则向函数传送的是BA)数组的长度B)数组的首地址C)数组每一个元素的地址D)数组每个元素中的值29 7.以下只有在使用时才为该类型变量分配内存的存储类说明是BA)auto和staticB)auto和registerC)register和staticD)extern和registerC语言中提供了存储说明符auto,register,extern,static说明的四种存储类别。四种存储类别说明符有两种存储期:自动存储期和静态存储期。其中auto和register对应自动存储期。具有自动存储期的变量在进入声明该变量的程序块是被建立,它在该程序块活动时存在,退出该程序块时撤销。8.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是CA)EOFB)-1C)非零值D)NULL第二部分:简单程序(共30分)9.下列程序执行后的输出结果是AA)6B)7C)8D)9voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%dn”,b[0]);}10.下列程序的输出结果是BA)5B)6C)7D)8structabc{inta,b,c;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%dn",t);}11.下列程序执行后的输出结果是AA)you&meB)youC)meD)errmain(){chararr[2][4];strcpy(arr,"you");strcpy(arr[1],"me");arr[0][3]="&";printf("%sn",arr);}24.略。25.若以下定义:structlink{intdata;strucklink*next;29 }a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:abdatanextdatanext┌──┬──┐┌──┬──┐│5│┼──→│9││└──┴──┘└──┴──┘↑pcdatanext┌──┬──┐│7││└──┴──┘↑q指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是:DA)a.next=c;c.next=b;B)p.next=q;q.next=p.next;C)p->next=&c;q->next=p->next;D)(*p).next=q;(*q).next=&b;25.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>"";j+=2)s=10*s+p[i][j]-"0";printf("%dn",s);}该程序的输出结果是CA)69825B)63825C)6385D)69382526.下列程序的运行结果为:CA)12B)12C)12D)1212232516fun(intx,inty){staticintn=3,i=2;i+=n+1;n=i+x+y;return(n);}main(){intm=4,n=2,k;k=fun(m,n);printf(“%dn”,k);k=fun(m,n);printf(“%dn”,k);}29 25.下面程序的运行结果为:AA)4*3*2*B)432C)4*32*D)4*3*2main(){intn;charch[81],*pt;pt=ch;scanf(“%d”,&n);fun(n,ch);puts(pt);printf(“n”);}fun(intj,char*s){charc;intk,i=10;while(j!=0){k=j%i;*s=k+’0’;s++;*s=’*’;s++;j=(j-k)/i;}s=’’;}输入为:23426.写出下列程序的输出结果___B____。A)S=67B)S=61C)S=63D)S=56intp=2;main(){ints,j,sum();for(j=0;j<=5;j++)s=sum(j);printf(“s=%dn”,s);}intsum(intk){staticintx=1;inty=1;p++;y++;return(x+=k+p+y);}27.下列程序的输出结果是3,44,3。main(){voidswap1();voidswap2();inta=3,b=4;swap1(a,b);printf(“%d,%dn”,a,b);a=3;b=4swap2(&a,&b);printf(“%d,%dn”,a,b);}voidswap1(x,y)intx,y;29 {intt;t=x;x=y;y=t;}voidswap2(x,y)int*x,*y;{intt;t=*x;*x=*y;*y=t;}25.下列程序的输出结果是CA、(-1,0)B、(1,-1)C、(1,0)D、出错#include〈stdi0.h〉intx;intp(int*y){++*y;returnx-1;}voidmain(){inty;y=p(&x);printf("(%d,%d)”,x,y);}模拟试卷4第一部分:基础知识(20题,共40分)1.略。2.略。3.略。4.略。5.若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是CA) *p=&a;scanf("%ld",p);B) p=(long*)malloc(8);scanf("%ld",p);C) scanf("%ld",p=&a);D) scanf("%ld",&a);6.将int型变量n转换成float型变量的方法是BA、floatB、(float)nC、float(n)D、float(int)7.略。8.以下程序的输出结果是DA)100  B)160   C)120  D)64main(){ charx=040; printf("%dn",x=x<<1);} 040是八进制,十进制是32。x=x<<1;表示把x左移一位赋给x,二进制左移一位相当于乘2,32*2=64。9.以下数组定义中不正确的是DA)inta[2][3];B)intb[][3]={0,1,2,3};C)intc[100][100]={0};D)intd[3][]={{1,2},{1,2,3},{1,2,3,4}};10.略。29 5.以下程序的输出结果是AA)20B) 31B)C) 321D) 210main(){intn=4;while(n--)printf("%d",--n);}6.略。7.若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是CA) t[2][0]B) t[2][2]C) t[l][2]D) t[2][l]intt[3][3],*pt([3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];*(p+1)=&a[1][0];*(p+1)+2=&a[1][2];*(*(p+1)+2)=a[1][2];8.略。15.略。16.略。17.设有如下定义:char*aa[2]={“abcd”,”ABCD”};则下列说法正确的是(D)Aaa数组元素的值分别是”abcd”和”ABCD”Baa是指针变量,它指向两个数组元素的字符型一维数组Caa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址Daa数组的两个元素中各自存放了字符’a’和’A’的地址aa数组中的指针指向char类型数据要选C的话,应这样定义:char(*aa[])[4]={"abcd","ABCD"};18.以下函数值的类型是Afun(floatx){floaty;y=3*x-4;returny;}A)intB)不确定C)voidD)float19.以下选项中,能定义s为合法的结构体变量的是BA) typedefstructabcB) struct{doublea;{doublea;charb[10];charb[10];}s;}s;C) structABCD) typedefABC{doublea;{doublea;charb[10];charb[10];}}ABCs;ABCs;20.略。第二部分:简单程序(12题,共30分)21.略。29 17.有如下程序,该程序的输出的结果是DA)12B)13C)14D)15intfunc(inta,intb){return(a+b);}Main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%dn”,r);}18.略。19.下列程序的输出结果是BA)5B)6C)7D)8structabc{inta,b,c;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf("%dn",t);}20.以下程序的输出结果是BA)100200B)57C)200100D)75inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun();printf(“%d%dn”,a,b);}21.设有以下函数:Af(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是main(){inta=2,i;for(i=0;i<3;i++)printf(“%dn”,f(a));}A)7B)7C)7D)789107911137模拟试卷529 第一部分:基础知识(20题,共40分)1.在一个C语言程序中B。A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置2.略。3.若变量已正确说明为float类型,要通过语句scanf(“%f%f%f”,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:B。A)10<回车>B)10.0,22.0,33.0<回车>22<回车>33<回车>C)10.0<回车>D)1022<回车>22.033.0<回车>33<回车>4.已定义ch为字符型变量,以下赋值语句中错误的是C。A)ch="";B)ch=62+3;C)ch=NULL;D)ch="xaa";5.若有以下调用语句,则不正确的fun函数的首部是D。A)voidfun(intm,intx[])B)voidfun(ints,inth[41])C)voidfun(intp,int*s)D)voidfun(intn,inta)main(){…inta[50],n;…fun(n,&a[9]);…}6.以下程序执行后sum的值是C。A)15B)14C)不确定D)0min(){inti,sum;for(i=1;i<6;i++)sum+=i;printf(“%dn”,sum);}7.在说明语句:int*f();中,标识符f代表的是C。A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名8.略。第二部分:简单程序(12题,共30分)9.下列程序的输出结果是C。A)3B)3.229 C)0D)3.07main(){doubled=3.2;intx,y;x=1.2;y=(x+3.8)/5.0;printf("%dn",d*y);}1.有以下程序main(){inti=10,j=1;printf("%d,%dn",i--,++j);}执行后输出的结果是B。A)9,2B)10,2C)9,1D)10,12.下列程序执行后的输出结果是(小数点后只写一位)A。A)666.06.0B)666.76.7C)666.06.7D)666.76.0main(){doubled;floatf;longl;inti;i=f=1=d=20/3;printf("%d%ld%f%fn",i,l,f,d);}3.下列程序段的输出结果是C。A)2143B)1212C)1234D)2112voidfun(int*x,int*y){printf(“%d%d”,*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf(“%d%d”,x,y);}30.有以下程序int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%dn",*p,*q,*r);}执行后输出结果是B。A)7,8,8B)7,8,7C)8,7,7D)8,7,829 样题1第一部分:基础知识(20项,共40分)1.一个C语言程序是由C组成的。A、主程序B、子程序C、函数D、过程2.转换说明符%x的输出形式是C。A、十进制数B、八进制数C、十六进制数D、二进制数3.若a、b均为int型变量,且a=100,则关于循环语句for(b=100;a!=b;++a,++b)printf("----------------------");的正确说法是C。A、循环体只执行一次B、死循环C、循环体一次也不执行D、输出——————4.若x、y、z均为int型变量,则执行下列语句后的z值为A。x=1;y=2;x=3;(z=3)z=(x>y)?z:y;z=(zy?z:y;//这一步如果x>y成立z=z;不成立则z=y;所以z=y=2;z=z%sn",a);c=a[j-1,i=2+j];printf("a[%d]=%cn",i,c);}运行后输出的数据为B。A、computer->computerB、computer->retupmoca[3]=ua[5]=mC、computer->retupmocD、computer->retupmoca[4]=Pa[2]=t3.下列程序intsum(intn){intp=1,s=0,i;for(i=1;i<=n;i++)s+=(p*=i);returns;}main(){printf("sum(5)=%d",sum(5));}运行后输出的数据为C。A、sum(5)=151B、sum(5)=152C、sum(5)=153D、sum(5)=15529 1.下列程序main(){staticinta[]={5,6,7,3,2,9};ints1,s2,i,*ptr;s1=s2=0;ptr=&a[0];for(i=0;i<5;i+=2){s1+=*(ptr+i);s2+=*(ptr+i+1);}printf("s1=%d,s2=%dn",s1,s2);}运行后输出的数据为C。A、s1=18,s2=14B、s1=14,s2=32C、s1=14,s2=18D、s1=15,s2=192.下列程序intc=1main(){staticinta=5;intb=6;printf("a=%d,b=%d,c=%dn",a,b,c);func();printf("a=%d,b=%d,c=%dn",a,b,c);func();}func(){staticinta=4;intb=10;a+=2;c+=10;b+=c;printf("a=%d,b=%d,c=%dn",a,b,c);}运行后输出的数据为A。A、a=5b=6c=1B、a=5b=6c=1C、a=5b=6c=1D、a=5b=6c=1a=6b=21c=11a=7b=17c=11a=6b=21c=11a=7b=17c=11a=5b=6c=11a=5b=6c=11a=6b=21c=11a=7b=17c=11a=8b=31c=21a=9b=17c=21a=8b=31c=21a=9b=38c=213.下列程序#defineMAX10main(){inti,sum,a[]={1,2,3,4,5,6,7,8,9,10};sum=1;for(i=0;i=’0’&&a[i]<=’9’)){b[j]=a[i];j++;}++i;}b[j]=’’;printf("%s",b);29 }运行后输出的结果是B。A.把键盘输入的字符串显示在屏幕上B.把键盘输入的字符中的数字字符删掉,然后显示该字符串C.把键盘输入的字符串中的字符0和9删除掉,然后显示该字符串D.只保留由键盘输入的字符串中的字母数字,然后显示该字符串1.下列程序#includemain(){chara[80];inti,j;printf("Entethesting:");scanf("%s",a);i=0;while(a[i]!=’’){if(a[i]>=’A’&&a[i]<=’Z’)a[i]=a[i]-’A’+’a’;++i;}printf("%s",a);}运行后输出的结果是A。A、把键盘输入的字符串中的大写字母变换成小写字母,然后显示变换后的字符串。B、把键盘输入的字符串中的数字字符删除掉,然后显示该字符串。C、把键盘输入的字符串中的小写字母变换成大写字母,然后显示变换后的字符串。D、把键盘输入的字符串原封不动地显示在屏幕上。29'