



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章C语言概述ー、填空题C程序是由构成的,ー个C源程序至少包含一个函数。C语言规定:在ー个源程序中,main。函数的位置〇C程序的执行是从函数开始,在函数中结束。ー个函数由和两部分组成。函数体一般包括和。C程序书写格式规定,每行可写语句,ー个语句可以。用对C程序中的任何部分作注释。一个C语言的语句至少应包含ー个。9、C语言源程序文件的后缀是 ,经过编译后,生成文件的后缀是ー,经过链接后,生成文件的后缀是 。二、选择题1、下列说法正确的是( )〇A、main函数必须放在C程序的开头。Bxmain函数必须放在C程序的最后。C,main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的。D、main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的。2、ー个C语言程序总是从( )开始执行。A、程序的第一个函数 B、主函数C,子函数 D、主程序3、ー个C语言程序是由( )。A、ー个主程序和若干个子程序组成。B、若干过程组成。C、若干子程序组成。D、函数组成,并且每ー个C程序必须且只能有一・个主函数。4,下列对C语言特点的描述中,错误的是( )»A、C语言不是结构化程序设计语言B、C语言编程简洁明了C、C语言功能较强 D、C语言移植性好第三章数据类型、运算符与表达式ー、选择题TOC\o"1-5"\h\z1、已知ch是字符型变量,下面不正确的赋值语句是( )。A)ch=‘、〇’ B)ch='a+b'C)ch=*7'+'9' D)ch=7+92、以下选项中不合法的用户标识符是( )A)abc.cB)fileC)MainD)PRINTF3、C语言中运算对象必需是整型的运算符是( )A)% B)/ 0! D)*4、可在C程序中用作用户标识符的ー组标识符是( )A)voidB)as_b30ForD)2cdefine_123-abcDOWORDIfcaseSIG5、以下叙述中正确的是()A)a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量允许赋值整型值。B)在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式。C)执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为〇。D)已有a=3,b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3。6、以下叙述中正确的是( )A)在C程序中无论整数还是实数,只要在允许的范围内都能准确无误的表示。B)C程序由主函数组成。C)C程序由函数组成。D)C程序由函数和过程组成。TOC\o"1-5"\h\z7、TURBOC中int类型变量所占字节数是( )A)1 B)2 C)3 D)48,不合法的ハ进制数是( )A)0 B)028 0077 D)019、不合法的十六进制数是( )A)abch B)OXabc 00x11 D)0xl910、以下4组用户定义标识符中,全部合法的一组是( )A、s_5 B、If C、txt D、intabout -max REAL k_2E2 turbo 3COM _00111、C语言中的简单数据类型包括( )A、整型、实型、逻辑型B,整型、实型、字符型、枚举型C、整型、字符型、逻辑型D、整型、实型、逻辑型、字符型12、已知:inti=l,j;执行语句j=-i++;后,j的值是( )A、1B、2C、-1D、-213、已知I:inti=5;执行语句i+=++i;后,i的值是( )A、10B、11C、12D、A、B、C答案都不对14、若x为int型变量,x=6;则执行以下语句后,x的值为( )«x+=x-=x*x;A、36B、60C、-60D、-2415、设d为字符变量,下列表达式不正确的是( )。
A、d='g'B、d二'a'C、d=97D、d二”g”16、printf函数中用到格式符“%8s”,其中数字8表示输出的字符串占用8列。如果字符串长TOC\o"1-5"\h\z度大于8,则按原字符长从左向右全部输出;如果字符串长度小于8,则输出方式为( )〇A、从左起输出该字符串,右补空格 B、右对齐输出该字符,左补空格C、按原字符长从左向右全部输出 D、输出错误信息17、设x=2,9,a=8,y=3.7,算术表达式x+a%3*(int)(x+y)%5/2的值是( )A、3.9B、4C、4.2D、3.7518、若有说明语句:chare>75';则变量c( )。A、包含1个字符 B、包含2个字符C、包含3个字符 D、说明不合法,c的值不确定19、( )不是C语言提供的合法关键字。A、switchB、defaultC、caseD、print20、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符()。A、必须为大写 B、必须为下划线C、必须为字母或下划线 D、可以是字母、数字和下划线中的任一种字符21、下列形式的常数中,C程序不允许岀现的是( )。A、0.98B、6e4C、77.6e-2D、E822、以下选项中属于C语言数据类型()oA、复数型 B、逻辑型C、双精度型 D、集合型23、下列符号中,可以作为变量名的是( )。A、+aB、!2345eC.a3BD、5e+024、AC25、AC下列各组中均为常量的是0..123,-0x23,-2.5B.24、AC25、AC下列各组中均为常量的是0..123,-0x23,-2.5B..-6,冗,345.0 D.ド列各组中不全是字符常量的是6.8a'a’6’"b",‘2’B.D.,+''3''\x41'26、AC27、AC28、ACド列各组中全是实数的是ー0.5,1.4e2,-6.9L5e3.5,0.9,—6.0B.7.8,D.41.245,7.7下列各组中不全是合法的变量名的是ー,day,lotus_l_2_3,xlB.・M.John,year,sum D.下列各组中全是字符串常量的是“a+b”
‘123’“1+2=5”,“china”
“456”,“789”Abeabove,YEAR,MONTH,B. 'abc'D.'\n'basicDAY,xyz', '5’“1+2=3”,“aaa二、填空题charc;ca';c的ASCH码为97,charc;ca';c的ASCH码为97,则在内存中C的值为:在定义变量的同时给变量一个值,称为^definePI3.14说明P!为〇设有说明:charcl:则cl='a';是否正确?设设设
7.069.设有说明:charc2;则c2=65;是否正确?表达式10+'x'+2.5*7的值为x=3.5;则表达式(int)x+x的值为i=5:则语句k=i++;执行后,k二 :型的量。inta=6;表达式a/=a+a运算后,10.表达式a=3*5,a+a,a+3的值为.11.表达式x=(2+3,6*5),x+5运算后,a=.设a=5;则表达式a+=a*=a+a运算后,a=〇.设a=9;x=6.3;y=3.5!则表达式a/5*(int)(x+y)%7/4的值为。.inta=5,b=2;表达式b+=(float)(a+b)/2运算后b=0.charc;表达式c='a'-'A'+,B'运算后,c的值 〇.表达式a=(a=(2,3),a+2)运算后a=。.表达式a=3,b=a,c-a*b,a+b+c的值为〇181表达式b=((b=(2,3),b+2),15+b)运算后,b=。.表达式b+=b=((b=(2,3),b+2),15+b)运算后,b=。20,表达式b+=b-=((b=(2,3),b+2),15+b)运算后,b=。21.表达式b=35/7*5—7%4*4运算后b=。221表达式(int)(sqrt(0.25)+5.7)运算后,值为〇23、若k为int整型变量且赋值11。请写出运算k++后表达式的值ー和变量的值 «24、若x为double型变量,请写出运算x=3.2,++x后表达式的值^和变量的值ー ー。25、在C语言程序中,用关键字定义基本整型变量,用关键字定义单精度实型变量,用关键字定义双精度实型变量,用关键字定义字符型变量。26、把al、a2定义成单精度实型变量,并赋初值1的定义语句是。27、表达式3.5+1/2的计算结果是〇28、结构化程序由、ヽ三种基本结构组成。29、C语言语句以为结束标志,语句主要分为和两种。30、数学表达式二空也二ゆ竺用C语言表达式表示为 02a31,C语言中的标识符只能由三种字符组成,它们是ヽヽ=32、C语言规定,不同类型的数据可以在同•表达式中进行混合运算,运算时要进行类型转换.数据的转换方式有两种:ー种是,ー种是。33、设x=5,y=2,则表达式x*二y+8的值为034、voidmain(){int1i=l;j=2;m=0;n=0;m+=i++;n-=-j;printf(“%d,%d,%d,%d”,ij,m,n);}运行后i,j,m,n的值是〇35、下面的程序运行结果为0voidmain()(floatx;inti;x=4.8;i=(int)x;printf(',x=%f4=%d';x4);)36、若有以下程序段:intcl=l,c2=2,c3;c3=1.0/c2*cl;则执行后,c3中的值是37、在内存中,存储字符'nf要占用个字节,存储字符串“m”要占用个字节,存储字符串“abed”要占用个字节。38、表达式x=(a=3,6*3)和表达式x=a=3,6*a分别是表达式和表达式,两个表达式执行完的结果是和,执行后x的值分别是-。39、逗号表达式的形式如下:表达式1,表达式2则逗号表达式的结果是的值。第四章最简单的c程序设计.设intx,y,z:则执行语句标(丫二屹二10)+5)-5;后x值为,y值为,z值为〇.下面程序的输出是main(){charc=(xf;printf("C:dec=%d,oct二%0,hex二%x,ASCII二%c\n”,c,c,c,c);).设intx;则执行语句x=7;x+=x-=x+x;后x值为.设inta,b?语句a+=b;b=a-b;a-=b;的功能是.设floatk;执行语句scanf("机!”,k);k不能得到正确值的原因为(1);(2);.设floata=LO;intb=3;若输出结果为‘a/b=’0.333333%,则相应的printf语句为(1.0/3的值为0.333333).设chara;a=gatchar();的输入是bくCR>,则a值为,getcharO函数的值为〇.设inta,b,c:执行scanf("%d,%d,%d”,&a,&b,&c):语句使得a,b,c值分别为1,2,3的输入是。.执行scanf("%2d%2d”,&a,&b);的输入是!23456,则a值为,b值为〇10、C语言的格式输出函数是,格式输入函数是0字符数据输出函数是,字符数据输入函数是〇getchar函数的作用是从输入一个字符,putchar函数的作用是输出ー个字符。11、编制程序对实数a与b进行加,减,乘,除计算,要求显示如下结果。jia=70.000000jian=30.000000cheng=1000.000000chu=2.5000000程序:#include<stdio.h>voidmain(void)x=50.0;y=20.0;printf,jia二%Rn”,);printf(',jian=%f\nM,);printfCcheng=%f\n';);printf(nchu=%f\n",);12、以下程序段的输出结果是〇intx=0177;printf("x二%3d,x二%6d,x=%6o,x二%6x,x二%6u\n”,x,x,x,x,x);13、以下程序段的输出结果是〇intx二0177;printf("x=%-3d,x=%-6d,x二$%-06d,x=$%06d,x=%%06d\n",x,x,x,x,x);14、以下程序段的输出结果是。doublea=5.13.789215;printf("a=%8.6f,a=%8.2f,a=%14.8f,a=%14.81f\n^^,a,a,a,a):二、选择题.putchar()函数可以向终端输出ー个A.整型变量或表达式的值 B.实型变量的值C.字符串 D.字符或字符型变量值.以下说法正确的是A.输入项可以为ー个实型常量,如scanf(“%f",3.5);B.只有格式控制,无输入项,也能进行正确输入,如scanf(ua-%d,b=%d");C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(u%4.2f”,&f);D.当输入数据时,必须指明变量的地址,如scanf(“版”,&f);.设有说明:doubley=0.5,z=l.5;intx=10:下面正确的语句是A.z=exp(y)+fabs(x);B.y=loglO(y)+pow(y);C.z=sqrt(y-z); D.x=(int)(atan2((double)x,y)+exp(y-0.2);.设floatx,y!则不合法的赋值语句是A.++x; B.y=(x%2)/10;C.x*=y+8; D.x=y=0;.设charch:则不合法的赋值语句是A.ch='a+b'; B.ch=‘、〇’;C.ch='a'+'b'; D.ch=7+9;6.以下能正确地定义整型变量a,b,c,并给它们都赋值5的语句是_A.inta=b=c=5; B.inta,b,c=5;C.inta=5,b=5,c=5; D.a=b=c=5;7、下列说法正确的是( )〇A、输入项可以是ー个实型常量,如scanf("%「,4.8)。B、当输入数据时,必须指明变量的地址,如scanf("%f',&f)。C、当输入ー个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%5.3F,&f)。D、只有格式控制,没有输入项也能进行正确输入,如scanf("a=%d,b=%d")。TOC\o"1-5"\h\z8、若a、b、c、d、都是int类型变量且初值为0,以下选项中不正确的赋值语句是( )A)a=b=c=d=100; B)d++;C)c+b; D)d=(c=22)-(b++);9,以下选项中不是C语句的是( )A){inti;i++;printf("%d\n",i);}B);C)a=5,c=10 D){;}10、以下合法的C语言赋值语句是( )A)a=b=58B)k=int(a+b); C)a=58,b=58 D)—i;11、以下程序的输出结果是( )A)0 B)1 03 D)不确定的值main(){intx=10,y=3:printf("%d\n",y=x/y);}12、若变量已正确说明为int类型,要给a、b、c输入数据,以下正确的输入语句是( )A)read(a,b,c); B)scanf("%d%d%d",a,b,c);C)scanf("%D%D%D",&a,%b,%c);D)scanf("%d%d%d",&a,&b,&c);13、若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是( )A)10 B)10.0,22.0,33.0 O10.0 D)10222222.02222.033.03333scanf(w%f%f%f”,&a,&b,&c);14、若变量已正确定14、若变量已正确定义,A)a=a+b,b=a-b,a=a-b;C)a=t;t=b;b=a;15、若变量已正确定义,要将a和b中的数进行交换,B)t=a,a=b,b=t;D)t=b;b=a;a=t;以下程序段的输出结果是(卜.面不正确的语句组是(B)5.17D)5.169A)B)5.17D)5.169X=5.16894;Printf(**%f\n",(int)(x*1000+0.5)/(float)1000);TOC\o"1-5"\h\z16、若有以下程序段,c3中的值是( )A)0 B)l/2 00.5 D)1intcl=l,c2=2,c3;c3=cl/c2;17、若有以下程序段,其输岀结果是( )A)3,0,-10 B)0,0,5 O-10,3,-10 D)3,0,3inta=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf(u%d,%d,%d\nM,a,b,c);18、当运行以下程序时,在键盘上从第一列开始输入9876543210<CR>(此处《R>代表Enter),则程序的输出结果是( )A)a=98,b=765,c=4321 B)a=l0,b=432,c=8765C)a=98,b=765.000000,c=4321.000000D)a=98,b=765.0,c=4321.0main(){inta;floatb,c;scanf(M%2d%3f%4f”,&a,&b,&c);printf(u\na=%d,b=%f,c=%f\n”,a,b,c);}19、以下程序的输出结果是( )A)a=%2,b=%5 B)a=2,b=5C)a=%%d,b=%%d D)a趣d,b=%dmain(){inta=2,b=5;printf(Ma=%%d,b=%%d\nw,a,b);}20、若int类型占两个字节,则以下程序段的输出是( )A)-l,-l B)-1,32767〇-1,32768 D)-1,65535inta=~l;printf(u%d,%u\nw,a,a);21、以下程序段的输出是( )A)*496* B)*496* 0*000496* D)输岀格式符不合法intx=496;Printf(“*%06d*\n”,x);TOC\o"1-5"\h\z22、以下程序段的输出是( )A)|3.1415|B)3.0〇| 3|D)| 3.|floata=3.1415;Printf(u|%6.Of|\n",a);23、以下程序段的输出是( )A)12345.67800 B)I12345.6780C)112345.67800 D)112345.6781printf(“|%10.5f|\nM,12345.678);24、以下程序段的输出是( )A)*0000057.66* B)* 57.66*C)*0000057.67* D)* 57.67*floata=57.666;pirntf("%010.2f\n",a);TOC\o"1-5"\h\z25、若从终端输入以下数据,要给变量c赋以283.19,则正确的输入语句是( )A)scanf("%f",c); B)scanf("烬.4f",&c);C)scanf("%6.2f”,&c);D)scanf("艇”,&c);283.1900<CR>26、若变量已正确说明,要求用以下语句给a赋予3.12、给b赋予9.0,则正确的输入形式是(U代表空格)( )A)3.12U,U9.0<CR> B)a=UU3.12b=UUH9<CR>C)a=3.12,b=9<CR> D)a=3.12UU,b=9UUUU<CR>scanf("a=%f,b=%f",&a,&b);27、以下程序的输出结果是( )A)98 B)89 C)66 D)以上三个都不对^include"math,h"main(){doublea=-3.0,b=2;printf("%3.Of%3.Of\n",pow(b,fabs(a)),pow(fabs(a),b));第五章选择结构程序设计ー、填空题.若有int y:则表示命题“y是奇数”成立的C语言表达式是0.在C语言中,表示逻辑“真”值用表示。.条件“2VxV3或xV-10”的C表达式是〇.以下程序运行的结果是〇main(){inta,b,c,d,x;a・二c二〇;b=l;d=20;if(a)d=d-10;elseif(!b)if(!c)x=15;elsex=25;printf("%d\n",d);).若有说明语句:"intx=l,yニ0;”,则表达式x >(y+x)?5:25>y++?’1':’2'的值是〇.以下程序段的运行结果是。intx=l,y=0;switch(x){case1:switch(y){case0:printf(“**1*・勲);break;printf(“**2**”);break;}printf("**3**");}7.以下程序运行的结果是。#includeくstdio.h>main(){intx=l,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;b++;break;)a++;b++;break;)printf(4ta=%d,b=%d\n,,,a,b);)8、inta=8,b=7,w=2,x=5,y=4,z=3;(a=w>x)&&(b=y>z);a的值为,b的值为0inta=-l,b=9;则执行++a&&b-;a的值为,b的值为〇inta=0,b=13;则执行++allb—; a的值为,b的值为09、设n为int型变量,请写出描述“n是奇数”的表达式是:,请写出描述“n是偶数”的表达式是:。10、若变量巳正确定义,以下语句段的输出结果是〇x=0,y=2,z=3;switch(x){case0:switch(y=2){case1:printf(break;case2:printf(a%99);break;)switch(z){case1:printf("$");printf("*");break;default:printf("#");}}11、请写出与以下表达式等价的表达式A)B).!(x>0)B)!012、当a=l,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为ーヽif(a>c)b=a;a=c;c=b;13、C语言中用表示逻辑值“真”,用表示逻辑值“假”。14、C语言中的关系运算符按优先级别是ー ー、ー15、C语言中的逻辑运算符按优先级别是ー、 ー、ー—.16、C语言中的关系运算符和逻辑运算符的优先级别是_、ヽ、ー、17、C语言中逻辑运算符的优先级髙于算术运算符。18、将下列数学式改写成C语言的关系表达式或逻辑表达式A)和 A)a=b或a<cB)|x|>419、请写出以下程序的输出结果ー。main(){inta=100;if(a>100)printf(“%d\n”,a>100);elseprintf("%d\n”,aく=100);}二、选择题TOC\o"1-5"\h\z1、设:inta=l力=2«=30=4,01=2,11=2;执行(0I=3>1))&&(n=c>d)后n的值为( )。A、1 B、2 C、3 D、42、若a=l,b=2,c=3,d=4;则条件表达式a>b?a:cvd?c:d结果为( )A、4B、3C、2D、13、在嵌套的if-else语句中,else总是与( )配对。A、其之前最近的if B、第一个ifC、缩进位置相同的ifD、其之前最近的且不带else的if4、程序片段执行后输出结果是( )intx=5,y=8;printf('*%d",x<y?x:(x,y));A、5B、8C、5,8D、编译出错5、能表示整数x符合下面两个条件的语句是()〇(1)“能被4整除,但不能被100整除”(2)能被4整除,又能被400整除A、(x%4==0&&x%100!=0)llx%400==0B、(x%4==0llx%100!=0)&&x%400==0C、(x%4==0&&x%400!=0)llx%100==0 D、(x%100==0llx%4!=0)&&x%400==06、在C程序中,判逻辑值时,用“非〇"表示逻辑值“真”,又用“〇"表示逻辑值“假”。在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”。( )A、1 0B>01 C、非〇非。D、117、下列运算符中,不属于关系运算符的是( ).Aヽ<B、>=C、!D、!=8、下面能正确表示变量a在区间[0,8]或(4,10)内的表达式为:()〇Aヽa>=0lla<=8lla>4lla<10 B、a>=0&&a<=8&&a>4&&a<10C、(a>=0lla<=8)&&(a>4lla<10)D、a>=0&&a<=8lla>4&&a<109、设整型变量a值为9,则下列表达式中使b的值不为4的表达式:( )。A、b=a/2B、b=a>5?4:2C、b=a%2D、b=8-(3,a-5)10、执行以下语句后b的值为()〇inta=5,b=3,w=1,x=2,y=3,z=4;(a=w>x)&&(b=y>z);A、6 B、0C、1D、3TOC\o"1-5"\h\z11、下列运算符中优先级最高的运算符是( )A)! B)% C)-= D)&&12、下列运算符中优先级最低的运算符是( )A)|| B)!= 〇<= D)+13、为表示关系x>=y>=z,应使用的C语言表达式是( )A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z)0(x>=y>=z) D)(x>=y)&(y>=z)14、设a、b和c都是int型变量,且a=3,b=4,c=5i则以下的表达式中,值为。的表达式是( )A)a&&b B)a<=bC)a||b+c&&b-cD)!((a<b)&&!c|I1)15、以下程序的输出结果是( )A)0 B)1 C)2 D)3main(){inta=2,b=T,c=2;if(a<b)if(b<0)c=0;elsec+=l;printf(“机!、n”,c);}16、以下程序的输出结果是( )A)1 B)2 〇3 D)4main(){intw=4,x=3,y=2,z=l;printf(“%d\n”,(w<x?w:zくy?z:x));}17、若执行以下程序时从键盘上输入3和4,则输出结果是( )A)14 B)16 018 D)20main(){inta,b,s;scanf(<<%d%d>,,&a,&b);s=a;if(a<b)s=b;s*=s;printf("%d\n",s);|18、下面的程序片段所表示的数学函数关系是( )r-1(X<O)A)y=- 0(x=0)< 1(x>0)’ 1(x<0)B)y=< -1(x=0)〔0(x>0), 0(x<0)C)yj-1(x=0)ヽ1(x>0)"-l(x<0)D)y=イ1(x=0)I0(x>0)y=-l;if(x!=0){if(x>0)y=l;}elseyニ〇;19、运行以下程序后,输出( )A)#### B)&&&&C)####&&&& D)有语法错误不能通过编译main(){intk=-3;if(k<=0)printf(*****\n”);elseprintf( );}20、若a和b均是正整数型变量,以下正确的switch语句是( )switch(pow(a,2)+pow(b,2)) (注:调用求募的数学函数){case1:case3:y=a+b;break;case0:case5:y=a-b;}switch(a*a+b*b);{case3:case1:y=a+b;break;case0:y=b-a;break;}switcha{default:x=a+b;case10:y=a-b;break;case11:y=a*d;break;}switch(a+b){case10:x=a+b;break;case11:y=a-b;break;第六章循环控制.执行下面程序段后,k值是。k=l;n=263;do{k*=n%10; n/=10; }while(n);.鸡兔共有30只,脚共有90个,下面的程序段是计算鸡兔各有多少只。for(x=l;x<=29;x++){y=30—x;if()printf(<4%d,%d\n”,x,y);).下面程序的运行结果是〇main(){inti,x,y;i=x=y=0;do{++i;if(i%2!=0){x=x+i;i++;}y=y+i++;}while(i<=7);printf(wx=%d,y二%d\n”,x,y);}.下面程序的运行结果是〇main(){inti,j=4;for(i=j;i<=2*j:i++)switch(i/j){case0:printf(“**”);break;printf(“升”);)).以下程序段的功能:从键盘输入的字符中统计数字字符的个数,用换行符结束循环。intn=0,c;c=getchar();while(){if()n++;c=getchar();}.下面程序的输出结果是〇main(){inti,j, k=19;while(i=k-l){ k-=3;if(k%5==0) {i++:continue;}elseif(k<5)break;i++;}printf("i=%d,k=%d\n”,i,k);).填空完成下面程序,其功能是打印100以内个位数为6且能被3整除的所有数。main(){inti,j;for(i=0;;i++){j=i*10+6;if()continue;printf(%d",j);}}.下面程序的运行结果是main(){inti=l;while(i<=15)if(++i%3!=2)continue;elseprintf(,i);printf("\n");}.完善下面程序,其功能是计算100至1000之间有多少个数其各位数字之和是5。main(){intis,k,count=0;for(i=100;i<=1000;i++)(s=0;k=i;while(){s=s+k%10;k=0;}f(s!=5);elsecount++;)printf(%dw,count);}.填空完成下面程序,其功能是从3个红球,五个白球,六个黑球中任意取出八个球,且其中必须有白球,输出所有可能的方案。voidmain(){inti,j,k;printf("\n hongbaihei\n");for(i=0;i<=3;i++)for(;j<=5;j++)if( )printf("%3d%3d%3d\n”,i,j,k);)}".下面程序的运行结果是〇#include<stdio.h>main(){inti=5;do{switch(i%2){case4:i--;break;case6:i—;continue;}iーー;i-;printf("%d”,i);}while(i>0);}20、以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。main(){floatx,amax,amin;scanf("%f",&x);amax=x;amin=x;while(){if(x>amax)amax=x;if()amin=x;scanf( ,&x);printf(u\namax=%f\namin=%f\n,>,amax,amin);}21、有以下程序段:s=l.0;for(k=l;k<=n;k++)s=s+l.0/(k*(k+D);printf("%f\n",s);请填空,使下面的程序段的功能完全与之等同。s-0.0;k二〇;do{s=s+d;d=1.0/(k*(k+l));)while( );printf(^%f\nw,s);22、当执行以下程序段后,i的值是ーヽj的值是ーヽk的值是ー。inta,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=O;for(;a>b;++b)i++;while(a>++c)j++;dok++;while(a〉d++);23、以下程序段的输出结果是intk,n,m;n=10;m=l;k=l;while(k<=n)m*=2;printf("%d\n",m);24、以下程序段的输出结果是ーmain(){intx=2;while(x-);printf("%d\n",x);)25、以下程序段的输出结果是ーinti=0,sum=l;do{sum+=i++;}while(i<5);printf("%d\n",sum);26、下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。main()(血ij;for(i=0;;i++){j=i*10+6;if()countinue;printf("%d”,j);))27、下面程序的功能是输出1至り100之间每位数的乘积大于每位数的和的数。例如数字26,数位上数字的乘积!2大于数字之和8。main(){intn,k=l,s=0,m:for(n=l;n<=l00;n++){k=l;s=0;while(){k*=m%10;s+=m%10;if(k>s)printf("%d”,n);二、选择1.while(!E);语句中,条件表达式等价于 .A.E==0 B.E!=lC.E!=0D.E==l2.下面程序的运行结果是0intn=0;while(n++<=2);printf("%d",n);A.2 B.3C.4D.有语法错.下面程序段的运行结果是〇a=l;b=2;c=2;while(a<b<c){t=a;a=b;b=t;c ;)printf("%d,%d,%d\n”,a,b,c);A.1,2,0 B.2,1,0C.1,2,1D.2,1,1.C语言中,while与do-while循环的主要区别是〇do-while的循环体至少无条件执行一次while的循环控制条件比do-while的循环控制条件严格do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句.对for(表达式1;;表达式3)可理解为〇for俵达式1;;表达式3)for(表达式1;1:表达式3)for(表达式1;表达式1;表达式3)for(表达式1;表达式3;表达式3).以下for循环体执行的次数是〇for(x=0,y=0; (y=123)&&(x<4);x++);A.为无限次循环 B.循环次数不定 C.4次D.3次.下列不是死循环的是0inti—100;while(1){i=i%100+l;if(i>100)break;}for(;;);intk=0; do{++k;}while(k>=0);ints=36;while(s); s;8・执行语句for(i=l;i++く4;);后i的值为0A.3B.4 C.5 D.不定9.下列程序段的输出结果是。intx=3;do{printf("%2d\n”,x-=2);}while(!( x));A.1B.1-2C.3,0D«是死循环10.以下四个关于C语言的结论中,只有一个是错误的,它是〇A.可以用while语句实现的循环一定可以用for语句实现B.可以用for语句实现的循环一定可以用while语句实现C.可以用do-while语句实现的循环一定可以用while语句实现D.do-while语句与while语句的区别仅是关键字“while”出现的地方不同11、以下程序段的输出结果是( )A)9 B)1 〇11D)10intk,j,s;for(k=2;k<6;k++,k++){s=l;for(j-k;j<6;j++)s+=j;)printf("%d'n",s);12、以下程序段的输出结果是()A)12 B)15C)20D)25inti,j,m=0;for(1=1;I<=5;I+=4)for(j=3;j<=19;j+=4)m++;printf("%d\n",m);13、以下程序段的输出结果是()A)10 B)9OioD)99 8988 78776intn=10;while(n>7){n—;printf(“刎、n”,n);)14、以下程序段的输出结果是()A)1 B)30 01-2D)死循环intx=3;do{printf("%3dJ,,x-=2);}while(!(—x));15、以下程序的输出结果是( )A)15 B)14 C)不确定 D)0main(){inti,sum;for(i=l;i<6;i++)sum+=sum;printf("%d\n",sum);}16、以下程序的输出结果是( )A)741 B)852 0963 D)875421main(){inty=10;for(;y>O;y-)if(y%3==0){printf("%d",一y);continue;}}TOC\o"1-5"\h\z17、若x是int型变量,以下程序段的输出结果是( )A)**3 B)##3 C)##3 D)**3##4##4 **4 **4##5 **5**5 ##5for(x=3;x<6;x++)printf((x/2)?( ):(“##%d\n”),x);18、以下程序的输出结果是( )A)*#*#*#$ B)#*#*#*$〇・#*#$ D)#*#*$main(){inti;for(i=l;i<=5;i++){if(i%2)printf("*");elsecontinue;printf("#”);}printf("$\n");}19、以下叙述正确的是( )A)do-while语句构成的循环不能用其他语句构成的循环代替.B)do-while语句构成的循环只能用break语句退出C)用do-while语句构成循环时,只有在while后的表达式为非零时结束循环D)用do-while语句构成循环时,只有在while后的表达式为零时结束循环20、以下程序的输出结果是( )A)3981 B)4284 02668 D)2870main(){intx,i;for(i=l;i<=100;i++){x=i;if(++x%2=0)if(++x%3—0)if(++x%7==0)
printf("%d",x);)printf("\n");第七章数组.程序#include<stdio.h>tfinclude<string.h>main(){chars[6];inti;strcpy(s,"ABCDE");gets(s);puts(s);)若分别输入以下字符串(从第一列开始输入,くCR>代表换行符):boy<CR> 则输出结果是。agirl<CR> 则输出结果是〇.程序:^include<stdio.h>main(){inta[4],x,i;for(i=l;i<=3;i++)a[i]=0;scanf("%d",&x);while(x!=-1){a[x]+=1;scanfC%d",&x);}for(i=l;iく=3;i++)printf("a[%2d]=%4d\n〃,i,a[i]);}若输入数据如下:(<CR>代表换行符)312322211333331122321232-1<CR>输出结果是。.下面程序段的运行结果是ロfor(i=0;i<3;i++){for(j=0;j<3;j++){if(i==3)a[i][j]=a[i—1][a[i-1]elsea[i][j]=j;printf厂%4d”,a[i][j]);)printf("\n");.程序:ttinclude<stdio.h>main(){intb[51],x,i,j=0,n=0;scanf("%d",&x);while(x>—1){b[++n]=x;scanf(“%d",&x);}for(i=l;i<=n;i++)if(b[i]%2==0)b[++j]=b[i];for(i=l;i<=j;i++)printf(“%3d",b[i]);printf(w\nw);}若输入数据如下(此处<CR>代表换行符):7105467983246122379111415-1<CR>贝リ输出”:果是.给a数组输入10,8,6,4,2共5个数,放在a[l]到a[5]中,请阅读程序,回答:①若给x输入5,以下程序的输出结果是〇②若给x输入15,以下程序的输出结果是〇③若给x输入10,以下程序的输出结果是〇#include<stdio.h>main(){inta[51],x,i,n;printf(wEntern:つ;scanf("%d”,&n);for(i=l;i<=n;i++)scanf(a%dff,a+i);printf(uEnterx:");scanf("%d”,&x);a[0]=x;i=n;while(x>a[i]){a[i+l]=a[i];i ;}a[i+l]=x; n++;for(i=l;i<=n;i++)printf(“%3d",a[i]);printf(“\n”);}.以下程序的输出结果是〇#include<stdio.h>charstr[]=aSSSWILTECHl\l\llW\lWALLMPlw;main(){intk;charc;for(k=2;(c=str[k])!=‘、〇’;k++){switch(c){case'A':putchar('a');continue;case,r:break;case1 :while((c=str[++k])!='\T&&c!=case9 :purchar('#');case'E':case'L':continue;default:putchar(c);continue;)putchar('ギ);}printf("、n");)7.阅读程序,回答问题。#defineMAXN10#definen4main(){intk,d,b,e,i,j,a[MAXN][MAXN];L0:k=l;LI:for(d=O;dく2*n—1;d++){b=d<n?0:d+l-n;e=d<n?d:n-1;L2:for(i=b;i<=e;i++)L3:a[i][b+e—i]=k++;}for(i=0;i<n;i++)for(j=0;j<n;j++)printf("%3d%c”,a[i][j],(j!=n-1)?''、n');}问题:(1)程序输出第一行结果是〇(2)若将程序中标号为L2的代码行改为:for(i=e;i>=b;iーー)后,程序输出的第一行结果将是〇(3)欲实现问题⑵的要求,不改标号L2的行,改标号为的行为也能实现同样的效果(只允许改一行代码)。8.以下程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并到c数组中。#include<stdio.h>main(){inta[10]={1,2,5,8,9,10},an=5;intb[10]={l,3,4,8,12,18),bn=5;inti,j,k,c[20],max=9999;a[an+l]=b[bn+l]=max;i=j=k=0;while((a[i]!=max)I|(b[j]!=max))if(a[i]<b[j]){c[k]=;k++;}else{c[k]=:k++;}for(i=0;i<k;i++)printf("%4d",c[i]);printf(*\n0;}9.以下程序把ー个整数转换成二进制数,所得二进制数的每一位放在ー维数组中,输出此二进制数。注意:二进制数的最低位放在数组的第一个元素中,请填空。#include<stdio.h>main(){intb[16],x,k,r,i;printf("输入ー个整数给x:");scanf("%d",);printf("%6dbinarynumis:\n,x);k=-1; /・变量k用作b数组的下标・/do{r=x%;b[]=r;x/=;}while(x!=0);for(i=k;i>=0;i—)printf("%d",b[i]);}*10.函数求阶乘n!,当n较大时,由于计算机字长有限,不能求,可采用数组的方法来实现,下列程序求n=50时的阶乘值。#defineMAX100main(){inti,j,k,kc,n=50;intm[MAX];for(i=0;iくMAX;i++)m[i]=0;m[0]=l;for(i=2;i<=n;i++){kc=0;for(j=0;j<MAX;j++){k=m[j]*i+kc;kc=k/10;if()printf("overflow'n);elsefor(i=MAX—1;i>=0;i—)printf("\n");1k若有定义:doublex[3][5];则x数组中行下标的下限为,列下标的上限为.下面程序以每行4个数据的形式输出a数组,请填空。MefineN20main(){inta[N],i;for(i=0;i<N;i++)scanf("畑!”, );for(i=0i〈N;i++){if()printf("%3d",a[i]);}printf("\n");}.下面程序可求出矩阵a的主对角线上的元素之和,请填空。main(){inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if()sum=sum+;printf("sum=%d\n",sum);}.当从键盘输入18并回车后,下面程序的运行结果是.main(){intx,y,i,a[8],j,u,v;scanf("%d",&x);y=x;i=0;do{u=y/2;a[i]=y%2;i++;y=u;}while(y>=l)for(j=i-l;j>=0;j—)printf("%d",a[j]);).下面程序用插入法对数组a进行降序排序。请填空。main(){inta[5]={4,7,2,5,1};inti,j,m;for(i=l;i〈5;i++){m=a[i];j=;while(j>=O&&m>a[j]) =m;}for(i=0;i<5;i++)printf(*%d*,a[i]);printfC\nO;).下面程序的功能是在三个字符串中找出最小的,请填空。#include<stdio.h>#include<string.h>main(){chars[20],str[3][20];inti;for(i=0;i<3;i++)gets(str[i]);strcpy(s, );if(strcmp(str[2],s)<0)strcpy(s,str[2]);printf(*%s\n*, );}.下面程序的运行结果是.#include<stdio.h>main(){charsロ="ABCCDA";intk;charc;for(k=l;(c=s[k])!=,\0*;k++){switch(c){case'A':putchar('%');continue;case'B':++k;break;default:putchar('ギ);case'し:putchar('&');continue;}putchar('#');})18、下面程序的功能是删除字符串s中的空格。#include<stdio.h>main(){char*s=MBeijingligongdaxue”;intij;for(i=j=0;s[i]!=W;i++)if(我!廿');else;s[j]=AO';printf(H%sH,s);二、选择题.在C语言中,引用数组元素时,其数组下标的数据类型允许是。A.整型常量 B.整型表达式C.整型常量或整型表达式 D,任何类型的表达式.若有说明:inta[10]5则对a数组元素的正确引用是〇A.a[10] B.a[3,5] C.a(5) D.a[10-10].以下对二维数组a的正确说明是。A.inta[3][];B.floata(3,4);C.doublea[l][4];D.inta[10]={10*1};.不正确的字符串赋值或赋初值方式是«charstr[]={,s,,,t,,,r,,,i,,,n,,,g,,,\0,};charstr[7]={'s','t','r','i','n','g'};charstrl[10];strl="string”;D.charstrl[]="string”,str2[]=*12345678*;.若有以下说明和语句,则输出结果是。chars[12]="abook!";printf("%.4s”,s):A.abook! B.aboC.abook!□(代表空格) D.因格式描述不正确,没有确定的输出.若有以下说明和语句,则输出的结果是。charsp[]=<<\x69\082\n";printf(**%d",strlen(sp));A.3B.5C.1D.字符串中有非法字符,输出值不定.两个静态数组A和数组B进行如下初始化:staticcharA[]="ABCDEF”;staticcharB[]={'A','B','C',"D',"E","F');则叙述正确的是。A.A和B完全相同 B.A和B只是长度相等C.A和B不相同,A是指针数组D.A数组长度比B数组长.若有以下的说明和语句,则它与中的说明是等价的。chars[3][5]={*aaaa*,*bbbb*,*cccc*};chars[][]={*aaaa*,*bbbb*,*cccc*};chars2[3][]={*aaaa*,*bbbb*,*cccc*);chars3[][5]={*aaaa*,*bbbb*,*cccc*);chars4[][4]={*aaaa*,*bbbb*,*cccc*};9、以下为ー维整型数组a的正确说明是.a)inta(10): b)intn=10,a[n];c)intn: d)#defineSIZE10scanf(*%d*,&n); inta[SIZE];inta[n];10、以下对二维数组a的正确说明是.a)inta[3][]: b)floata(3,4);c)doublea[l][4]; d)floata(3)(4);11、若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为.(假设a[〇][〇]位于数组的第•个位置上。)a)i*m+jb)j*m+ic)i*m+j-ld)i*m+j+l12、若二维数组a有m列,则在a[i][j]前的元素个数为.a)j*m+ib)i*m+jc)i*m+j-ld)i*m+j+113、若有以下程序段:inta[]={4,0,2,3,1},i,j,t;for(i=l;i<5;i++){t=a[i];j=i-l;while(j>=O&&t>a[j]){a[j+l]=a[j];j—;}a[j+l]=t;}则该程序段的功能是.a)对数组a进行插入排序(升序)b)对数组a进行插入排序(降序)c)对数组a进行选择排序(升序)d)对数组a进行选择排序(降序)14、有两个字符数组a、b,则以下正确的输入语句是.a)gets(a,b); b)scanf("版%s〃,a,b);c)scanf("%s%s",&a,&b);d)gets("a"),gets("b");15、下面程序段的运行结果是.charaL7]="abcdefz/;charb[4]="ABC";strcpy(a,b);printf("%c",a[5]);a)空格b)\0c)ed)f16、判断字符串s!是否大于字符串s2»应当使用.a)if(sl>s2) b)if(strcmp(sl,s2))c)if(strcmp(s2>sl)>0)d)if(strcmp(sl,s2)>0)17、下面程序的功能是从键盘输入行字符,统计其中有多少个单词,单词之间用空格分隔,请选择填空。#include<stdio.h>main()(chars[80],cl,c2二’‘;inti=0,num=O;gets(s);while(s[i]!=‘、〇'){cl=s[i];if(i=0)c2=,;elsec2=s[i-l];if( )num++i++;}printf("Thereare%dwords.\n\num);}a)c1ニニ''&&c2ニニ'' b)c1!二''&&c2ニニ''c)clニニ''&&c2!=' d)cl!二''&&c2!二''18、下面程序的运行结果是.#include<stdio.h>main(){charstr口="SSSWLIA”,c;intk;for(k=2;(c=str[k])!二’、〇';k++){switch(c){case'I':++k;break;case'L':continue;default:putchar(c);continue;)putchar('ギ);})a)SSW*b)SW*c)SW*Ad)SW第八章函数ー、填空题1.以下程序是选出能被3整除并且至少有一位是5的两位数,打印出所有这样的数及个数。sub(intk,intn){intal,a2;a2=;a1=k-;if(k%3==0&&a2=5)||(k%3=0&&al==5){printfk);n++;returnn;}elsereturn-1;)main(){intn=0,k,m;for(k=10;k<100;k++){m=sub(k,n);if(m!=-l)n=m;}printf("\nn二%d",n);}2«用折半查找法填空(需要查找的数为m):binary(inta[10],intm){intlow=0,high=9,mid;while(low<=high){mid=(low+high)/2;if(m<a[mid]);elseif(m>a[mid]);elsereturn(mid);)return(-1);).以下程序正确的运行结果是〇^include,stdio.h"voidnum()externintx,y;inta=15,b=10;x=a-b; y=a+b;)intx,y;main()inta=7,b=5;x=a+b;y=a-b;num();printf("%d,%d\n”,x,y);}.以下程序正确的运行结果是。main()inta=2,i;for(i=0;iく3;i++)printfぐ‘%d”,f(a++));)f(inta)intb=0;staticintc=3;++,c++;return(a+b+c);).以下程序正确的运行结果是0^include“stdio.h"main()intk=4,m=l,p;p=func(k,m);printf(“紀,",p);p=func(k,m);printf("%d\n",p);}func(inta,intb)staticintm=O,i=2;i+=m+l;m=i+a+b;return(m);).若输入的值是725,以下程序的运行结果是。#include"math,h”main(){intn;scanf(“留d”,&n);printf("%d=",n);if(n<0)printf("-^);n=fabs(n);fun(n);}fun(intn){intk,r;for(k=2;kくsqrt(n);k++){r=n%k;while(r==0){printf('%d”,k);n=n/k;if(n>l)printfC*");r=n%k;)}if(n!=1)printf(^%d\n",n);)7,下面add函数的功能是求两个参数的和,并将值返回调用函数,函数中错误部分是,改正后为。voidadd(floata,floatb){floatc;c=a+b;returnc;).以下程序正确的运行结果是〇main()inti=2,x=5,j=7;fun(j,6);printf(*i=%d,j=%d,x=%d\n",i,j,x);}fun(inti,intj)intx=7;printf("i=%d,j=%d,x=%d\n",i,j,x);).以下程序正确的运行结果是〇main(){increment();increment();increment();}increment(){intx=0;x+=l;printfx);}.以下程序的功能是用二分法求方程2x3-4x2+3x-6=0的根,并要求绝对值误差不超过0.001〇请填空。#include"stdio.h"#include"math,h”floatf(floatx){return(2*x*x*x-4*x*x+3*x-6);}main(){floatm=-100,n=90,r;r=(m+n)/2;while(f(r)*f(n)!=0){if()m=r;elsen=r;if()break;r=(m+n)/2;)printf("Thisfangchengjieis%6.3f\n",r);).已有函数pow,现要求取消变量i后pow函数的功能不变。请填空。修改前的pow函数pow(intx,inty){inti,j=l;for(i=l;i<=y;++i)j=j*x;return(j);)修改后的pow函数pow(intx,inty){intj;for(;;)j=j*x;return(j);}.下面是ー个计算阶乘的程序。程序中的错误语句是,应改为0#include"stdio.h"doublefactorial(int);main(){intn;printf("Enteraninteger:*);scanf("%d",&n);printf("\n\n%d!=%lg\n\n",n,factorial(n));)doublefactorial(intn){doubleresult=l.0;while(n>l||n<170)result*=--n;returnresult;}.下面程序的功能是,运行结果是〇longfib(intg){switch(g){case0:return0;casel:case2:return1;}return(fib(g-l)+fib(g-2));)main(){longk;k=fib(7);printf("k二%d\n',k);}.以下程序正确的运行结果是〇intxl=30,x2=40;main(){intx3=10,x4=20;sub(x3,x4);sub(x2,xl);printf("%d,%d,%d,%d\n〃,x3,x4,xl,x2);)sub(intx,inty){xl=x;x=y;y=xl;}15、下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。hcf(intm,intn){intr;if(m<n){r=m;n=r;)r=m%n;while(){m=n;n=r;r=m%n;)16、下面程序的功能是显示具有n个元素的数组s中的最大元素。#defineN20main(){inti,a[N];for(i=0;i<N;i++)scanf("%dn,&a[i]);printf("%d\n",);)fmax(ints[],intn){intk,p;for(p=0,k=p;p<n;p++)if(s[p]>s[k]):return(k);1フ、下面的函数是一个求阶乘的递归调用函数。facto(intn){if(n==1);elseretum();)18、用递归实现将输入小于32768的整数按逆序输出。如输入12345,则输出54321。#include"stdio.hnmain(){intn:printf(MInputn:*');scanf(M%dH,);r(n);printf(“也”);)r(intm){printf("%d”,);m=;if( )19、下面函数的功能是将一个整数存放到ー个字符数组中。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论