选择与循环

顺序结构选择结构和循环结构的程序设计典型例题分析与解答

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构 【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支 2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。 【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。 【答案】直到型 3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。 【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h> 4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( ) ①'A'/②A/③x=A/ ④x=A,y=12/ 12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键 【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0)else {casel:y=0;break;if(x==0) case 0: y= l;y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0)if(x<0) y=0; y =-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x*

C语言程序设计习题集第4章 循环结构(答案)

第4章循环结构 一、选择题 1、有以下程序段 int k=0; while(k=1)k++; while 循环执行的次数是( A) A) 无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行1次 2、t为int类型,进入下面的循环之前,t的值为0 while( t=1) { …… } 则以下叙述中正确的是( B) A) 循环控制表达式的值为0 B) 循环控制表达式的值为1 C) 循环控制表达式不合法 D) 以上说法都不对 3、在C程序中,与while(m)中表达式m完全等价的是(B ) A) m==0 B) m!=0 C) m==1 D) m!=1 4、有以下程序,程序运行后的输出结果是(C )。 main() {int i=1,sum=0; while(i<=4) { sum=sum+i; i=i+1; } printf(“%d\n”,sum);} A)4 B)5 C)10 D)死循环 5、有以下程序,程序运行后的输出结果是(D )。 main() { int i=1,sum=0; while(i<=4) sum=sum+i; i=i+1; printf(“%d\n”,sum); } A)4 B)5 C)10 D)死循环 6、有如下程序 main(){ int n=9; while(n>6){n--;printf(“%d”,n);} } 该程序段的输出结果是(B) A) 987 B) 876 C) 8765 D) 9876

7、以下程序的输出结果是( B ) main() { int num= 0; while(num<=2) { num++; printf(“%d\n”,num);} } A) 1 B) 1 C)1 D) l 2 2 2 3 3 4 8、有以下程序,若运行时输入3.6 2.4<回车>,则输出的结果是( B)。main() {float x,y,z; scanf(“%f%f”,&x,&y); z=x/y; while(1){ if(fabs(z)>1.0) { x=y; y=z; z=x/y;} else break;} printf(“%f\n”,y);} A)1.500000 B)1.600000 C)2.000000 D)2.400000 9、执行以下程序段时 x=-1; do { x=x*x; } while(! x); 则下面描述正确的是(A ) A) 循环体将执行一次B) 循环体将执行两次 C) 循环体将执行无限次D) 系统将提示有语法错误 10、有以下程序段其输出结果是(C ) int x=3; do { printf("%d",x-=2); } while (!(--x)); A) 1 B) 3 0 C) 1 -2D) 死循环 11、有如下程序 main(){ int x=23; do {

分支与循环程序设计实验报告汇总

分支与循环程序设计实 验报告汇总 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

实验名称分支与循环程序设计实验 指导教师罗志祥 专业班级光电1406 姓名段昳晖学号 U2014***** 联系电话 137******** 一、任务要求 1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。 二、设计思路 1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。 将外部单元1000H中的X,通过分支判断,分别执行不同的语句,三条语句分别为标记为L1、L2、L3,先比较X与64的大小关系,再判断X与10的大小关系,主要利用比较转移指令CJNE,以及执行CJNE指令后的进位位CY,进一步比较大小,分别跳转至对应语句。将结果存于外部单元的1001H以及1002H。 2.利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。

主程序设计三层循环,分别对应时、分、秒,最内层安放一秒延时程序。利用R0、R1、R2计数,R3保存分钟数、R4保存小时数,最内层循环60次,中循环循环1次,中循环60秒,外循环循环1次,外循环循环24次,清零。其中对端口显示的秒数、分钟数、时间数,进行二进制修正。 利用循环来设计延时程序,合理计算语句长度,以及循环次数。 程序运行时修正的值,可以实现暂停计数和继续的功能。 提高部分(选做): 1)实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用状态选择加、减计数方式。 2)利用P3口低四位状态控制开始和停止计数,控制方式自定。 初始化P1、P2,,计数循环中插入一秒延时程序。R1存千百位、R2存个十位,=0时,进行加1计数,取出R2中的数存于A,对A 加1,同时进行十进制修正,存于P2,达到99,则进位对千百位进行加1。=1时,进行减一操作,取出R1中的数存于A,对A减1,同时进行十进制修正,存于P1,达到0,则对P2,对R2进行减一。 计数循环前判断的值,当=1时,开始计数,=0时,原地循环,停止计数,直到 =1,可以实现随时停止与开始。 三、资源分配 1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写完整程序。 X存于片外1000H Y存于片外1001H、1002H 其中,求平方时,低位存于1001H,,高位存于1002H 除二时,商存于1001H,,余数存于1002H

第四章。循环结构(while、do-while、for)

Top 1.循环结构(while、do…while、for) 1. 循环结构(while、do…while、for) 1.1. 什么是循环结构 在日常生活中,会有很多需要反复执行的事情,比如:每一年的4个季节,每一周的7天,每日的3餐,打印机每份文档打印50份,一圈跑道400米跑3圈,都是在反复执行的。 再看软件系统中的需求: 问题1:输出100行语句,每行语句都一样,即: ?行动是成功的阶梯,行动越多,登得越高! ?行动是成功的阶梯,行动越多,登得越高! ?行动是成功的阶梯,行动越多,登得越高! … 问题2:输出100行语句,每行语句都类似,即: ?第1,行动是成功的阶梯,行动越多,登得越高! ?第2,行动是成功的阶梯,行动越多,登得越高! ?第3,行动是成功的阶梯,行动越多,登得越高! ?… ?第100,行动是成功的阶梯,行动越多,登得越高!

问题3:计算1到50乘以8.88的结果 ?1×8.88 =8.88 ? 2 ×8.88 =17.76 ? 3 ×8.88 =26.64 ? 4 ×8.88 =35.52 ?… ?50 ×8.88 =444 诸如此类问题都是在反复执行的,在软件系统中可以通过循环这种语法结构来解决。循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性执行。 对于循环来说,需要考虑两个要素,其一要素为循环体,也就是被反复执行的相同或相似的语句,其二要素为循环的条件,也就是循环得以继续执行下去的条件,常常以循环次数的方式体现。 常用的循环结构有:while、do-while、for。 1.2. while语句 1.2.1. while语句的执行逻辑 while语句是循环的一种常见语法结构,语法如下: 1.while(boolean表达式){ 语句块; 2.}

VB基本知识及选择、循环结构习题

一、VB 基本知识及选择、循环结构习题 一、基本概念题 (1) 说明下列哪些是Visual Basic 合法的直接常量,并分别指出它们的类型。 %100 1E1 123D3 123,456 0100 “ASDF” “” #2004/10/7# 100# π &O78 &H123 True T -1123! # (2)下列数据哪些是变量,哪些是常量是什么类型的常量 Name “name” False ff “11/16/99” cj “120” n #11/12/2004# (3) 下列符号中,哪些可以是Visual Basic 的合法变量名 A123 a12_3 123_a a,123 a 123 Integer XYZ False Sin(x) 变量名 sinx π (4)把下列数学表达式写成Visual Basic 表达式: (1)5||z y x ++ (2)6)1(xy + (3)xy y x 310+ (4)a ac b b 242-+- (5)3211111r r r ++ (6)110ln 45sin 10++++y x e (5)写出下列表达式的值: (1)123 + 23 Mod 10 \ 7 + Asc("A") (2)Int * 100 + / 100 (3)#11/22/2004# - 10 (4)"ZXY" & 123 & "abc" (6)设a=7,b=3,c=4,求下列表达式的值: (1)a + 3 * c (2)a ^ 2 / 4 (3)a / 2 + 3 \ 2 (4)a Mod 3 + b ^ 3 / c \ 5 (7)写出下列函数的值: (1)Int (2)Fix (3)Sqr(Sqr(81)) (4)Len("Visual Basic 程序设计") (5)Int(Abs(99 - 100) / 2) (6)Sgn(7 * 3 + 2) (7)LCase("Hellow VB!") (8)Mid("Hellow VB!", 4, 3) (9)Left("Hellow VB!", 3) (10)Val("16个加23个") (11)Str (12)UCase("Visual Basic") 二、 选择题 (1)可以同时删除字符串前导和尾部空格的函数是 。 A. Ltrim B. Rtrim C. Trim D. Mid (2)函数Int(Rnd(1) * 10)是在哪个范围产生随机整数 。 A. (0,1) B. (0,9) C. (1,10) D. (1,9) (3)数学式子sin25o写成Visual Basic 表达式是 。 B. Sin(25) C. Sin(25o) D. Sin(25*180) (4)表达式16/4 – 2^3 * 8/4 Mod 5\2的值是 。 A. 14 B. 4 C. 20 D. 2 (5)数学关系式103<≤x 表示成正确的VB 表达式为 。 A. 3<= x <10 B. x >= 3 And x<10 C. x>=3 Or x<10 D. 3<= x And <10

C语言练习2(选择和循环结构)

C语言(分支和循环结构) 一、选择题 1.以下程序输出结果是( ) main() { int m=5; if(m++>5) printf("%d\n",m); else printf("%d\n",m--);} A)7 B)6 C)5 D)4 2以下程序的输出结果为( ) # include main ( ) { int i=0, j=0, a=6; if ((++i>0)&&(++j>0)) a++; printf ("i=%d, j=%d, a=%d\n", i,j,a);} A) i=0, j=0, a=6 B) i=1, j=1, a=7 C) i=1, j=0, a=7 D) i=0, j=1, a=7 3有如下程序 main() { int a=2,b=-1,c=2; if(a

4若i为int型,且有程序如下,则输出结果是( ) i=111; if(i%3==0) printf("####"); printf("****"); A) #### B) **** C) ####**** D) 无输出结果 5若运行时x=12,则运行结果为( ) {int x, y; scanf("%d", &x); y=x>12 ? x+10:x-12; printf("%d\n", y);} A) 0 B) 22 C) 12 D) 10 6以下程序的输出结果是( ) main() { int i=0, j=0, k=6; if ((++i>0)||(++j>0)) k++; printf("%d, %d, %d\n", i, j, k); } A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 7 7若变量都已正确说明,则以下程序段输出为( ) int a=1,b=2,c=3; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c);

第四章循环结构

第四章循环结构 一、选择题 1.下列叙述正确的是( ) A.continue语句的作用是跳出循环体 B.while循环语句的循环体至少执行一次 C.do-while循环语句的循环体至少执行一次 D.switch语句中的每个case语句组必须含有break语句 2.if(表达式)和while(表达式)中的“表达式”( ) A.只能是逻辑的 B.只能是关系的 C.只能是算术的 D.以上三种都 可以 3.对循环结构正确的叙述是() A.do-while循环体可能被执行0次 B.do-while循环体至少被执行1次 C.while循环体不可能被执行0次 D.for循环体不可能被执行无限次 4.设int i=l, k=2;则错误 ..的循环语句是() A.for(i=0,k=-1;i++,k++); B.for(;k-1;i++); C.for(i=1,k=4;k--;i++); D.for(;k--;); 5.在循环体中用来强制继续循环的语句是() A.break B.continue C.exit D. return 6.下列程序段中循环体执行的次数是() int x=-1;do{x=x*x;}while(! x); A. 0 B. 1 C. 2 D. 无限 7.设int m=5;语句while (m==0)printf (″%d″,m-=2);的循环体执行的次数是() A. 0 B. 1 C. 2 D. 无限 8.语句for(a=0;a==0;a++);和语句for(a=0;a=0;a++);执行循环的次数分别是( ) A.0,0 B.0,1 C.1,0 D.1,1 9.执行下列程序段后x的值为() int i=1, j=10, x; for (; i<=j; i++, --j) x=i; A.5 B.6 C.7 D.8 10.以下程序的运行结果是( ) int x,y,z=1; for(x=1,y=-1;xb); A.1,3 B.1,4 C.2,3 D.2,4 12.设for(i=0, j=10; (j>0)&&(i<4); i++, j--);该语句的循环次数是()A.0 B.3 C.4 D.无限 13.执行语句for(i=1;i++<4);后i的值是( ) A. 3 B. 4 C. 5 D. 不确定 14.以下程序段中的变量已正确定义,程序段的输出结果是( ) for(i=0;i<4;i++,i++) for(k=1;k<3;k++);printf("*"); A.******** B.**** C.** D.*

顺序结构、选择结构和循环结构的程序设计

顺序结构、选择结构和循环结构的程序设计 请写出switch语句的一般格式及注意事项。 一般格式: Switch(表达式) {case常量表达式1:语句组1;break; Case常量表达式2:语句组2;break; …… Case常量表达式n:语句组n;break; Default:语句组n+1;}1switch中表达式可以是任意类型,常用的是字符或整型。2每个常量表达式的值不能相同。3语句组可以为任意语句。4break可以省略,然后执行完本组语句后紧接着执行其后的i+1组语句。5多个case可以用一组执行语句。6break的作用是跳出switch,执行switch下面的语句。 试说明while语句和do-while语句的异同:二者相同点在于都可以进行次数确定的循环体的次数。不同点在于do-while现执行循环中的语句,然后再判断条件是否为真,若为真则继续循环;若为假则终止循环。因此,do-while循环至少要执行一次循环语句。而while则是先判断条件后执行循环体简述for语句的执行过程及注意事项: 计算机表达式1 表达式2非0? 执行语句s 计算机表达式3 循环结束,执行下面的语句 注意事项:for语句中的3个表达式可以省略但后面的分号不能省略。 试说明continue语句和break语句的作用及区别:break的功能是跳出本层循环(对多层循环而言),接着执行下面的语句。continue语句的作用是执行continue时,循环体中continue下面的语句都不执行,重新进行循环判断以决定是否继续进行下次循环。Break和continue的区别在于:continue C 有一段程序为:while(表达式) 语句1;语句2; …… do-while语句中while 在C C C C C C语言中,语句x=!a==b 3个关于C语言的结论:可以用while语句实现的循环一定可以用for语句实现;可以用for语句实现的循环一定可以用while语句实现;可以用do-while C语言程序中,continue C语言中,if和switch C语言中,语句while C语言中,关于scanf C语言中,与语句while(!E C语言程序中,for循环语句中的表达式2为一非零常数且循环体内无break语句及goto 设i是int scanf(“i=%d,f=%f”,&i,&f);为了把100和765.12分别赋给i和 f

循环结构习题

循环结构 一.选择题 1.下面程序段 int k=2; while (k=0) {printf(“%d”,k);k--;} 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环题语句一次也不执行D)循环体语句执行一次 2.以下程序段的循环次数是。 for (i=2; i==0; ) printf(“%d” , i--) ; A)无限次B)0次C)1次D)2次 4.下面程序的输出结果是。 main ( ) { char c=’A’; int k=0; do { switch (c++) { case ‘A’ : k++ ; break ; case ‘B’ : k-- ; case ‘C’ : k+=2 ; break ; case ‘D’ : k%=2 ; continue ; case ‘E’ : k*=10 ; break ; default : k/=3 ; } k++; } while (c<’G’) ; printf (“k=%d”,k) ; } A)k=3 B)k=4 C)k=2 D)k=0 5.下面程序的输出结果是。 main ( ) { int x=9; for (; x>0; x--) { if (x%3==0) { prin tf(“%d”,--x); continue ; } } } A)741 B)852 C)963 D)875421

6.以下不是死循环的程序段是。 A)int i=100; B)for ( ; ; ) ; while (1) { i=i%100+1 ; if (i>100) break ; } C)int k=0; D)int s=36; do { ++k; } while (k>=0); while (s) ; --s ; 7.下述程序段的运行结果是。 int a=1,b=2, c=3, t; while (a=’A’ && c<=’Z’) m++; if (c>=’a’ && c<=’z’) n++; } } A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)sca nf(“%c”,&c) 9.下述语句执行后,变量k的值是。 int k=1; while (k++<10); A)10 B)11 C)9 D)无限循环,值不定 10.下面程序的输出结果是。 main ( ) { int k=0,m=0,i,j; for (i=0; i<2; i++) { for (j=0; j<3; j++) k++ ; k-=j ; } m = i+j ; printf(“k=%d,m=%d”,k,m) ;

第三节循环结构控制语句

第三节循环结构控制语句 程序设计中,经常会碰到这样的情况:重复执行同一段程序代码,直到满足条件为至。这种程序结构称为“循环结构”。 如何有效地完成重复工作呢? C++提供了三种循环控制语句:while语句,do…while语句,for语句。三种语句都由相似的三部分组成:进入循环的条件,循环体,退出循环的条件;完成的功能也类似。所不同的只是三者进入与退出循环的方式不同。 while语句:当条件满足时进入,重复执行循环体,直到条件不满足时退出。 do…while语句:无条件进入,执行一次循环体后判断是否满足条件,当条件满足时重复执行循环体,直到条件不满足时退出。 for语句:当循环变量在指定范围内变化时,重复执行循环体,直到循环变量超出了指定的范围时退出。 一、while语句 while语句的语法格式为: while (条件表达式) 循环体; 它的含义为:首先对条件表达式进行判断,若判断结果为假(false,0),则跳过循环体,执行while结构后面的语句。若判断结果为真(true,非0),则进入循环体,执行其中的语句序列。执行完一次循环体语句后,修改循环变量,再对条件表达式进行判断,若判断结果为真,则再执行一次循环体语句,……依次类推,直到判断结果为假时,退出while循环语句,转而执行后面的语句。即“先判断后执行”。 while循环由4个部分组成:循环变量初始化,判断条件,循环体,改变循环变量的值。 【例3-13】计算sum=1+2+3+…+10 #include void main() { int sum=0; //sum清0 int i=1; //循环变量初始化 while (i<=10) //判断条件 { //循环体 sum=sum+i; //累加到sum i++; //改变循环变量的值 } cout<<"sum="< using namespace std; void main() {

分支与循环程序设计

实验名称分支及循环程序设计成绩 指导教师****** 专业班级****** 姓名白*** 学号******* 联系电话******** 一、任务要求 1.熟练掌握Keil环境下汇编语言程序的调试方法,加深对汇编 语言指令、机器码、寻址方式等基本内容的理解,掌握分支程 序和简单程序的设计及调试方法,了解并行IO口的使用。 2.设有8bits符号数X存于外部RAM单元,按以下方式计算后 的结果Y也存于外部RAM单元,请按要求编写完整程序。 3.利用51系列单片机设计一个24小时制电子时钟,电子时钟 的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩 BCD码的形式)。P3.0为低电平时开始计时,为高电平时停

止计时。设计1s延时子程序(延时误差小于10us,晶振频 率12MHz)。 4.1)实现4位十进制加、减1计数,千位、百位由P1口输出; 十位、个位由P2口输出。利用P3.7状态选择加、减计数方 式。 2)利用P3口低四位状态控制开始和停止计数,控制方式自 定。 二、设计思路 1.先在外部RAM取数,然后判断该符号数是否为负数,若为负 数,则取相反数并存数;若为正数,则接着判断该数是否大于 等于64,若满足,则求平方并存数,先存低位,后存高位; 若小于64,则接着判断该数是否大于10,若满足,则求该数 的一半并存数;若小于等于10,则取相反数并存数。 2.第一步先编可以延时1S的子程序DELAY;接着判断P 3.O 是否满足开始计数条件,若不满足,则重复判断;若满足,则 对时分秒分别赋值,调用延时子程序,判断是否满足计时条件,若不满足,则重复判断直至满足;若满足,则秒钟自加一,循 环,判断秒钟循环满60次后出循环,对分钟自加一,然后继 续循环,最后判断分钟循环满60次后出循环,对时钟自加一,然后判断时钟循环满24则回到初值,时分秒重新赋值并重新 开始循环。

第2章 顺序结构、选择结构和循环结构的程序设计 习题答案

第二章顺序结构、选择结构和循环结构的程序设计 一、简答 1. 参考书上23页 2. while先判断,后执行,do while先执行,后判断,循环体至少执行一次 3. 参考书上29页 4. continue,结束本次循环 break,结束循环 区别在于,continue只结束本次循环重新进行下次循环,而break结束整个循环 二、填空题 1. 顺序结构,选择结构,循环结构 2. if else 和switch 3. 语句1 ,语句2 4. 零 5. break ,continue 6. 7 ,0 7. ? : ,双目 三、单选 1-5 ABDCC 6-10 DBACA 11-15 CBCDA 16-20 ACBAD 21-25 ADCBB 26-29 BCCA 四、程序分析题 1. end 1end 2. num%10 max = t 3. j%3 4. 99 五、编程题 1. #include int main(){ char str[100] ; gets(str) ; int n1 , n2 , n3 , n4 , i ; n1 = n2 = n3 = n4 = 0 ; for(i = 0 ; str[i] != '\0' ; ++i) { if(str[i] >= 'A' && str[i] <= 'Z') ++n1 ; else if(str[i] >= 'a' && str[i] <= 'z') ++n2 ; else if(str[i] >= '0' && str[i] <= '9') ++n3 ; else

} printf("大写字母:%d\n" , n1) ; printf("小写字母:%d\n" , n2) ; printf("数字字符:%d\n" , n3 ) ; printf("其他字符:%d\n" , n4) ; return 0; } 2. #include #include int main(){ int array[4] , min , max , i ; for(i = 0 ; i < 4 ; ++i) scanf("%d" , &array[i]) ; min = max = array[0] ; for(i = 1 ; i < 4 ; ++i) { if(array[i] < min) min = array[i] ; else if(array[i] > max) max = array[i] ; } printf("min = %d , max = %d\n" , min , max) ; return 0; } 3. #include int main(){ float money , lixi ; int year ; scanf("%f %d" , &money , &year) ; switch(year) { case 1 : lixi = money * 0.63 / 100 ;

C语言习题:顺序、选择、循环

顺序结构程序设计 2.3.1 要点导读 () 与scanf()语句。 printf() 与scanf()语句是最通用的输入输出函数,它们可以在程序设计者的控制下以各种格式分别实现数据的输出和输入操作。它们位于库文件中。 2.字符数据的输入输出。 最简单的字符输入输出函数是getchar()和putchar()。两者分别从键盘读一个字符或向显示屏写一个字符。 2.3.2 经典例题分析 1.下列程序运行后输出的结果是。 #include <> void main() 、 { int a=0,b=0; a=10; b=20; printf(“a+b=%d”,a+b); } 分析:printf( )是输出函数,它的括号内由两部分组成: 1)控制字符串,是用双引号括起来的字符串,它包括两种信息: (1) 格式说明。由”%”和格式字符组成,如:%d、%f、%c等。它的作用是将输出 的数据转换成指定的格式输出。 (2) 普通字符。需要原样输出的字符。 - 2)”输出表列”是需要输出的一些数据,可以是表达式。 题目中a的值是10,b的值是20,在 printf(“a+b=%d”,a+b); 格式说明输出表列 中,”a+b= “是普通字符,需原样输出。输出表列是一个表达式,它的结果以整型输出。 答案:a+b=30。 2.下列程序运行后输出的结果是。

#include <> void main() { int a=732; ) printf(“%d\n”,a); printf(“%2d\n”,a); printf(“%10d\n”,a); printf(“%-10d\n”,a); } 分析:d格式符,用来输出十进制整数。其中%d,按整型数据的实际长度输出。%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。 printf(“%d\n”,a);把a的值按原样输出:732。printf(“%2d\n”,a);结果占2列,但732占3列大于2列,所以按实际位数输出:732。printf(%10d\n”,a);结果占10列,但732占3列小于10列,所以左端补7个空格。printf(“%-10d\n”,a); 结果占10列,“-”表示把数值放到左端,732占3列小于10列,所以右端补7个空格。 答案:732 732 □□□□□□□732 /*□表示空格*/ , 732□□□□□□□ 3.已知char a=‘\103’;则语句printf(“%3d”,a);执行后的输出结果为(□表示空格)。 A)□67B)’c’C)67□D)103 分析:’\103’是一个转义字符,表示一个八进制数所代表的字符,转换为十进制为67。printf(“%3d”,a);把’\103’转换为十进制数输出,结果占3列。但67占2列,小于要求的3列,所以左补空格,即□67。 答案:C。 4.下列程序运行后结果是。 #include <> #define a void main() { printf(“%f\n”,a); @ printf(“%e\n”,a); printf(“%4.2f\n”,a); printf(“%3.1f\n”,a); printf(“%10.3f\n”,a); printf(“%-10.3f\n”,a); } 分析:f格式符,用来输出实数,以小数形式输出,小数点后输出6位。所以printf(“%f\n”,a);输出结果为。 %是指,要输出的数占m列,同时小数点保留n位(四舍五入),如果输出的数大于m,

顺序、选择、循环三种基本结构程序设计.

昆明理工大学信息工程与自动化学院学生实验报告 (2012 —2013 学年第一学期) 课程名称:结构化程序设计与C语言开课实验室:系机房444 2012 年10月21日 一、实验的目的 1、学习在VC++环境下编辑调试C语言程序的方法。 2、掌握在C语言中的各种数据类型,以及如何定义整型、实型、字符型的变量,并进 行赋值的方法。 3、掌握顺序程序的思路,特别是赋值语句的使用方法。 4、掌握各种类型数据的输入输出方法的正确应用,熟悉各种格式控制符的作用。 5、学会在选择结构中正确应用关系表达式及逻辑表达式。 6、熟练掌握if语句和switch语句的使用。 7、学会选择结构问题算法的编制与调试应用。 8、熟练掌握while语句、do-while语句和for语句实现循环的方法。 9、学会循环问题的编制与调试、运行。 二、实验内容与要求 本实验涵盖顺序、选择、循环三部分程序设计的应用,要求每部分完成两个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。具体要求完成的问题如下:(注意:在模板中给出了题的页数与题号,请写正式报告时将书上的题目内容代替页数与题号) (1)P82/2 (2)P84/6 (3)P112/6 (4)P113/9 (5)P140/5 (6)P141/16 三、算法设计思想或程序流程图 (1)设:五年期,三年期,二年期,一年期,活期存款分别为:r5,r2,r3,r0; 第一种,第二种,第三种,第四种,第五种五年期存款的本息和分别为

p1,p2,p3,p4,p5。 则有: p1=p*((1+r5)*5); 一次存5年期 p2=p*(1+2*r2)*(1+3*r3); 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); 先存3年期,到期后将本息再存2年期 p4=p*pow(1+r1,5); 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); 存活期存款。活期利息每一季度结算一次 再将所得数据一一输出即可。 (2) 先分别把c1,c2,c3,c4,c5分别赋初值为c,h,I,n,a. 想要让它们的字母分别增加四位。只需将它们的ASCII码增加4个数就可以。便有 c1=c1+4; c2=c2+4 c3=c3+4; c4=c4+4; c5=c5+4;再将所得值以字符型输出便可 (3)输入x,用if语句判断X的值的范围。X<1将x的值赋给y并输出。 除此情况之外(x>1)再进行分类。若x<10则y=2*x-1。除此情况之外,y=3*x-11. (4)先判断它的位数。如果这个数大于9999则输出5;排除这种情况,大于999则输出4…以此类推。 分别输出每一位数字:几位数字便除以此位数的最小值。如9999便除以1000,由于都是整型,便得到9。依次除下去。得到的各位整数在赋给各个变量,反序输出。 (5)用tn=tn+a语句代表赋值后的tn为i个 a组成数的值 用 sn=sn+tn语句代表赋值后的sn为多项式前i项之和 用while语句实现在I #include int main() {float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=0.0585; r3=0.054; r2=0.0468; r1=0.0414; r0=0.0072; p1=p*((1+r5)*5); p2=p*(1+2*r2)*(1+3*r3); p3=p*(1+3*r3)*(1+2*r2); p4=p*pow(1+r1,5); p5=p*pow(1+r0/4,4*5); printf("p1=%f\n",p1); printf("p2=%f\n",p2); printf("p3=%f\n",p3); printf("p4=%f\n",p4);

相关文档
最新文档