• 208.00 KB
  • 2022-04-22 11:20:42 发布

《C程序设计》1-5练习题答案.doc

  • 11页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《C程序设计》练习题一、选择题1、c语言程序设计的基本单位是()。A)程序行B)语句C)函数D)字符2、一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()。A)有零个或多个输入B)有零个或多个输出(有一个或多个输出)C)有穷性D)可行性3、结构化程序由三种基本结构组成,三种基本结构组成的算法()A)可以完成任何复杂的任务B)只能完成部分复杂的任务C)只能完成符合结构化的任务D)只能完成一些简单的任务4、以下叙述中正确的是()A)C程序中注释部分可以出现在程序中任意合适的地方B)花括号"{"和"}"只能作为函数体的定界符(还可以是复合语句,switch结构中)C)构成C程序的基本单位是函数,所有函数名都可以由用户命名(只有自定义函数由用户命名)D)分号是C语句之间的分隔符,不是语句的一部分(分号是C语句结束标记,是语句的一部分)5、以下叙述中正确的是()A)C语言的源程序不必通过编译就可以直接运行B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令C)C源程序经编译形成的二进制代码可以直接运行D)C语言中的函数不可以单独进行编译6、C语言中最基本的数据类型包括()A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型7、vc6.0中int类型变量所占字节数是()A)1B)2C)3D)48、以下每个选项都代表一个常量,其中正确的整型常量是A)0.0B)-20C)1,000D)4569、一下每个选项都代表一个常量,其中不正确的实型常量是()A)2.606E-1B)0.8103e2C)-77.7D)44.6e-210、以下选项中,为合法关键字的是()A)SwicthB)cherC)CaseD)defaultE)unsiguld11、以下符号不能用作用户标识符的是()用户标识符命名规则:只能是数字、字母、下划线组成,不能以数字开头,不能是系统的关键字,也不提倡用预定义标识符来命名。A)IFB)SwitchC)getsD)case12、以下符号中不合法的用户标识符是()A)_123B)printfC)a$D)Dim13、以下符号中不合法的用户标识符是()A)abc.cB)fileC)MainD)PRINTF14、可用作用户标识符的一组标识符是()A)void(关键字)define(关键字)wordB)a3_b3_xyzIFC)For-abc(应该是下划线)CaseD)2a(数字开头)DOsizeof(是关键字)15、C语言中提供的合法的数据类型关键字()A)DoubleB)shortC)integerD)Char16、以下运算符中要求运算对象必须是整型的是()A)%B)/C)=D)*17、不能正确表示ab/cd的C语言表达式的是()A)a/(c*d)*bB)a*b/c/dC)a*b/c*dD)a*b/(c*d)18、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是()A)abs(x-y)<10(abs是绝对值函数)B)x-y>-10&&x-y<10C)(x-y)<-10||!(y-x)>10D)(x-y)*(x-y)<10019、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()除法运算符的规则,如果两边的运算对象都是整型,结果必定是整数,也即3/2的结果为1,y=x+3/2=1+1=2,但y的类型是double类型,所以结果是2.0A)1B)2C)2.0D)2.520、若以下选项中的变量已正确定义,则正确的赋值语句是()A)x1=26.8%3;%要求两边都是整型数据B)1+2=x2;赋值运算符=要求=号左侧一定是变量C)x3=0x12;D)x4=1+2=3;赋值运算符的求值顺序是自右向左,那么1+2=3,等号左侧就不是变量,而是表达式,所以是错误的。21、以下叙述正确的是(多选)()A)在C程序中无论是整数还是实数,只要在允许范围内都能准确无误的表示。(实数不能准确无误的表示。)B)若在定义语句doublea,b;之后,因为变量a、b已经正确定义,因此立刻执行这样的表达式:a=b+9.3是正确的。C)在C程序中,常量、变量、函数调用,都是表达式的一种。D)在main函数中,变量一经定义,系统将自动赋予初始值。E)凡是表达式都有一个值。22、以下的变量定义中,合法的是()A)float3_four=3.4;(3_four变量名不合法)B)int_abc_=2.1e-2;可以这样赋值,只取整数部分赋值,会造成数据的丢失C)doublea=1+4e2.0;(实型常量表示e后面的指数必须是整数)D)shortdo=15;(do是关键字,因此这个变量名不合法)23、有以下定义语句doublea,b;intw;longc;若各变量已正确赋值,则下列选项中正确的表达式是()A)a=a+b=b++a+b=b++等号左侧不是变量,而是表达式B)w%((int)a+b)((int)a+b)的类型还是double类型C)(c+w)%(int)aD)w=a==b;此为赋值语句,题中要表达式24、有以下程序main(){intm=0256,n=256;printf("%o%on",m,n);}程序运行后的输出结果是()A)02560400B)0256256C)256400D)40040025、有以下程序11 main(){inta=666,b=888;printf("%dn",a,b);//如果改成printf(“%d%dn”,a);则输出结果为666,和一个随机值}程序运行后的输出结果是()A)错误信息B)666C)888D)666,88826、若有intk=11;则表达式(k++*1/3)的值是()A)0B)3C)11D)1227、在C语言中,如果下面的变量都是int类型,则输出的结果是()。sum=pad=5;pad=sum++,pad++,++pad;A)7B)6C)5D)428、以下程序的输出结果是()。#includemain(){inti=010,j=10;printf("%d,%dn",++i,j--);}A)11,10B)9,10C)010,9D)10,929、已知在ASCII代码中,字母A的序号为65,以下程序的输出的结果是()。#includemain(){charc1="A",c2="Y";printf("%d,%dn",c1,c2);}A)因输出格式不合法,输出错误信息B)65,90C)A,YD)65,8930、以下程序的输出结果是 ()。#includemain(){printf("%dn",NULL);//NULL是符号常量}A)不确定的(因变量无定义)B)0C)-1D)131、设有语句chara="71";则变量a()。’71’与’71’等价,表示字符’9’A)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法33、以下程序的输出结果是()。#includemain(){inta=2,c=5;printf("a=%%d,b=%%dn",a,c);%%是用来输出一个%,此时就没有相应的%d来输出a和c的值}A)a=%2,b=%5B)a=2,b=5C)a=%%d,b=%%dD)a=%d,b=%d34、以下程序的输出结果是 ()。#includemain(){inta,b,d=241;a=d/100%9;除法/与取余符号%的优先级相同,按照自左向右顺序计算,241/100的结果是2,2%9的余数是2b=(-1)&&(-1);逻辑表达式的结果不是0就是1,逻辑与符号,只要左右两边都是非0数据,则结果一定为真,用数值1表示。printf("%d,%dn",a,b);}A)6,1B)2,1C)6,0D)2,035、以下程序的输出结果是()。#includemain(){inti=1,j=3;printf("%d",i++);{inti=0;i+=j*2;printf(",%d,%d,",i,j);}printf("%d,%dn",i,j);}A)1,6,3,1,3B)1,6,3,2,3C)1,6,3,6,3D)1,7,3,2,336、在字符常量定义#definePI3.14159中,用标识符PI代替一个()符号常量通常用大写字母表示A)单精度数B)双精度数C)常量D)字符串37、字符(char)型数据在微机内存中的存储形式是()A)反码B)补码C)EBCDIC码D)ASCII码38、执行下面的程序段()。intx=35;charz="A";intb;b=((x&&15)&&(z<"a"));后,b的值为A)0B)1C)2D)339、假设在程序中a,b,c均被定义成实型,并且已赋大于1的值,则下列不能正确表示代数式的表达式是()A)1/a*b*cB)1/(a*b*c)C)1/a/b/(float)cD)1.0/a/b/c40、设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d)后n的值为()根据逻辑与符号的短路特性来计算,如果左边对象为假,则就停止计算,表达式的结果就为0,此时m的值为0,n的值没有变化,为2A)1B)2C)3D)441、若k是int型变量,且有下面的程序片段:   k=--3;//--和++运算符只针对变量进行自加和自减,而3是常量,所以有语法错误if(k<=0)printf(“####”);elseprintf(“&&&&”);  上面程序片段的输出结果是()   A)####B)&&&&   C)####&&&&D)有语法错误,无输出结果42、若执行下面的程序时从键盘上输入3和4,则输出是()   main(){inta,b,s;   scanf(“%d%d”,&a,&b);//此时a为3,b为411    s=a;//s=3;   if(s=a*5)//此时s=3*5=15,是个非0数据,则if条件表达式成立,执行里面的内嵌语句.//注意:s=a*5与s==a*5不同,前者是赋值运算,后者是关系比较运算printf(“%dn”,s++);   elseprintf(“%dn”,s+b);}A)14B)15C)16D)2043、执行下面程序中输出语句后,a的值是()      main()   {inta;   printf(“%dn”,(a=3*5,a*4,a*5));}/*此题考查复制运算符=和逗号运算符,的优先级,赋值运算符的优先级高于逗号运算符,因此,可以确定a的初值是15,逗号运算符的求解顺序是自左向右,整个逗号表达式的值即为最后一个表达式的值a*5,即15*5,为75.*/A)75B)20C)15D)1044、为表示关系x≥y≥z,应使用C语言表达式()A)(x>=y)&&(y>=z)//还可以写成z<=y&&y<=xB(x>=y)AND(y>=z)C)(x>=y>=z)D)(x>=y)&(y>=z)45、以下程序的输出结果是()main(){intx=10,y=10;printf("%d%dn",x--,--y);}/*x—是先使用x的初值,然后使得x的值减1;--y是先使y的值减1,然后再使用y的值*/A)1010B)99C)910D)10946、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()A)a<>0//c语言中不等于的写法是!=B)!a//此等价于a==0C)a=0//此时a=0是赋值,不是关系比较,当表示比较时用==D)a47、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()main(){intx;scanf("%d",&x);if(x++>5)/*注意x++>5的用法,先使用x,当输入6时,6>5成立,但不马上执行printf(“%d”,x);,而是让x的值加1,此时if中表达式的判断才结束。当输入4时,4>5不成立,要执行else分支,可是在执行之前,x的值要先加1,此时由4变成5,而printf(“%dn”,x--);则是先使用x,也即输出x的值,此时是5,保持不变*/printf("%d",x);elseprintf("%dn",x--);}A)7和5B)6和3C)7和4D)6和448、以下程序的输出结果是()main(){inta=-1,b=4,k;k=(++a<0)&&!(b--<=0);/*此题除考查++、--之外,还考查的是逻辑与&&的短路特性问题逻辑表达式的结果不是0就是1,因此k的值不是0就是1;等号右侧除了有小括号之外,就是逻辑与&&和逻辑非!,逻辑非的优先级高于逻辑与,但有括号先计算括号里面的;a的初值是-1,而++a<0则是,先使得a的值加1,然后再和0进行比较,即为0<0不成立,因此&&左侧的表达式结果为0,根据逻辑与&&的短路特性,如果左侧为假(0值,则无需计算&&右侧的表达式结果,整个逻辑表达式的结果即为假,用0值表示,由于&&右侧表达式没有计算,则b的值将保持不变,仍为4*/printf("%d%d%dn",k,a,b);}A)104B)103C)003D)00449、在C语言中,合法的字符常量是()A)‘84"/*此为字符常量中的转义字符,‘ddd’的形式,也即是后面的三个数字必须是8进制数据,而8进制数据中不允许出现数字8*/B)‘x43"C)‘ab"//字符常量是由一对单引号括起来的单个字符D)“”//此为字符串常量50、下列不正确的转义字符是()A)"\"B)""C)"074"D)""51、若有以下定义和语句,则输出结果是:()intu=010,v=0x10,w=10;//010是一个8进制数据,将其转化成10进制:1×81+0×80=8//0x10是一个16进制数据,将其转化成10进制:1×161+0×160=16//至于为什么要转化成10进制,原因是%d格式符就是用来输出10进制整型数据的printf("%d,%d,%dn”,u,v,w);A)8,16,10B)10,10,10C)8,8,10D)8,10,1052、下面程序的输出是()main(){unsigneda=32768;/*32768是2的16次幂,unsignedint类型占用4个字节,并且无符号数都是正数*/printf("a=%dn",a);/*%d用来输出10进制整型数据,是有符号数据,int类型也占用4个字节,又由于正数在内存中的存储原码和补码相同,就是这个正数的二进制表示形式,因此,a的值按照int类型输出,结果还是32768*/}A)a=32768B)a=32767C)a=-32768D)a=-153、若有以下定义:floatx;inta,b;则正确的switch语句是()A)switch(x){case1.0:printf("*n");//case后只能是整型和字符型常量case2.0:printf("**n");}B)switch(x){case1,2:printf("*n");//case后面只能是整型常量表达式,不能写成1,2的形式case3:printf("**n");//case和3之间有空格}A)C)switch(a+b)D)switch(a+b);//多了分号{case1:printf("n");{case1:printf("*n");case1+2:printf("**n");case2:printf("**n");11 }}54、若a、b均是正整型变量,以下正确的switch语句是()A)switch(a*a+b*b)//缺少{}B)switch(a*a+b*b);//多了分号case1:case3:y=a+b;break;{case3:case0:case5:y=a-b;case1:y=a+b;break;case0:y=b-a;break;}C)switch(a)D)switch(a+b){default:x=a+b;{case10:x=a+b;break;//case和10之间要有空格case10:y=a-b;break;case11:y=a-b;break;case11:x=a*d;break;}}55、若有定义:intx,y;chara,b,c;并有以下输入数据(此处代表换行符,ц代表空格):1ц2AцBцC则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是A)scanf("x=%dy=%d",&x,&y);a=getchar();b=getchar();c=getchar();/*输入格式不符,正确输入应该是x=1y=2的形式,除此,getchar()函数能够接收空格和回车符作为有效字符,也即a=getchar();接收的是回车符,而不是字符A,b=getchar();接收的字符A,而不是字符B,c=getchar();接收的是A后面的空格符,而不是字符C。*/B)scanf("%d%d",&x,&y);a=getchar();b=getchar();c=getchar();/*此时,虽然数值型接收对,但字符接收不符合题中要求,解释同上*/C)scanf("%d%d%c%c%c”,&x,&y,&a,&b,&c);D)scanf("%d%d%c%c%c%c%c%c”,&x,&y,&a,&a,&b,&b,&c,&c);56、假定所有变量均已正确说明,下列程序段运行后x的值是a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex=4;/*此题考查if语句的嵌套,if语句的作用范围,以及if(!a)的用法,还有变量的赋值,对同一变量进行多次赋值,变量的值总是最后一次赋值的结果。if(!a)与if(a==0)是等价的,此时a的初值是0,因此执行x—语句,此时x的值由35变成34,if(c)与下面的else是一对,一起作为上面if~else结构的后续语句,也即两个if~else结构是并列的关系,但是if(b)却是与if(!a)配对的else的内嵌语句;if(c)条件不成立,原因是c的值为0,因此执行与之匹配的else分支,此时x的值由34变成4*/A)34B)4C)35D)357、在以下一组运算符中,优先级最高的运算符是()//运算符优先级可参考课本中的附录6,算//术运算符高于关系运算符,高于逻辑运算符中的逻辑与&&和逻辑或||,高于赋值运算符A)<=//此为关系运算符B)=//此为赋值运算符C)%//此为算术运算符D)&&//此为逻辑运算符58、有以下程序,输出结果是()inta=2,b=2,c;c=a==b;//c=a==b;等价于c=(a==b);原因是关系运算符==优先级高于赋值运算符=,关系表达//式的结果不是0就是1,而a==b即为2==2,成立,所有结果为1,即c的值为1printf(“c=%dn”,c);A)c=1B)c=2C)c=3D)c=-159、以下4个选项中,不能看作一条语句的是A){;}B)inta=0,b=0,c=0;C)if(a>0);//if(a>0)与;看成一个整体,作为一条语句出现D)if(b==0)m=1;n=2;60、以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是()//条件表达式exp1?exp2:exp3的执行过程是exp1为真时,表达式的结果是exp2的值,否则是//exp3的值A)if((a>b)&&(b>c))k=1;elsek=0;B)if((a>b)||(b>c))k=1elsek=0;C)if(a<=b)k=0;D)if(a>b)k=1;elseif(b<=c)k=1;elseif(b>c)k=1;elsek=0;61、有以下程序main(){inta=3,b=4,c=5,d=2;if(a>b)if(b>c)printf("%d",(d++)+1);elseprintf("%d",(++d)+1);printf("%dn",d);}//此题主要考查程序的结构,if(b>c)~else是if(a>b)的内嵌语句,也即程序总的结构是单分支结构,//如果if(a>b)不成立,则直接执行语句printf("%dn",d);程序运行后的输出结果是()A)2B)3C)43D)4462、下列条件语句中,功能与其他语句不同的是()//考查if(a!=0)与if(a)等价,if(a==0)与if(!a)等价A)if(a)printf("%dn",x);elseprintf("%dn",y);B)if(a==0)printf("%dn",y);elseprintf("%dn",x);C)if(a!=0)printf("%dn",x);elseprintf("%dn",y);D)if(a==0)printf("%dn",x);elseprintf("%dn",y);63、有以下程序main(){inta,b,c,d;scanf("%d,%d,%d,%d",&a,&b,&c,&d);printf("%d,%d,%c,%cn",a,b,c,d);}若运行时从键盘上输入:6,5,65,66。则输出结果是()A)6,5,A,B11 //字符型数据ASCII码值在0-255之间时,可以和数值型数据相互转化,当0-255之间的数值用%c输出时,输出此数值(ASCII)所对应的字符,当字符用%d输出时,则输出此字符所对应的ASCII码值B)6,5,65,66C)6,5,6,5D)6,5,6,664、以下程序的输出结果()main(){inta=2,b=-1,c=2;if(a7){n--;//此时n--;和--n;的作用相同,就是让n的值自减1printf(“%d“,n);}A)1098B)987C)10987D)987670、以下程序的输出结果(  )main(){inti;for(i=3;i<=5;i++){if(i%2)//等价于if(i%2!=0),也等价于if(i%2==1)printf(“*”);elsecontinue;//continue;的作用能使程序结束本次循环printf(“#”);}printf(“$n”);}/*整个程序的执行过程如下:i=3时,if(i%2)条件成立,输出一个*,然后执行后续语句printf(“#”);,输出一个#,然后i++,此时i的值为4,if(i%2)条件不成立,执行else分支,此时遇到continue语句,则跳过本次循环执行,执行i++,此时i的值为5,if条件成立,输出一个*,然后执行后续语句再输出一个#,i再次++,此时i的值为6,i<=5循环条件不成立,则退出循环,但要执行循环的后续语句printf(“$n”);输出一个$*/A)*#*#*#$B)#*#*#*$C)*#*#$D)#*#*$71、以下程序的输出结果是()main(){intx,i;for(i=1;i<=100;i++){x=i;if(++x%2==0)if(++x%3==0)if(++x%7==0)printf("%d",x);}printf("n");}/*此题用答案去测试,速度最快,也即只有三个if条件都成立时,才能输出x的值。而if(++x%7==0)是指当x的值加1之后能够被7整除,那么加1之前能够被3整除,即if(++x%3==0)成立,在这个表达式之前,也即x没有加1之前能够被2整除。用28测试,28能够被7整除,减1之后是27能够被3整除,再减1是26能够被2整除,同理可以测试,70也满足条件*、11 A)3981B)4284C)2668D)287072、从以下式子选出和while(E)语句中的(E)不能等价的表达式()A)(!E==0)C)(E==0)D)(E!=0)/*关于A答案,逻辑非!的优先级比关系运算符==的高,while(E)表示的含义是E不等于0,那就是有大于0和小于0两种情况。所以B和D答案都可以,那么A答案呢,假设E的值是0,则while(E)就等价于while(0),循环条件不成立,那么while(!E==0)就等价于while(1==0),而1==0这个表达式不成立,结果为0,和while(0)等价。当E的值非0,即while(E)循环条件成立,那么while(!E==0),E的值非0,而!E则为0,那么0==0成立,因此while(!E==0)也成立,因此A答案也是可以的*/B)(E>0)||(E<0)73、以下程序运行后,a的值()main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;//该语句形同虚设,根本执行不到,并且有没有该语句,不影响程序的最终结果}printf("%d",a);}/*本题考察break和contnue语句的用法,C语言中,break有两个地方可以用,一个是switch结构中,一个是循环体中,当用在循环体中时,可以强制退出循环;continue语句只能用在循环体中,能够结束本次循环的执行,也即continue语句后面的语句根本执行不到*/A)7B)8C)9D)1074、设x和y均为整型变量,则执行下面的循环后,y的值为()voidmain(){intx,y;for(y=1,x=1;y<=50;y++){if(x>=10)break;if(x%2==1){x+=5;continue;}x-=3;}printf("%d",y);}/*本题和上一题,有些类似,但不尽相同。本题中x-=3;这条语句执行到了,也即当if(x%2==1)条件不成立时,即执行x-=3;这条语句*/A)2B)4C)6D)875、下面程序的输出是()main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(amain(){inta=3,b=2,c=1;11 c-=++b;b*=a+c;printf(“%d,%d,%d,",a,b,c);c/=b*2;a-=c;a+=--c;printf(“%d,%d,%d,",a,b,c);}28、有以下语句段intn1=10,n2=20;printf(“【28】”,n1,n2);要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请写出【28】处的内容__n1=%dnn2=%d____________。n1=10n2=2029、有以下程序main(){intn=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf("%dn",x);}执行后输出结果是_________-4__________。30、有以下程序#includemain(){charch1,ch2;intn1,n2;ch1=getchar();//当输入12时,ch1的值是字符1,ch2的值是字符2ch2=getchar();n1=ch1-‘0’;//n1=’1’-‘0’=1n2=n1*10+(ch2-‘0’);//n2=1*10+(‘2’-‘0’)=10+2=12printf(“%dn”,n2);}程序运行时输入:12<回车>,执行后输出结果是_______12__此时是数值12________。31、以下程序运行后的输出结果是__21_____。main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("%d%dn",a,b);}32、若已定义inta=25,b=14,c=19;以下语句的执行结果是(###a=26,b=14,c=19)a++<25&&b--<=2&&c++?printf(“***a=%d,b=%d,c=%dn”,a,b,c):printf(“###a=%d,b=%d,c=%dn”,a,b,c);/*本题考察条件运算符的用法,然后就是逻辑与&&的短路特性问题。a=25,则a++<25不成立,则结果为0,那么b--<=2,以及c++都执行不到,但是a的值要加1*/33、将下列数学式改写成C语言的关系表达式或逻辑表达式A__a==b||a4||x<-4___A:a=b或a434、以下程序运行后的输出结果是4599。main(){inta=3,b=4,c=5,t=99;if(b1);//a%b<1等价于10%20<1等价于10<1结果为0;a/b>1等价于//10/20>1即0>1结果为0,因此c为0||0,结果为0printf("%d%d%dn",a,b,c);}main()/*mainfounction*/{floata,b,c,v;a=2.0;b=3.0;c=4.0;v=a*b*c;printf("%fn",v);}三、改错题1、以下程序有多处错误,请改正。main/*mainfounction*/{floata,b,c,v;a=2.0;b=3.0;c=4.0v=a*b*c;printf(%fn",v)}2、这是个求立方体体积的小程序,但有错误,请你改正。main(){floatL,H,W,v;printf("pleaseenterL,W,H:");scanf("%f%f%f",&L,&W,&H);v=L*H*W;printf("%fn",v);}main(){floatL,H,H,V;printf("pleaseenterL,W,H:");scanf("%f%f%f",L,W,H);v=L*H*W;printf("%fn"v);}11 3、程序输入三个整数,并输出其中最小的数。请改正错误的地方main(){inta,b,c;scanf("%d%d%d",&a,&b,&c);if((a>b)&&(a>c))if(bb)&&(a>c)ifbmain(){inta,t,n=0,p=0;scanf("%d",&a);if(a<=0||a>65536)printf("请输入符合0~65536范围的数据!");else{while(a){t=a%10;p=p*10+t;a=a/10;n++;printf("%4d",t);}printf("n输入的数据一共%d位数n",n);printf("逆置输出的数据为%d",p);}}2、请将下列语句改写成switch语句if(s>=90||s=100)a=5;elseif(s>=80)a=4;elseif(s>=70)a=3;elseif(s>=60)a=2;elsea=1;#includevoidmain(){ints,a;scanf("%d",&s);if(s<0||s>100)printf("请输入0到100之间的数据!n");else{switch(s/10){case10:case9:a=5;break;case8:a=4;break;case7:a=3;break;case6:a=2;break;default:a=1;}printf("a=%d",a);}}3、编写程序,求分段函数的值。y=2x+3(x<-3)3(-3≤x<3)方法三:if语句的嵌套#includevoidmain(){intx,y;scanf("%d",&x);if(x<-3)y=2*x+3;elseif(x<3)y=3;elsey=4*x-8;printf("y=%d",y);}4x-8(x≥3)方法一:用多分支if~elseif~elseif~else实现#include方法二:三个单独的if分支实现#includevoidmain(){intx,y;scanf("%d",&x);if(x<-3)y=2*x+3;if(x>=-3&&x<3)y=3;if(x>=3)y=4*x-8;printf("y=%d",y);}voidmain(){intx,y;scanf("%d",&x);if(x<-3)y=2*x+3;elseif(x<3)y=3;elsey=4*x-8;printf("y=%d",y);}4、从键盘上输入一个整数,判断其是否是素数,如果是输出“YES”,否则输出“NO”。#include#include//当用到sqrt(x)时,必须加前面的数学头文件voidmain(){intx,i;intt=1;scanf("%d",&x);for(i=2;i#includevoidmain(){intx,i;scanf("%d",&x);for(i=2;i<=sqrt(x);i++)//for(i=2;i<=x-1;i++)或者for(i=2;i<=x/2;i++)或者for(i=2;isqrt(x))//if(i>x-1)或者if(i>x/2)或者if(i>=x)具体写哪一个if语句形式和上面的for中表//达式2相对应printf("yes!");elseprintf("no!");}3、从键盘上输入一个整数,判断其是否是奇数,如果是输出“该数是奇数”,否则输出是“偶数”。#includevoidmain(){intx,i;scanf("%d",&x);if(x%2==1)//if(x%2!=0)或者if(x%2)printf("%d是奇数!",x);elseprintf("%d是偶数!",x);}4、从键盘上输入一个整数,判断其是否能同时被4和7整除,如果能,输出“是”,否则输出“不能”。#includevoidmain(){intx,i;scanf("%d",&x);if(x%4==0&&x%7==0)//if(x%28==0)或者if(x%4+x%7==0)printf("%d能同时被4和7整除!",x);elseprintf("%d不能同时被4和7整除!",x);}5、从键盘输入两个整型数据,求两者中的最大值和最小值。#includevoidmain(){intx,y,max,min;scanf("%d%d",&x,&y);if(xvoidmain(){inta,b,t;scanf("%d%d",&a,&b);printf("变量交换前的值为:a=%d,b=%dn",a,b);t=a;a=b;b=t;printf("变量交换后的值为:a=%d,b=%dn",a,b);}7、输入两个整型变量a和b,当a大于b时,进行a和b值的交换。#includevoidmain(){inta,b,t;scanf("%d%d",&a,&b);printf("变量交换前的值为:a=%d,b=%dn",a,b);if(a>b){t=a;a=b;b=t;}printf("变量交换后的值为:a=%d,b=%dn",a,b);}8、从键盘输入一个字符,判断其是否是大写字母,如果是,转换成小写字母输出,否则原样输出。#includevoidmain(){charch;ch=getchar();//scanf("%c",&ch);if(ch>="A"&&ch<="Z")ch+=32;putchar(ch);//printf("%c",ch);}或者#includevoidmain(){charch;ch=getchar();//scanf("%c",&ch);putchar((ch>="A"&&ch<="Z")?ch+=32:ch);//printf("%c",(ch>="A"&&ch<="Z")?ch+=32:ch);11 }3、求100-200之间的奇数之和,和偶数之和。#includevoidmain(){intsum1=0,sum2=0;inti;for(i=100;i<=200;i++)if(i%2)//if(i%2==1)或者if(i%2!=0)sum1+=i;//求奇数之和elsesum2+=i;//求偶数之和printf("奇数之和为:%dn偶数之和为:%dn",sum1,sum2);}方法二:#includevoidmain(){intn;inti,p=1;scanf("%d",&n);for(i=n;i>=1;i--)p*=i;printf("%d!为%d。n",n,p);}4、求n!#includevoidmain(){intn;inti,p=1;//注意p的初值必须为1scanf("%d",&n);for(i=1;i<=n;i++)//注意此时是i<=n,不能写出ivoidmain(){intn;inti,p=1;scanf("%d",&n);for(i=1;i<=n;i++){p*=i;printf("%d!为%d。n",n,p);}}6、求1!+2!+3!+……+n!#includevoidmain(){intn;inti,p=1,sum=0;scanf("%d",&n);for(i=1;i<=n;i++){p*=i;sum+=p;}printf("各阶乘之和为%d。n",sum);}7、从键盘输入一串字符,统计其个数#includevoidmain(){intn=0;while(getchar()!="n")/*getchar()函数是用来接收单个字符的,一串字符默认按回车结束,所以结束条件就是最后一个字符为’n’*/n++;//n用来统计个数,初值一定是0printf("输入字符的个数为:%dn",n);}8、从键盘输入一串字符,直到遇到“#”结束,统计输入字符的个数。#includevoidmain(){intn=0;while(getchar()!="#")/*getchar()函数是用来接收单个字符的,结束条件就是最后一个字符为’#’*/n++;//n用来统计个数,初值一定是0printf("输入字符的个数为:%dn",n);}9、从键盘输入一串字符,统计其中大写字母的个数,小写字母的个数,数字字符的个数。#includevoidmain(){intn0=0,n1=0,n2=0;charch;//ch为字符型变量while((ch=getchar())!="n"){if(ch>="0"&&ch<="9")n0++;//n0用来统计数字字符个数,初值一定是0if(ch>="A"&&ch<="Z")n1++;//n1用来统计大写字母个数,初值一定是0if(ch>="a"&&ch<="z")n2++;//n2用来统计小写字母个数,初值一定是0}printf("数字字符个数为:%dn",n0);printf("大写字母个数为:%dn",n1);printf("小写字母个数为:%dn",n2);}10、定义一个求素数的函数,并在主函数中调用。方法二:intisprime(inta){inti,t;for(i=2;iintisprime(inta)//注意该函数的返回值类型是int{inti;for(i=2;iintsum(inta,intb)//自定义函数{returna+b;}voidmain()//主函数{intx,y;scanf("%d%d",&x,&y);printf("%d",sum(x,y));//以表达式的形式调用sum函数}4、定义一个求最大值函数,并在主函数中调用。#includeintmax(inta,intb){if(a>b)或者方法二:intmax(inta,intb)//自定义函数{intt;if(a>b)t=a;elset=b;returnt;}voidmain(){intx,y,s;scanf("%d%d",&x,&y);s=max(x,y);printf(“%d”,s);}returna;elsereturnb;}voidmain(){intx,y;scanf("%d%d",&x,&y);printf("两个数中的最大值为:%dn",max(x,y));}5、定义一个具有10个元素的一维整型数组,然后将数组元素进行逆序输出。#includevoidmain(){inti,a[10];for(i=0;i<10;i++)//此for循环用来对数组赋值scanf("%d",&a[i]);for(i=9;i>=0;i--)//此for循环用来对数组进行逆序输出,注意循环变量i的初值是从9开始printf("%4d",a[i]);}6、定义一个具有10个元素的一维整型数组,然后将数组元素进行逆置存储,并输出。#includevoidmain(){inti,a[10],t;for(i=0;i<10;i++)//此for循环用来对数组赋值scanf("%d",&a[i]);for(i=0;i<10/2;i++)//此for循环用来对数组进行逆置存储,注意i<10/2,不能写成i<=10/2{t=a[i];a[i]=a[10-i-1];a[10-i-1]=t;}for(i=0;i<10;i++)//此for循环用来对数组进行输出printf("%4d",a[i]);printf("n");}11'