1C语言知识测试题一、单项选择题(每小题5分,共150分)1.下列合法的常量是()。A.-32169B.0128C.0XDEFGD.13E0.52.以下选项中不合法的标识符是()。A.printfB.FORC.&aD._003.以下选项中不属于正确字符常量的是()。A.'C'B.'\\'C.'\xCC0'D.'\070'4.设变量已正确定义并赋值,以下正确的语句是()。A.x=y*5=x+z;B.int(15.8%5);C.x=y+z+5,++y;D.inta=b=c=25%5;5.设变量均已正确定义,有语句scan(“%d%c%d%c”,&a,&b,&c,&d);若为变量a和c赋数值10和20,为变量b和d赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)()。A.10□X□20□Y〈回车〉B.10□X20□Y〈回车〉C.10X〈回车〉D.10□X〈回车〉20Y〈回车〉20□Y〈回车〉6.若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(ab)a=b;c=a;elsec=b;printf(%d,%d,%d\n,a,b,c);其输出结果是()。A.程序段有语法错B.3,5,3C.3,5,5D.3,5,77.有以下程序#includestdio.hmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;case1:b++;break;}case2:a++;b++;case3:a++;b++;break;}printf(“a=%d,b=%d\n”,a--,--b);2}程序的运行结果是()。A.a=1,b=0B.a=3,b=2C.a=3,b=3D.a=2,b=28.设有条件表达式:(EXP)?i++:j--;,则以下表达式中与(EXP)完全等价的是()。A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)9.设用到的变量都已正确定义,则下列正确的选项是()。A.scanf(“%6.2f”,&a);B.c=getchar();putchar(c);若从键盘上输入abc后回车,则输出为a。C.printf(“%6.2f”,23.456);则输出结果为23.46□。(注:□代表空格字符)D.scanf(“%3c%2d”,&a,&b);若从键盘输入123456后回车,则a值为’123’,b值为45。10.有以下程序#includestdio.hmain(){inti,j,m=55;for(i=1;i=3;i++)for(j=3;j=i;j++)m=m%j;printf(%d\n,m);}程序的运行结果是()。A.0B.1C.2D.311.在C语言中,char型数据在内存中的存储形式是()。A.补码B.反码C.源码D.ASCII码12.设用到的变量均正确定义,则执行语句:(x=6)(y=5)?1:1.5;后表达式的值为()。A.1B.1.0C.1.5D.编译通不过13.设inta=12;表达式a+=a-=a*=a的值是()。A.12B.144C.0D.13214.以下程序的输出结果是()。main(){inta=011;printf(“%#X\n”,++a);}A.12B.10C.AD.0XA15.在下列程序段中,若k为整型,则程序输出结果为()。k=2;while(k=0)printf(“%d”,k);k--;printf(“%d\n”,k);A.-1B.2C.0D.116.以下程序的输出结果是()。main(){intk1=1,k2=2,k3=3,x=15;3if(!k1)x--;elseif(k2)if(k3)x=4;elsex=3;printf(“x=%d\n”,x);}A.x=4B.x=15C.x=14D.x=317.若用到变量均正确定义,则下列说法正确的是()。A.x=3;x=!x--;最终x值为2。B.printf(“%d=%%D”,20,20);则输出20=%DC.scanf(“%d,%d”,&a,&b);在输入数据时可输入2□3后回车。(注:□代表空格字符)D.执行程序段:x=1;do--x;while(x--);此循环为无限循环。18.设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=ab)&&(n=cd)后n的值为。A)1B)2C)3D)419.以下程序运行后,a和b的值分别为()。#includestdio.hintmain(){inta,b;a=10%3,b=10/3;printf(%d,%%%d,a,b);}A.1,%3B.3,%1C.1,%1D.1,%d20.有以下程序,运行后的输出结果是()。main(){intx,y,z;x=y=1;z=x++,y++,++y;printf(%d,%d,%d\n,x,y,z);}A.2,3,3B.2,3,2C.2,3,1D.2,2,121.执行以下程序时,输入1234567回车,则输出结果是()。main(){inta=1,b;scanf(“%2d%2d”,&a,&b);printf(“a=%db=%d”,a,b);}A.1234B.a=123b=456C.a=12b=34D.输入有错误22.逗号表达式(a=3*5,a*4),a+15的值为()。A.15B.60C.30D.7523.若有说明语句:charc='\72';则变量c()。A.包含1个字符B.包含2个字符4C.包含3个字符D.说明不合法,c的值不确定24.下列程序段的运行结果是()。intn=0;while(n++3);printf(%d,n)A.2B.3C.4D.以上都不对25.设用到的变量均正确定义,则以下不是无限循环的语句为()。A.for(y=0,x=1;x++y;i++)i=x;B.for(;;i=x++);C.while(1){x++;y--;}D.for(i=10;a=2;i--)sum+=i;26.有以下程序,运行后的输出结果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf(%d%d%d\n,i,j,k);}A.123B.234C.223D.23327.以下能正确计算1×2×3×4...×10的程序段是()。A.while(i=10){i=1;s=1;s=s*i;i++;}B.for{i=1,s=0;i=10;i++;}s=s*i;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)28.以下程序段中的变量已正确定义for(i=0;i4;i++,i++)for(k=1;k3;k++);printf(“%d”,k);程序段的输出结果是()A.1212B.123123C.3D.429.已知字符A的ASCII码值为65,执行下列程序后#includestdio.hmain(){chara=‘A’;intb=20;printf(“%d,%c”,(a=a+1,a+b,b),a+‘a’-‘A’,b);}5A.表达式非法,输出零或不确定值B.输出结果为20,bC.因输出项过多,无输出或输出不确定值D.输出结果为20,1541,2030.以下程序的输出结果是()main(){inta=2,b=-1,c=2;if(ab)if(b0)c=0;elsec+=1;printf(“%d\n”,c);}A.0B.1C.2D.3二、程序填空题(每空5分,计200分)31.输入一个正整数,求该数各位之和,如输入3256,求得3+2+5+6=16。#includestdio.hmain(){inti,t=【1】;scanf(“%d”,【2】);while(【3】){t+=【4】;【5】;}printf(“%d\n”,t);}32.下面程序的功能是:判断整数m是否为素数。试题程序:#includemath.h#includestdio.hvoidmain(){intm,i,k;printf(输入一个整数:);scanf(%d,&m);k=【6】;for(【7】;i=k;【8】)if(m%i==0)【9】;if(【10】)printf(%d是素数\n,m);elseprintf(%d不是素数\n,m);}633.下面程序的功能是:有一分数序列,,,,,,132181358352312…求这个数列的前20项之和。试题程序:#includestdio.hmain(){inti,n=20;floata=2,b=【11】,t,s=0;for(i=1;【12】;i++){s+=【13】;t=a;【14】;【15】;}printf(sum=%9.6f\n,s);}34.以下程序的功能是计算:m=1-2+3-4+…+9-n,并输出结果。请填空。【16】intmain(){intm=0,f,i,n;scanf(“%d”,&n);【17】;for(【18】;i=n;i++)【19】;【20】;}35.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。#includestdio.hintmain(){intt,s=0,i;【21】;for(i=1;【22】;i++)【23】;s=【24】;}1+12+123+1234+12345=%d\n,【25】);}36.输入x,计算y值并输出。其中分段函数如下:x0y=2x+3x=0,y=0x0,y=(x+7)/37#includestdio.hmain(){intx;floaty;【26】;if(x0)【27】;elseif(【28】)y=0;【29】【30】;printf(“输入x的值为%d,对应y值为%f。\n”,x,y);}37.用switch语句编程实现下列函数关系,请填空。xyx0-1x=000x1#includestdio.hintmain(){intx,y;【31】;switch(x0){case1:【32】;break;case0:switch(【33】){case1:y=0;【34】;【35】:y=1;}printf(“输入x的值为%d,对应y值为%f。\n”,x,y);}38.输入两个正整数m和n,求其最大公约数和最小公倍数。#includestdio.hintmain(){inta,b,r,t,;printf(请输入两整数:\n);scanf(%d%d,&a,&b);t=a*b;if(【36】){a=a+b;【37】;a=a-b;}r=a%b;while(【38】){a=b;【39】;【40】;}printf(最大公约数是:%d\n,b;printf(最小公倍数:%d\n,t/a);}8答题卡姓名:______________成绩:_______________单项选择题(每小题5分,计150分)题号12345678910答案题号11121314151617181920答案题号21222324252627282930答案填空题(每空5分,计200分)【1】【2】【3】【4】【5】【6】【7】【8】【9】【10】【11】【12】【13】【14】【15】【16】【17】【18】【19】【20】【21】【22】【23】【24】【25】【26】【27】【28】【29】【30】【31】【32】【33】【34】【35】【36】【37】【38】【39】【40】9答题卡姓名:______________成绩:_______________单项选择题(每小题5分,计150分)题号12345678910答案ACCCCABBBB题号11121314151617181920答案DBCDAABBAC题号21222324252627282930答案CCACADCCBC填空题(每空5分,计200分)【1】0【2】&i【3】i0【4】i%10【5】i/=10【6】sqrt(m)【7