C语言程序设计期中试卷题号一二三四五六总分得分一、填空题(本大题30空,每空1分共30分)1、C语言中的基本数据类型包括、、三种。2、C语言中的逻辑运算符有、、三种。3、若a=4,b=5,则!a&&b的值为,b&&03的值为。4、设a=10,则表达式a+=a-=2*3的值为。5、设i=5,执行z=-i--后,z的值为,i的值为。6、定义一个4行5列的整型数组VB的方法。7、定义intnum[]={1,2,3,4,5},*p=&num[1],则表达式*p+3的值为,*(p+3)的值为。8、设charstr[10]=China,strlen(str)的值为。9、逗号表达式a=b=3,6*a的值为。10、将算术表达式31лR2·h书写为C语言表达式。11、用宏TB来定义3.14。12、循环for(i=2;i=12;i=i+2)结束后,i的值为。13、数组charb[15]表示它有个字符元素。14、在C语言中没有专为存储字符串的变量,但可以用字符型数组或存储字符串。15、C语言文件存储在磁盘上有两种形式,一种是按存储,另一种是按存储。16、在C语言中,变量的存储类别有四种,它们分别是自动变量、外部变量、和寄存器变量,其中自动变量又称为。17、若有inta=10,b=5;则c=++a-b--;的值为。18、定义一个数组intb[14],则b数组一共有个元素,数组的最后一个元素是。19、若有inta[10],*p;p=&a[2];则后面语句使用*p时是在引用。20、表达式2sin30°的C语言表达式为。二、选择题(本大题共20小题,每题2分,共40分)1、设i=6,则执行j=i++;j=++i后,j的值为()A、7B、8C、6D、92、设x=2.5,a=4,y=7,则表达式x+a%3*(int)(x+y)%2/4的值为()A、3.5B、4C、2D、2.53、下面的指数形式正确的是()A、4.6EB、E+4C、1.23E-10D、4.3E6.84、指出下列非法的赋值语句()A、z=(ab)?a:b;B、I=++(I+J);C、y=y*(z+1);D、unsignedz=45.67;5、设x=4,y=5,z=2,则表达式(xy)==z的值为()A、0B、1C、4D、56、下列正确的语句是()A、int*p;p=&(a+b);B、y:=(ab)?a:b;C、for(i=0,i=5,i++);D、inta,b=3;7、初始化字符数组charstr[]=“Abook”,则可确定数组的长度为()A、6B、7C、8D、98、函数strlen(“abc\tde\n”)的值为()A、6B、10C、5D、89、设i=1;则循环while(i++5)结束后,i的值为()A、4B、5C、6D、710、初始化数组intval[3][3]={{1},{2,3},{3}}则val[1][1]的值为()A、1B、2C、3D、{2,3}11、在C语言程序中,main函数的位置()A.、必须作为第一个函数B、必须作为最后一个函数C、可以任意D、必须放在它所调用的函数之后12、下列不合法的常量是()A、programB、-e8C、0x35D、12313、C语言中的基本数据类型所占存储空间长度的大小顺序是()A、char=int=float=double=longB、int=char=float=long=doubleC、int=long=float=double=charD、char=int=float=long=double14、在C语言中,要求当a的值为奇数时,表达式的值为“真”,a的值为偶数时为“假”。以下不满足要求的表达式是()A、a%2==1B、!(a%2==0)C、a%2D、!(a%2)15、执行语句:x=(a=3,b=a--);后,x,a,b的值依次是()A、3,3,2B、3,2,2C、3,2,3D、2,3,216、若有语句:chars[12]=string;则函数strlen(s)的值为()A、6B、7C、11D、1217、在C语言中,下列说法正确的是()A、不能使用do语句while(表达式);循环B、do语句while(表达式);循环中,必须使用“break”语句退出循环C、do语句while(表达式);循环中,当表达式为非零时将结束循环D、do语句while(表达式);循环中,当表达式为零时将结束循环18、在C语言中,若有x=15,y=40,m=100,则执行了语句:m=(xy)?x:y;后,m的值是()A、15B、40C、100D、0.3219、在定义inta[3][2]以后,对a的正确引用是()A、a[0,0]B、a[3][0]C、a[2][2]D、a[0][0]20、在C语言中,函数隐含的类型是()A、autoB、staticC、intD、void三、判断题(在每小题的括号中,正确的划“√”;错误的划“×”,每题1分,共20分)()1、在关系运算符中,=和!=运算优先级相同。()2、递增运算符++可用于常量或表达式,且在运算时自右向左执行。()3、表达式ij?i:j等价于ij?i:(j+1)而非(ij?i:j)+1。()4、在C语言中,变量STU和stu指的是同一个变量。()5、do-while语句在运行时至少要执行一次循环体,而while语句可能一次循环体也不执行。()6、在C语言中,函数可以没有参数。()7、定义a=8,b,c;执行b=c=x;x=y!=z后,变量x的值为1。()8、设inta[10];int*p;则p=a或p=&a[0]都是合法的表达式。()9、在调用函数时,数据可以进行双向传递,即可由实参传给形参,也可由形参传回实参。()10、在for循环体中,for(i=1;;i++)语句中省略了循环条件,则循环条件将无限制地进行。()11、C程序由一个或多个函数组成,但必须有且只能有一个名为main的主函数。()12、在C语言中,数据类型混合运算时,进行同型转换的方式有强制转换和非强制转换两种。()13、在C语言中,在对全部数组元素赋初值时,必须指明数组的长度。()14、在C语言中,字符型数据也可以像整型数据那样使用,它可以用来表示一些特定范围内的整数。()15、在C语言中,for循环一般只能用于循环次数确定的循环。()16、在C语言中,文件是存储在外部设备(如磁盘)上的程序的集合。()17、在C语言中,关系运算中,如规定的关系成立,则其结果为数值1,反之为0,不会是其他值。()18、考虑到运算符的优先级不同,wx-y与w(x-y)这两个关系式的值不同。()19、C语言对二维数组中的各个元素在机内是按行的顺序存放的。()20、在C语言中,所谓“指针”就是地址,一个变量的指针就是指该变量的地址。四、阅读下列程序,写出运行结果(本大题共10小题,每题5分,共50分)1、main(){inti,z,n;z=1;n=5;for(i=1;i=n;i++)z=z*i;printf(z=%d,z);}输出:2、main(){chara,b;scanf(%c,&a);scanf(%c,&b);printf(%c%c\n,a,b);}输入:ab输出:3、main(){inti;for(i=100;i=0;i――)if(i%13==0)break;printf(%d,i);}输出:4、main(){char*a,*p;a=TurboC;p=a+4;printf(%s\n,a);printf(%c\n,*p);}输出:5、mina(){inta,b,c;scanf(%d,%d,&a,&b);c=min(a,b+20);printf(Minis%d,c);}min(intx,inty){intz;z=xy?x:y;return(z);}输入:6,8输出:6、inta;main(){a=10;clrscr();printf(a=%d\n,a);f();printf(a=%d\n,a);}f(){inta;a=20;}运行结果是7、main(){inta1,a2;floatb,c;b=38.425;c=22.7;a1=(int)(b+c);a2=(int)b%(int)c;printf(%d\n,a1);printf(%d\n,a2);}运行结果是8、main(){chars1[30]=Hello,s2[20];clrscr();printf(请输入姓名:);gets(s2);strcat(s1,s2);puts(s1);}运行结果是9、main(){inti;clrscr();for(i=1;i=20;i++)if(i%5==0)printf(%d\n,i);}运行结果是10、main(){charc1,c2;c1=65;c2=66;printf(%c,%c,c1,c2);printf(%d,%d,c1,c2);}运行结果是五、将下面的程序补充完整(本大题共15空,每空2分,共30分)1、求f(x)=xn#includetdio.hmain(){intx,n;scanf(%d,%d,&x,&n);printf(%d**%d=%d\n,x,n,power(x,n));}power(intx,intn){intp,i;p=;for(i=1;i=n;i++)p=;return(p);}2、求1+2+3+……+n时超过2000的第1个n值及其和值。main(){inta,i;a=0;for(i=1;i=100;){a+=i;if(a2000);}printf(1+2+3+…+%d=%d\n,i,a);}3、编写一程序,计算文件中字母出现的次数。#includestdio.hmain(){intn=0,i=0;charc,t[80]while((c=getchar())!='\n'){t[i]=;if(('a'=t[i]t[i]='z')('A't[i]t[i]='z'));}printf(Thewordis%d,n);}4、求数组中最大值的程序。main(){inta[10]={89,67,100,64,76,90,94,52,82,90};intx,i;clrscr();;i=1;while(i10){if(a[i]x);;}printf(最大值为:%d\n,x);}5、打印3到100之间所有的素数。main(){inti,j;for(i=3;i=100;i++){for(j=2;ji-1;j++)ifbreak;ifprintf(%4d,i);}}6、从三个红球,五个白球,六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。#includestdio.hvoidmain(){inti,j,k;printf(\nhongbaihei\n);for(i=0;;i++)for(j=1;j=5;j++){k=8-i-j;if()printf(%3d%3d%3d\n,i,j,k);}}六、编程(本大题共30分)1、编写一程序,把三个整数中最大的打印出来。(6分)要求:使用if语句,变量用a,b,c,x。2、编程查找某数是否在数组a中,找到了则输出提示信息“找到了,下标为:”。(8分)要求:使用for循环,数组名用a[10],循环变量用i,查找的数用x。3、将数组a以1,5,3,2,7,9,数组b以5,3,9,4,6,1初始化,将对应项之积赋予数组c并显示该数组c。(10分)要求:使用for循环,数组名用a,b,c,变量使用i。4、用循环语句计算下面S的值。s=4+14+24+…+524。(6分)要求:变量使用s表示和i表示变量。参考答案一、填空题:每空1分,共30分。1、整型、浮点型、字符型2、逻辑与(&&)、逻辑或(||)、逻辑非(!)3、0,14、85、-5,46、intVB[4][5];7、5,58、59、1810、3.14*R*R*h/311、#defineTB3.1412、1413、1514、字符型指针变量15、ASCII码、二进制码1