C语言程序设计2-3章练习题及答案(高职).docx
C语言程序设计2-3章练习题及答案习题24. 简述算法的概念。算法应具备那些特性?分别说明什么是自然语言描述法?什么是框图语言描述法?什么是伪语言描述法?什么是N-S框图语言描述法?它们的优缺点各是什么?在结构化程序设计方法中,有哪几种基本结构?请用框图语言和N-S框图语言分别写出打印乘法九九口诀表的算法。请用伪语言写出求n!的算法。仿照【例2-3】仿照【例2-3】仿照【例2-3】仿照【例2-3】的程序, 的程序, 的程序, 的程序,依照流程图,编写【例2-1】程序。依照流程图,编写【例2-2】程序。依照流程图,编写【例2-4】程序。依照流程图,编写【例2-5】程序。习题参考答案11 .简述算法的概念。答:算法就是为解决一个具体的问题而使用的确定的、有限的方法和步骤。12 .算法应具备哪些特性?答:算法应具备有穷性、确定性、可行性、输入、输出等五种特性。13 .分别说明什么是自然语言描述法?什么是框图语言描述法?什么是伪语言描述法?什 么是N-S框图语言描述法?它们的优缺点各是什么?答:用人们日常使用的语言来描述算法,称为算法的自然语言描述法。框图语言描 述法是用一些特殊符号来描述算法流程的算法。N-S框图语言描述法是一种将具体的功能 都写在一个矩形框内,框内又可以包含其他的从属框的描述方法。伪语言描述法是用介于 自然语言和计算机语言之间的文字符号来描述算法。(优缺点略).在结构化程序设计方法中,有哪几种基本结构?答:在结构化程序设计方法中有顺序结构、分支结构和循环结构三种。14 .请用伪语言写出打印乘法九九口诀表的算法。参考算法如下:初始化i=l j=l printf(”d*%d=%-3d”,i,j,i*j);/-3d 表示左对齐,占 3 位j+列号加1如果列号卜二行号i转到。i+行号加1如果行号i <10转到。算法结束。16.习题31.选择题1)关于C语言数据类型的叙述,正确的是()。A.枚举类型不是基本类型B.数组不是构造类型C.变量必须先定义后使用 D.不允许使用空类型2)对于C语言源程序,以下叙述错误的是( A.可以有空语句B.函数之间是平等的,在一个函数内部不能定义其他函数C.程序调试时如果没有提示错误,就能得到正确结果D.注释可以出现在语句的前面3)下面关于C语言用户标识符的描述,正确的是(A.不区分大小写B.用户标识符不能描述常量C.类型名也是用户标识符D.用户标识符可以作为变量名4)以下(A. 5f5)以下( A.E-56)以下(A. a.beeC.类型名也是用户标识符D.用户标识符可以作为变量名4)以下(B. 5f5)以下( A.E-56)以下(A. a.beeC.类型名也是用户标识符D.用户标识符可以作为变量名4)以下(C. 5f5)以下( A.E-56)以下(A. a.bee4)以下(D. 5f5)以下( A.E-56)以下(A. a.bee4)以下(E. 5f5)以下( A.E-56)以下(A. a.bee4)以下(F. 5f5)以下( A.E-56)以下(A. a.bee)是正确的变量名。B.ifC. f.5)是正确的常量。G. 1E5.1C. 'al21)是正确的变量名。B. -pl 1C. intD. f5D.32766L7)以下A/c”8)以下A. W9)以下A. -Oxcdf10)以下()是正确的字符常量。B. 'nC.'W' D. "32a”)是不正确的字符串常量。B. ”1212“ C. “0“ D. ” ”)是错误的整型常量。B.018 C. Oxe D. 011)是正确的浮点数。A. e3 B. .62 C. 2e4.5 D. 12311)若有说明语句:charc=,95,;则变量c包含()个字符。A. 1B.2 C. 3 D.语法错误12)若有定义:inta=2;则正确的赋值表达式是()。A. a-=(a*3) B. double(-a) C. a*3 D. a*4=313)语句x=(a=3,b=+a);运行后,x、a、b的值依次为()。A. 3,3,4 B. 4,4,3 C. 4,4,4 D. 3,4,314)语句a=(3/4)+3%2;运行后,a的值为()。A.O B. 1 C. 2 D. 315) char型变量存放的是()。A. ASCII代码值 B.字符本身 C.十进制代码值D.十六进制代码值16)若有定义:int x,a;则语句x=(a=3,a+l);运行后,x、a的值依次为()。A. 3,3B.4,4C.4,3 D. 3,417)若有定义:int a;则语句a=(3* 4)+2 % 3;运行后,a的值为()。A. 12 B. 14 C. 11 D. 1718)若有定义:int a,b; double x,则以下不符合C语言语法的表达式是()。A. x%(-3) B. a+=-2 C. a=b=2 D. x=a+b19)若有定义:intx=2,y=3;floati;,则以下符合C语言语法的表达式是()。A. x=x*3=2B.x=(y=l) C. i=float(x) D. i%(-3)20)设double型变量a,b,c,e均有值;对代数式(3ae)/(bc),不正确的C语言表达式是()OA. a/b/c*e*3 B. 3*a*e/b/c C. 3*a*e/b*c D. a*e/c/b*32 .填空题1)设a为short型变量,描述“a是奇数”的表达式是。2)若有定义:int a=5,b=2,c=l;则表达式a-b<c|b= =c的值是 。3)已知charc=,A,;int i=l;j=0;执行语句j=!c&&i+后,i和j的值分别是和 。4)若有定义:float x=3.5;int z=8;则表达式x+z%3/4的值为 。5)若有定义:int a=l,b=2,c=3,d=4,x=5,y=6;则表达式(x=a>b)&&(y=c>d)的值为6)若有定义:int a=2,b=3; float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y 的值 是。7 ) 若有 定义:int b=7; float a=2.5,c=4.7;则 表达式 a+(b/2*(int)(a+c)/2)%4 的 值 是。3 .程序设计题1)已知圆半径的r=2.5,圆柱高h=1.8,求圆周长,圆柱体积。2)要将“China”译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字 母。例如,字母" A”后面第4个字母是" E",用” E“代替" A“ o因此," China” 应译为" Glmre”。请编写1程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的 值分别为C、 'h'、 十、'n'、 'a',经过运算,使cl、c2、c3、c4、c5分 别变为'G'、 T、 'm'、 'r'、 'e'、,并输出。(1)输入事先已编好的程序,并运行该程序。分析是否符合要求。(2)改变 cl、c2、c3、c4、c5、的初值为:T'、'o'、气'、'a'、'y',对译 码规律作如下补充: 7 用 A 代替,X用'B'代替,'Y'用 C 代替, 'Z'用'D'代替。修改程序并运行。(3)将译码规律修改为:将字母用它前面的第4个字母代替,例如:'E'用'A'代 替,'Z'用'U'代替,'D'用'Z'代替,C用'Y'代替,'B'用'X'代替,'A'用'V代替。修改程序并运行。3)输入秒数,将它按小时、分钟、秒的形式来输出。例如输入2468。秒,则输出6小 时51分20秒。1、选择题 (DC (6)D (IDA (16)C第3章习题参考答案(5)D (W)B (15)A (20)C(2)C(3)D(4)D(7)C(8)A(9)B(12) A(13)C(14)B(17)B(18)A(19)B2、填空题 a%2!=0 或 a%2=l。(2)0。(3)1 ,0 o (4) 3.5 o(6)3.5 o(6)3.5 o(6)3.5 o(6)3.5 o(5)0(7)4.5 o3、程序设计题(1):#include <stdio.h> main()float r=0,h=0,l=0,v=0,pi=0;pi=3.1415926;printf(”请输入圆半径及圆柱的高,用逗号分隔:”);scanf(H%f,%f,&r,&h);l=2*pi*r;v=pi*r*r*h;printf("圆周长为:%6.2fnl);printf,圆柱体积为:6.2fn”,v);)(2):#include<stdio.h>main()(char c 1 ='C',c2='h',c3='i',c4='n',c5='a'printf("原字符为:%c%c%c%c%cn”,cl,c2,c3,c4,c5);cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf("加密后的字符为:%c%c%c%c%cn”,cl,c2,c3,c4,c5);c 1=T,c2='o',c3='d;c4='a',c5=V;printf("题目(2)原字符为:c%c%c%c%cn",cl,c2,c3,c4,c5);/*c 1 ='w',c2='x',c3='y',c4='z',c5='w'*/cl-=22;c2-=22;c3-=22;c4-=22;c5-=22;printf("题目(2)加密后的字符为:c%c%c%c%cncl,c2,c3,c4,c5);printf("题目(3)原字符为:c%c%c%c%cn”,cl,c2,c3,c4,c5);cl-=4;c2-=4;c3-=4;c4-=4;c5-=4;printf("题目(3)加密后的字符为:c%c%c%c%cn”,cl,c2,c3,c4,c5);)(3):#include<stdio.h>main()(long x=0;int h=0,m=0,s=0;prints请输入秒数,为一个正整数:)scanf(H%d&x);h=x/3600;m=x%3600/60;s=x%3600%60;printf(”你输入的秒数为%d小时d分%(1秒iT,h,m,s); )