一、填空题(每题1分,共10分)1、C语言中,字符型数据在内存中以形式存放。2、C语言规定,main函数的位置。3、C语言规定,可执行程序的开始执行点是。4、如果intx=1,y=2,表达式y=1.0+x/y后y的值是。5、C程序是由函数组成,其中只能有一个主函数函数。6、在一个C语言程序中,注释部分两侧的分界符分别为、。7、如果intm=5,y=2;表达式y+=y-=m*=y后y的值是。8、C语言程序中的语句都是用结束。9、设intx=1,y=1;表达式(!x||y--)的值是。10、设x=2.5,a=7,y=4,则表达式x+a%3+(int)(x+y)的值是。二、选择题(每题2分,共60分)1.以下程序的输出结果是A)20B)31C)321D)210main(){intn=4;while(n--)printf(%d,--n);}2.语句:printf(%d\n,12&012);的输出结果是A)12B)8C)6D)0123.设x,y,z,t均为int型变量,则执行以下语句后,t的值为x=y=z=1;t=++x||++y&&++z;A)不定值B)2C)1D)04.设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:scanf(i=%d,f=%f,&i,&f);为了把100和765.12分别赋给i和f,则正确的输入为()A)100空格765.12回车B)i=100,f=765.12回车C)100回车765.12回车D)x=100回车,y=765.12回车5.以下程序的输出结果是()A)17,021,0x11B)17,17,17B)17,0x11,021D)17,21,11main(){intk=17;printf(%d,%o,%x\n,k,k,k);}6.若x和y都是int型变量,x=100,y=200,且有下面的程序片段:printf(%d,(x,y));上面程序片段的输出结果是A)200B)100C)100200D)输出格式符不够,输出不确定的值7.设有定义:floata=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是()A)(a+b)*h/2B)(1/2)*(a+b)*hC)(a+b)*h*1/2D)h/2*(a+b)8.假定a和b为int型变量,则执行以下语句后b的值为a=1;b=10;do{b-=a;a++;}while(b--0);A)9B)—2C)—1D)89.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A)c=b=a;B)(a=c)‖(b=c);C)(a=c)&&(b=c);C)a=c=b;10.一下关于switch语句和break语句的描述中,正确的是()A)在switch语句中,必须使用break语句B)break语句只能用于switch语句C)在switch语句中,可以根据需要使用或不使用break语句。D)break语句是switch语句的一部分。11.以下程序main(){inti,s=0;for(i=1;i10;i+=2)s+=i+1;printf(%d\n,s);}程序执行后的输出结果是()A)自然数1~9的累加和B)自然数1~10的累加和C)自然数1~9中的奇数之和D)自然数1~10中的偶数之和12.请读程序片段(字符串内没有空格):printf(%d\n,strlen(ATS\n012\1\\));上面程序片段的输出结果是()A)11B)10C)9D)813.设intx=1,y=1;表达式(!x||y--)的值是()A)0B)1C)2D)–114.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()A)a0B)!aC)a=0D)a15.已知字母A的ASCII码为十进制的65,下面程序的输出是()A)67,DB)B,CC)C,DD)不确定的值main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf(%d,%c\n,ch1,ch2);}16.以下4组用户定义标识符中,全部合法的一组是()A)_mainB)ifC)txtD)intenclude-maxREALk_2sinturbo3COM_00117.下面的程序()A)输出的是1B)输出的是1和-2C)输出的是3和0D)是死循环main(){intx=3;do{printf(%d\n,x-=2);}while(!(--x));}18.能正确表示a≥10或a≤0的关系表达式是()A)a=10ora=0B)a=10│a=0C)a=10或a=0D)a=10││a=019、main(){intx=10,y=3;printf(%d\n,y=x/y);}程序的输出是()A)0B)1C)3D)不确定的值20.有定义inta[5]={1,2,3};则正确的说法是()A)a并不代表数组的元素。B)定义时不指定数组的长度,定义效果相同。C)数组中含有3个元素。D)a[3]的值为3。21.以下说法中正确的是()A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分22.设有如下定义:inta=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:(m=ab)&&(n=cd)后,n的值为()A)1B)2C)3D)023.请读程序片段:inti=65536;printf(%d\n,i);上面程序片段的输出结果是()A)65536B)0C)有语法错误,无输出结果D)-124.以下循环体的执行次数是()A)3B)2C)1D)0main(){inti,j;for(i=0,j=1;i=j+1;i+=2,j--)printf(%d\n,i);}25.执行语句:for(i=1;i++4;)后;变量i的值是()A)3B)4C)5D)不定26.设ch是char型变量,其值为A,且有下面的表达式:ch=(ch='A'&&ch='Z')?(ch+32):ch上面表达式的值是()A)AB)aC)ZD)z27.若执行下面的程序时从键盘上输入3和4,则输出是()A)14B)16C)18D)20main(){inta,b,s;scanf(%d%d,&a,&b);s=a;if(ab)s=b;s=s*s;printf(%d\n,s);}28.以下程序的输出结果是()#includestdio.hmain(){inta=2,c=5;printf(a=%%d,b=%%d\n,a,c);}A)a=%2,b=%5B)a=2,b=5C)a=%%d,b=%%dD)a=%d,b=%d29.在下列选项中,不正确的赋值语句是()A)++t;B)n1=(n2=(n3=0));C)k=i==j;D)a=b+c=1;30.能正确表示a和b同时为正或同时为负的逻辑表达式是()A)(a=0‖b=0)&&(a0‖b0)B)(a=0&&b=0)&&(a0&&b0)C)(a+b0)&&(a+b=0)D)a*b0三、补充程序(每题5分,共10分)1、以下程序实现:输入两个整数,按从大到小顺序输出。main(){intx,y,z;Scanf(”%d,%d”,&x,&y);if(){z=x;;}printf(”%d,%d”,x,y);}2.有1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以乏能卖完?请填空。#includestdio.hmain(){intday,x1,x2;day=0;xl=1020;while()·{x2=;xl=x2;day++;)printf(”day=%d\n,day);}3:打印出杨辉三角形(要求打印出10行如下图)111121133114641四、设计程序(每题10分,共20分)任选两题1:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?2:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?