第1页——共8页第2页——共8页对口升学二年级2015年11月C语言月考试题(总分140分)班级:________姓名:_________一、单选题(每小题3分,共45分)1.在C语言中,引用数组元素时,其数组下标的数据类型不允许是()。A)整型常量B)整型常量或整型表达式C)整型表达式D)任何类型的表达式2.下列定义正确的是()。A)inta[4]={1,2,3,4,5};B)intb[]={2,5,7};C)inta(10);D)int4e[4];3.不是给数组的第一个元素赋值的语句是()。A)inta[2]={1};B)inta[2]={1*2};C)inta[2];scanf(“%d”,a);D)a[1]=1;4.当输入为quert?时,下面程序的执行结果是()。#includestdio.hmain(){charc;c=getchar();while((c=getchar())!='?')putchar(++c);}A)QuertB)vfsuC)quert?D)rvfsu?5.假设array是一个有10个元素的整型数组,则下列写法中正确的是()。A)array[0]=10B)array=0C)array[10]=0D)array[-1]=06.以下能正确计算1×2×3×…×10的程序段是()。A)do{i=1;s=1;s=s*i;i++;}while(i=10);B)do{i=1;s=0;s=s*i;i++;}while(i=10);C)i=1;s=1;do{s=s*i;i++;}while(i=10);D)i=1;s=0;do{s=s*i;i++;}while(i=10);7.下面程序的运行结果是()。main(){inta[6],i;for(i=1;i6;i++){a[i]=9*(i-2+4*(i3))%5;printf(%2d,a[i]);}printf(“\n”);}A)-40404B)-40403C)-40443D)-404408.以下关于数组的描述正确的是()。A)数组的大小是固定的,但可以有不同的类型的数组元素B)数组的大小是可变的,但所有数组元素的类型必须相同C)数组的大小是固定的,所有数组元素的类型必须相同D)数组的大小是可变的,可以有不同的类型的数组元素9.以下对一维整型数组a的正确说明是()。A)inta(10);B)intn=10,a[n];C)intn;scanf(“%d”,&n);inta[n];D)#defineSIZE10inta[SIZE];10.下面程序的功能是计算1-3+5-7+...-99+101的值请选择填空()。main(){inti,t=1,s=0;第3页——共8页第4页——共8页for(i=1;i=101;i+=2){①;s=s+t;②;}printf(“%d\n”,s);}A)①t=t*i②t=-t/iB)①t=i②t=-iC)①t*=i②t=-tD)①t=-t②s=-s11.下面程序的功能是把12345反向输出为54321请选择填空:()。mian(){intn=12345,m,a,b;a=n;m=0;while(a){b=a%10;;a/=10;}prrintf(“%d\n”,m)}A)m+=bB)m=m+b*10C)n=n++D)m=m*10+b12.若有一维数组a[n],则数组中a[i]之前的元素的个数为()。A)iB)n-1C)nD)i+113.若i,j已定义为int型,则以下程序段中循环体的总的执行次数是()。for(i=5;i;i--)for(j=0;j4;j++){}A)20B)24C)25D)3014.执行以下程序段后,a的值是()。inta[]={5,3,7,2,1,5,4,10};inta=0;k;for(k=0;k8;k+=2)a+=*(a+k);A)17B)27C)13D)有语法错误,无法确定15.以下程序的运行结果是:()。main(){intn=4;while(n--)printf(“%2d”,--n);}A)20B)31C)321D)210二、填空题(每空3分,共15分)1.若有shorta[5];已知数组的起始地址为1000,则数组元素a[3]是第个元素,其地址为,最后一个元素是。2.若有floatf[20]={2.3,5.4,7.9,12.0};则数组在内存中占个字节,f[12]值为三、写出下列程序的运行结果(每小题5分,共25分)1.#includestdio.hvoidmain(){intx,i;for(i=1,x=1;i=50;i++){if(x=10)break;if(x%2==1){x+=5;continue;}x-=3;}printf(“%d\n”,i);}2.#includestdio.hvoidmain(){intn=3041;chara,b,c,d;a=n/1000+’A’;b=n%1000/100+’A’;第5页——共8页第6页——共8页c=n%100/10+’A’;d=n%10+’A’;printf(“%c%c%c%c\n”,a,b,c,d);}3.#includestdio.hvoidmain(){inti,n[]={0,0,0,0,0};for(i=1;i=4;i++){n[i]=n[i-1]*2+1;printf(“%3d”,n[i]);}printf(“\n”);}4.#includestdio.hvoidmain(){inti,f[10];f[0]=f[1]=1;for(i=2;i10;i++)f[i]=f[i-2]+f[i-1];for(i=0;i10;i++){if(i%3==0)printf(\n);printf(%5d,f[i]);}printf(“\n”);}5.#includestdio.hvoidmain(){inta[10]={7,3,5,2,9,1,0,6,8,4},i,j,t;i=0;j=9;while(ij){t=a[i];a[i]=a[j];a[j]=t;i+=2;j-=2;}for(i=0;i10;i+=2)printf(%d,a[i]);printf(\n);}四、程序填空题(每空5分,共30分)1.下面程序的功能是求两数的最大公约数和最小公倍数#includestdio.hvoidmain(){inta,b,m,n,t;scanf(“%d,%d”,&m,&n);a=m,b=n;if(ab){t=a;a=b;b=t;}while((1)){(2);a=b;b=t;}printf(“最大公约数为%d\n”,a);printf(“最小公倍数为%d\n”,(3));}2.下面程序的功能是:首先采用选择排序法对一位数组a进行升序排序。#includestdio.h#defineN10voidmain()第7页——共8页第8页——共8页{inta[N]={3,8,12,5,7,10,15,4,13,6};inti,j,k,t;for(i=0;iN-1;i++){for((1);jN;j++)if(a[k]a[j])(2);if(k!=i){t=a[i];a[i]=a[k];a[k]=t;}}for(i=0;iN;i++)printf(“%5d”,(3));printf(“\n”);}五、程序改错题,(每处5分,共15分)下面程序的功能是将十进制整数转换成二进制数。现有3处错误,请将错误语句行号写出,并写出完整正确的语句,不允许删除、增加语句。/*L1*/#includestdio.h/*L2*/voidmain()/*L3*/{inta[20],n,i=0,j;/*L4*/printf(“请输入要转换的十进制数:”);/*L5*/scanf(“%f”,n);/*L6*/do{/*L7*/i++;/*L8*/a[i]=n/2;/*L9*/n=n/2;/*L10*/}while(n!=0);/*L11*/for(j=i,j=0;j++)/*L12*/printf(“%d”,a[j]);/*L13*/printf(“\n”);/*L14*//*L15*/}六、程序设计题:(任选一题15分)1.编一程序,从键盘输入20个整数并保存到一维数组中,要求输出下标是偶数的元素。并以每4个一行的形式输出。2.找出1000之内的所有完数。一个数如果恰好等于它的因子(不包括它本身)之和,这个数就称为“完数”。例如:6的因子为:1,2,3;而6=1+2+3,因此6是完数。