文档库 最新最全的文档下载
当前位置:文档库 › 第4讲循环结构

第4讲循环结构

第四讲 循环结构之一

温故而知新
?逻辑运算:
? X=10, ?15?Switch 语句:分数等级 ?嵌套IF语句:少于5位的整数位数 ?问:输入任意整数,判断其位数?
1

本讲内容
?While 循环语句 ?Do-while循环语句
2

while循环控制
?语句一般格式
while (表达式) { 语句 }
z 一般为关系表达式
z 称为循环体,可
或逻辑表达式,也 可以是C语言其他 类型的合法表达式 z 用来控制循环体是 否执行
3
以是基本语句、 控制语句,也可 以是复合语句 z 是循环重复执行 的部分

功 能
?计算表达式的值,为非0(逻辑真)时,重复执行 内嵌语句,每执行一次,就判断一次表达式的值, 直到表达式的值为0 时结束循环,转去执行while后 面的语句。 循环控制条件
流程图 N N-S结构图 当表达式为真 语句
表达式非0?
Y 语句 4
循环体

阅读程序
#include int main() { int i; i = 1; while (i <= 10) { printf("%d\n", 2*i - 1); i = i+1; 等效于: i++ } return 0; } 5

例 如
【例】编写程序,求100个自然数的和 即: s=1+2+3+ … +100 思路:寻找加数与求和的规律
加数i——从1变到100,每循环一次,使i增1, 直到i的值超过100。i的初值设为 1。 初值 求和——设变量 sum 存放和,循环求 sum=sum+i,直至i超过100。
6

算法和程序
i=1,sum=0 当i <= 100 sum=sum+i i++ 输出sum
i: 循环控制变量 sum: 累加器
main( ) { int i,sum; i=1; sum=0; while (i<=100) { sum=sum+i; 两语句能 i++; 否交换? } printf("sum=%d\n",sum); }
程序输出结果: sum=5050
7

注 意
?循环体如果包含一个以上的语句,应用花括 号括起来,以复合语句形式出现。如果不加 花括号,则while语句的范围到while后第一个 分号处。 ?在循环体中必须有使循环趋向结束的操作, 否则循环将无限进行(死循环)。
8

注 意(续)
?为了保证循环正常运行,应该特别注意:
? 循环控制条件的描述 ? 控制条件的初始状态(初始值) ? 循环体内部对控制条件的影响
9

编写程序
?输入任意整数,判断其位数?
10

do-while语句
?语句一般格式
do 循环体语句 while (表达式);
?功能:
? 先执行语句循环体,之后计算表达式的值,
不为0(逻辑真)时,再执行循环体;再次判断 条件,直到表达式的值为 0 结束循环,转去 执行while下面的语句。
11

do-while循环的算法
流程图
循环体
表达式非0?
N-S结构图 循环体 当表达式为真
Y
N
用do-while语句求100 个自然数的和
12
main( ) { int i=1,sum=0; do { sum=sum+i; i++; } while (i<=100); printf("%d\n",sum); }

编写程序
?输入任意整数,判断其位数? ?猜数游戏 ?算法描述:
? 1.随机产生一个[1,100]之间的整数数 ? 2.从键盘输入一个猜测的数
if x>n,提示“too big,try again”,返回到第2步 else if x? 3.
13

小 结
?while和do-while都能实现循环控制,while 结构程序通常都可以转换成do-while结构
z 区别:
do- while 语句先执行循环体再判断条 件,循环体至少执行一次; – while 语句先判断条件再执行循环体, 循环体有可能一次也不执行 z do—while循环体中一定要有能使表达式值 趋于0的操作(如i++),否则会出现死循环。
– 14

练 习
?1.输入10个数,求其中最大数 ?P76 1
15

16

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

13.循环结构

循环结构 LabVIEW中的循环结构有for 循环和while 循环。其功能与文本语言的循环结构的功能类似类似,可以控制循环体内的代码执行多次。 一、for 循环 但是LabVIEW 中的for 循环的限制更多一些。 1.For 循环的迭代器只能从0 开始,并且每次只能增加1。 2.For 循环不能中途中断退出。C 语言里有break 语句,但在LabVIEW 中不要试图中间停止for 循环。 外部数据进入循环体是通过隧道进入的,有几种方式: 图1:For 循环结构上的隧道 图1 所示的For 循环结构演示了三种隧道结构,就是在For 循环结构左右边框上用于数据输入输出的节点。这三种隧道从上至下分别是:索引隧道、移位寄存器(shift register)、一般隧道。 一般隧道,就是把数据传入传出循环结构。数据的类型和值在传入传出循环结构前后不发生变化。 索引隧道是LabVIEW 的一种独特功能。一个循环外的数组通过索引隧道连接到循环结构上,隧道在循环内一侧会自动取出数组的元素,依顺序每次循环取出一个元素。用索引隧道传出数据,可以自动把循环内的数据组织成数组。 通过移位寄存器传入传出数据,也是数据的类型和值都不会发生变化。移位寄存器的特殊之处在于在循环结构两端的接线端是强制使用同一内存的。因此,上一次迭代执行产生的某一值,传给移位寄存器右侧的接线端,如果下一次迭代运行需要用到这个数据,从移位寄存器左侧的接线端引出就可以了。 C 语言程序员初学LabVIEW,在使用循环结构时,常常为创建一个中间变量烦恼。为循环中的变量创建一个Local Variable 不是好的方法。我们应当时刻记得LabVIEW 与一般文本语言不同,LabVIEW 的数据不是保存在显示的变量里,而是在连线上流动的。LabVIEW 是通过移位寄存器把数据从一次循环传递到下一次的。

第6章 循环结构程序设计

第6章循环结构程序设计 【计划课时】授课6课时+上机4课时 6.1 概述 循环是在循环条件为真时计算机反复执行的一组指令(循环体)。 循环控制通常有两种方式: ·计数控制——事先能够准确知道循环次数时用之 用专门的循环变量来计算循环的次数,循环变量的值在每次执行完循环体各语句后递增,达到预定循环次数时则终止循环,继续执行循环结构后的语句。 ·标记控制——事先不知道准确的循环次数时用之 由专门的标记变量控制循环是否继续进行。当标记变量的值达到指定的标记值时,循环终止,继续执行循环结构后的语句。 在C语言中可用以下语句构成循环: if … goto while do … while for 6.2if … goto语句循环结构P106 goto是一种无条件转向语句。 一般形式: goto标号; if … goto 可构成当型/直到型循环结构(尽量少用,以提高程序可读性/结构性)。 【例一】 { int n=0,sum=0; loop: sum+=n; ++n; if (sum<=10000) goto loop; printf(“n = %d\n”,n); }

6.3 while 语句循环结构 P107 一般形式 while (条件表达式) 循环体; 用于构成当型循环:先判断后执行/条件为真继续循环,直到条件为假时结束循环。 【注意】条件表达式或循环体内应有改变条件使循环结束的语句,否则可能陷入“死循环”。 【例一】 main() { int n=0; while (n<=2) { n++; printf(“%d”,n); } } 结果:123 【讨论】若去while 语句中的{},结果:3;若将n++移到printf 语句中,结果:012 【例二】 int n=0; while (n++<=2); printf(“%d”,n); 结果:4 【讨论】n=3时,while 条件为假,结束循环,但比较后n 自加了一,所以n=4。 【例三】 main() { int i=0; while (1) { printf(“*”); i++; 【例二】 main() { int n=0,sum=0; loop: if (sum>=10000) goto end; sum+=n; ++n; goto loop; end: printf(“n = %d \n”,n); }

Chap9数据分析(最大,最小,方差等)

第9章数据分析 由于MATLAB面向矩阵,所以它很容易对数据集合进行统计分析。按规定,数据集存储在面向列的矩阵里。也就是,一个矩阵的每一列代表不同的被测变量,每一行代表各个样本或观察值。例如,让我们假定,一个月31天的三城市每日高温(单位为0C)被记录,并赋给脚本M文件中的变量temps,在精通MATLAB工具箱里取名为mmtemp.m。运行M文件,把变量temps放在MATLAB 工作空间里。这样,变量temps包含: ? temps temps = 12 8 18 15 9 22 12 5 19 14 8 23 12 6 22 11 9 19 15 9 15 8 10 20 19 7 18 12 7 18 14 10 19 11 8 17 9 7 23 8 8 19 15 8 18 8 9 20 10 7 17 12 7 22 9 8 19 12 8 21 12 8 20 10 9 17 13 12 18 9 10 20 10 6 22 14 7 21 12 5 22 13 7 18 15 10 23 13 11 24 12 12 22

? d=1:31; % number the day s of the month ? plot(d, temps) ? xlabel(' Day of Month '),ylabel(' Celsius ') ? title(' Daily High Temperatures in Three Cities ') (见图9.1) 图9.1 三个城市的每日高温 上面的plot命令也说明了plot命令用法的另一种形式。变量d是一个长度为31的向量,而temps是一个31×3矩阵。给定这些数据,plot命令绘出了temps对每一列d的曲线。绘图在第7和8章进一步讨论。 为了说明MATLAB数据分析的一些功能,根据上面温度数据考虑以下命令。 ? avg_temp=mean(temps) avg_temp = 11.9677 8.2258 19.8710 表明第三个城市有最高平均温度。这里MATLAB分别地找出了各列的平均值。 ? avg_avg=mean(avg_temp) avg_avg = 13.3548 找出了三个城市的总平均温度。当输入到数据分析函数是行或列向量时,MATLAB仅对向量执行运算,返回一个标量。

4字节乘法及循环结构

实验三 4字节乘法及循环结构 实验目的: 1.掌握顺序向下编程方法。 2.掌握4字节乘法编程处理方法。 3.掌握循环结构编程方法。 4.掌握多模块汇编、链接、运行的方法。 实验设备: 计算机一台。预装Windows XP、宏汇编MASM5。 实验内容A: 编写能够实现以下要求的汇编语言程序,并上机实现。 1.编写一个4字节乘法程序,并将结果以十六进制数形式输出到屏幕上。 2.给出两个4字节的乘数,用Winsows中的计算器(科学型)算出十六进制结果,再用本程序获得结果,对照二者是否相同。注意数的高、低位在内存中的放置规则。 实验内容B: 编写能够实现以下要求的汇编语言程序,并上机实现。 1. 一个较大的汇编语言程序常需要做成多个模块,然后链接起来。这需要用到以下两条伪指令。 使本模块中的符号可被其它模块使用: PUBLIC 符号 在本模块中使用其它模块中的符号: EXTRN 符号:类型(类型为BYTE、WORD、NEAR、FAR等) 将两个模块分别汇编,然后键接起来即可。各模块的汇编同单独程序的汇编,链接时用LINK 模块1+模块2+…。 将十六进制数转换成ASCII码子程序单独做成一个模块,然后与主模块链接起来。运行应该能够获得与实验内容A同样的结果。 2.分析实验内容B程序有哪些变化,总结出分模块编程的方法。 预习要求: 1.阅读实验内容A的参考源程序,对其结构以及实现方法进行分析,在理解的基础上掌握编程方法。 2.根据要求,编写实验内容B的源程序。 3.编辑建立实验内容A和实验内容B的源程序文件,存入U盘保存。 4.写出预习报告,报告中应有实验内容B的源程序清单。 实验步骤: 1.编辑建立实验内容A的源程序,对其进行汇编、链接获得可执行文件。运行可执行文件,实现实验内容A的要求。 2.参考实验内容A的源程序,编辑建立实验内容B的源程序,对其进行汇编、链接获得可执行文件。如果在汇编、链接过程中有错误产生,则根据提示信息逐一修改错误,直到无错误产生。运行可执行文件,实现实验内容B的要求。

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 {

实验四循环结构程序设计

实验四循环结构程序设计(一) 一、实验学时 2学时 二、实验目的 (一)掌握用while,do-while,for语句实现循环的方法; (二)掌握在设计条件型循环结构的程序时,如何正确地设定循环条件,以及如何控制循环的次数。 (三)掌握与循环有关的算法。 三、预习要求 预习教材第六章有关while,do-while,for语句的语法格式,并能通过这三种语句编写、调试单层循环结构的程序。 四、实验内容 (一)分析并运行下面程序段,循环体的执行次数是__________。 int a=10,b=0; do { b+=2;a-=2+b;} while(a>=0); (二)当执行以下程序段时,循环体执行的次数是__________。 x = -1; do { x=x*x;} while( !x); (三)编程求 1!+2!+3!+……+20! 的值。 注意:根据题目,考虑所定义的各个变量应该为何种类型。程序结构如下:/* c4-1.c */ /* 求1!+2!+3!+……+20! */ #include "stdio.h" void main( ) { 定义变量i作为循环控制变量; 定义变量p和sum分别存放各个整数的阶乘和阶乘之和; 变量p和sum赋初值; for( i=1; i<=20; i++ ) { 变量p连乘 ; 变量sum累加; } 输出sum的值 ; } (四)编写一个程序,求出两个数m和n的最大公约数和最小公倍数。 编程提示:求最大公约数的方法有三种: 1.从两个数中较小数的开始向下判断,如果找到一个整数能同时被m和n整除,则终止循环。设n为m和n中较小的数,则如下程序段可实现: for(k=n; k>=1; k--) if(m%k==0 && n%k ==0) break; k即为最大公约数。 /* c4-2.c */ /* 求最大公约数算法1 */ #include "stdio.h"

第四章。循环结构(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.}

实验四 循环结构程序设计(答案)

实验四循环结构程序设计(解答) 1.改错题 (1)下列程序的功能为:求1~100之和(和值为5050)并输出。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c存盘。 #include main() { int i,sum=0; i=1; while(i<100) sum=sum+i; i++; printf(“The sum from 1 to 100 is %d\n”,sum); } 改正后的程序: #include main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("The sum from 1 to 100 is %d\n",sum); } (2)下列程序的功能为:倒序打印26个英文字母。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_2.c存盘。 #include main() { char x; x='z'; while(x!='a') { printf("%3d",x); x++; } }

改正后的程序: #include main() { char x; x='z'; while(x!='a'-1) 或while(x>='a') 或while(x!=96) { printf("%3c",x); x- -; } } (3)下列程序的功能为:输出如下的图形,要求顶端的*定位在第21字符位置,请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_3.c存盘。 * *** ***** ******* #include void main() { int i,j; for (i=0;i<4;i++) { for (j=0;j<=20;j++) printf("\n"); for (j=0;j<2*i+1;j++) printf("*"); } } 改正后的程序: #include void main() { int i,j; for (i=0;i<4;i++) { for (j=0;j<=20-i;j++) printf(" "); for (j=0;j<2*i+1;j++) printf("*"); printf("\n"); } } 2.程序填空 (1)下列程序的功能为:用辗转相除法求两个正整数的最大公约数;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_4.c存盘。 提示:

第六章循环控制概要

第六章循环控制 通过本章实验作业应达目标 1.熟悉while、for、do_while、break、continue语句的作用与使用规范。 2.学习并掌握利用while语句、for语句、do_while语句实现循环结构。 3.掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。 4.进行算法设计训练,能综合所学控制结构语句解决一般问题。 本章必须上交作业 程序6_1.c、6_2.c、6_5.c、6_6.c、6_8.c上传至211.64.135.121/casp。 本章开始,上机实验项目量加大,希望同学们多多自行上机。本章实验项目有余力都可以做一下并上交。 循环程序设计 计算机解决问题都是按指定的顺序执行一系列的动作。按照特定的顺序执行相应的动作来求解问题的过程称为算法。程序中的语句是算法的体现,而算法要解决的是“做什么”和“怎么做”的问题。 计算机程序中指定语句的执行顺序称为“程序控制”。结构化的程序控制包含三种基本结构:顺序结构,选择结构和循环结构。 1. 循环设计 循环是在循环条件为真时反复执行的一组计算机指令,是计算机解题的一个重要结构。循环控制有两种基本方法:计数法和标志法。 1)计数器控制的循环 事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1或-1),当其值达到终值时结束循环。 教材例6.2、6.3、6.7都是典型的计数器控制的固定次数次数循环。 2)标志控制的循环 事先不知道准确的循环次数,由某一目标值标记循环的结束。如,教材例6.6中以|t|的值达到标记下限值1e-6作为循环的结束。 循环设计时要注意合理设计循环条件,使得循环不会成为死循环。 2. 算法 程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法,是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。 循环主要用来解决程序设计中两类基本的算法:穷举和迭代。 1)穷举 穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举是一种重复型算法,其核心是设计循环,在循环体中依次测试。 例:输入两个正整数x和y,求其最大公约数。 main() {int x,y,i,flag; printf("Please input two numbers:"); scanf("%d%d",&x,&y);

第四章循环结构

第四章循环结构 一、选择题 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.*

最新实验四分支循环结构程序设计

实验四分支循环结构 程序设计

实验四、分支循环结构程序设计 一、实验目的 1.通过本实验,加深对循环控制结构有关概念的理解。 2.熟练掌握while、do-while和for三种循环控制语句的特点,掌握循环结构程序设计和调试方法。 3.掌握二重循环结构程序的设计方法。 二、实验内容 1.用while循环实现数据统计问题。 数据统计问题:从键盘输入一批任意数量的整数,统计其中不大于100的非负数数值的个数。 2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问题。调试数据仍参照上面给出的几种情况设计使用。 3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。4.阶乘累加问题。编写程序,求1+2!+3!+…+n!的值(习题5.9)。三、实验指导 1.用while循环实现数据统计问题。 ⑴编程分析 由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不 确定的。在进行程序设计时,确定循环控制的方法是本实验的一个关键 问题。循环控制条件可以有多种确定方法: ①使用一个负数作为数据输入结束标志。 ②输入一个数据后通过进行询问的方式决定是否继续输入下一个数据。 ⑵参考程序 l 参考程序一 /* 使用负数作为数据输入结束标志的程序 */ #include "stdio.h" void main() { int m,counter=0; while(1) { printf("请输入一个整数:"); scanf("%d",&m); if(m<0)break; if(m<=100)counter++; printf("\n"); } printf("符合要求的整数个数为: %d\n",counter); } l 参考程序二 /* 通过进行询问的方式决定是否继续输入下一个数据的程序 */ #include "stdio.h" void main() { int m,counter=0; char ask; while(1) { printf("请输入一个整数:"); scanf("%d",&m);

实验项目四结构化程序设计_循环结构

《程序设计基础I》实验报告实验项目四:结构化程序设计_循环结构

一、实验目的及要求 (1)熟悉掌握用while语句,do-while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)掌握多重循环的选择时机和使用方法; (4)掌握使用break和continue语句的方法。 二、实验设备(环境)及要求 使用Visual C++ 6.0;windows系列操作系统的环境。 三、实验内容与步骤(要求以“学号_姓名_题号”为名建立项目; 例项目名为:2013050201_***_01) 1.分别用while、do-while、for语句编程,求数列前20项之和:2/1,3/2,5/3,8/5,13/8······算法提示: 1)定义实变量sum、term、a、b、c,整变量i 2)初始化:sum=0,分子a=2,分母b=1 3)初始化:i(计数器)=1 4)计算第i项term =a/b 5)累加sum=sum+term 6)计算c=a+b,更新b= a,更新a=c 7)计数器加1,i++ 8)重复4、5、6、7,直到i>20 9)输出2位精度的结果

把每一次迭代结果输出,程序应做怎样的修改? 3输入正数n ,要求输出Fibonacci 数列的前n 项。1,1,2,3,5,8…… #include 开始 结束 term=0 sum=0 i=1 i ≤20? i=i+1 sum=sum+term term=term *i 输出sum 是 否 #include int main() {float term,sum;int i; term=1,i=1,sum=0; while(i<=20) {term=term*i; sum=sum+term; printf("sum=%.1f\n",sum); i++; } printf("sum=%f\n",sum); return 0; }

第6章循环结构(二)

第6章 循环结构(二) ◇本章工作任务 实现MyShopping统计顾客的年龄层次 实现MyShopping循环录入会员信息 实现MyShopping登录时用户信息验证 ◇本章技能目标 会使用for循环结构 会在程序中使用break和continue

本章单词 请在预习时学会下列单词的含义和发音,并填写 在横线处。 1.rate: 2.young: 3.schedule: 4.negative: 5.customer: 6.birthday: 7.point: 8.continue: 9.return: _

本章简介 上一章我们学习了while和do-while循环结构。在编程的过程中,把一些重复执行的代码采用循环结构进行描述,大大简化了编码工作,使得代码更加简洁、易读。相信通过使用循环结构编程,你一定体会到了它的魅力。while循环结构是先进行条件判断,然后执行循环操作;do-while循环结构是先执行依次循环操作,然后进行判断。但是Java中的循环结构不只有while和do-while两种,还有for循环结构,它又是什么样子的?有什么功能?这一章就让我们揭晓这一结构:for循环结构。 6.1 for循环 6.1.1 为什么需要for循环 在上一章,通过使用while循环,张浩轻松解决了老师补充的问题,如示例1所示。 示例1 public class WhileDemo { public static void main(String[] args) { int i=0; while(i<100){ ←使用while循环 System.out.println(“好好学习,天天向上!”); i++; } } } 仔细观察你会发现,这里的循环次数“100遍”已经固定,这是我们也可以选用for循环结构来实现,如示例2所示。 示例2 public class ForDemo { public static void main(String[] args) { for(int i=0; i<100; i++;) { ←使用for循环 System.out.println(“好好学习,天天向上!”); } } }

最新C语言第六章循环结构复习题

循环结构程序设计复习题 一.选择题 1.以下while循环中,循环体执行的次数是:() k=1; while (--k) k=10; a) 10次b) 无限次c) 一次也不执行d) 1次 2.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=0; while (!x!=0) x++; a) 退出while循环后,x的值为0 b) 退出while循环后,x的值为1 c) while的控制表达式是非法的 d) while循环执行无限次 3. 有以下程序段,其中n为整型变量,执行后输出结果是:() n=20 ; while(n--) ; printf(“%d”,n) ; a) 2 b) 10 c) -1 d) 0 4. 有以下程序段,其中t为整型变量,以下选项中叙述正确的是:() t=1; while (-1)

{ t--; if(t) break;} a) 循环一次也不执行 b) 循环执行一次 c) 循环控制表达式(-1)不合法 d) 循环执行2次 5. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=-1; do {;} while (x++); printf(“x=%d”,x); a) 该循环没有循环体,程序错误 b) 输出x=1 c) 输出x=0 d) 输出x=-1 6. 有以下程序段,其中x,y为整型变量,程序输出结果是:() for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ; printf(“x=%d,y=%d”,x,y); a) x=2,y=0 b) x=1,y=0 c) x=1,y=1 d) x=0,y=0

Python-实验4--循环结构

实验四循环结构 【实验目的】 1.掌握For语句和while循环语句的使用。 2.掌握循环的规则及其执行过程。 3.掌握如何控制循环条件,防止死循环或不循环。 【实验内容】 1.编写程序,找出7的倍数中十位数为2的所有3位数。 x=100 while x<1000: y=x/100 a=(x-100*y)/10 z=x-100*y-10*a if (10*y+a-2*z)%7==0 and a==2: print x x+=1 else: x+=1 或: x=100 while x<1000: if x%7==0 and x//10%10==2: print x x+=1 或: for x in range(100,1000): if x%7==0 and x//10%10==2: print x 2.编写程序用Print语句输出2000年至2500年间的所有闰年,要求每行输出8个。 y=2001 count=0 flag=True while flag: if y%4==0 and y%100!=0 or y%400==0: if count%8==0: print print y, y+=1 count+=1 else: y+=1 if y==2500: flag=False 3.编写程序解决爱因斯坦台阶问题:有人走一台阶,若以每步走两级则最后剩下一级;若每步走三级则剩两级;若每步走四级则剩三级;若每步走五级则剩四级;若每步走六级则剩五级;若每步走七级则刚好不剩。问台阶至少共有多少级? L=[] for x in range(0,1000): if x%2==1 and x%3==2 and x%4==3 and x%5==4 and x%6==5 and x%7==0: L.append(x) print min(L) 至少共有119级

作业4 循环结构

作业4 循环结构 一、作业要求 1. 作业最后需写作业小结,写出本次作业中遇到的问题或程序中遇到的错误,以及解决问题的方法。无作业小结者,本次作业无成绩。 2. 作业成绩取决于作业的认真程度(反映在作业小结中),而不是作业题目的对错。雷同者双方成绩均为0,未事先说明迟交者,作业成绩为0。 二、作业内容 任选4个难度级别不同的题目!! 所有程序要求写出程序运行结果!!! 先看书,再写作业。 1、(难度:★) 个位数为6且能被3整除的五位数共有多少? 2、(难度:★) 编程计算1!+2!+3!+4!+…+10!的值。 3、(难度:★★) 求s=1/(1+2+3)-2/(2+3+4)+3/(3+4+5)-4/(4+5+6)+……的前20项之和 4、(难度:★★) 计算 +-++-+-100 1991413121 1,直到最后一项的绝对值小于10-4为止。 5、(难度:★★) 假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的五年中的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少。 提示: 分析存钱和取钱的过程,可以采用倒推的方法。若第五年年底连本带息要取1000元,则要先求出第五年年初银行存款的钱数: 第五年初存款=1000/(1+12*0.0063) 依次类推可以求出第四年、第三年……的年初银行存款的钱数: 第四年年初存款=(第五年年初存款+1000)/(1+12*0.0063) 第三年年初存款=(第四年年初存款+1000)/(1+12*0.0063) 第二年年初存款=(第三年年初存款+1000)/(1+12*0.0063) 第一年年初存款=(第二年年初存款+1000)/(1+12*0.0063) 通过以上过程就可以很容易地求出第一年年初要存入多少钱。

第六章循环结构练习题

第六章循环控制 【题6.1】设有程序段 int k=10; while(k=10) k=k-1; 则下面描述中正确的是。 A)while循环执行10次B)循环是无限循环 C)循环体语句一次也不执行D)循环体语句执行一次 【题6.2】设有以下程序段 int x=0,s=0; while(!x!=0) s+=++x; printf(“%d”,s); 则。 A)运行程序段后输出0 B)运行程序段后输出1 C)程序段中的控制表达式是非法的 D)程序段执行无限次 【题6.3】下面程序段的运行结果是。 int n=0; while(n++<=2); printf(“%d”,n); A)2 B)3 C)4 D)有语法错 【题6.4】下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请选择填空。 #include main() { char c; while((c=getchar())!=‘\n’) { if(c>=‘a’&&c<=‘z’) { 【1】; if(c>‘Z’) 【2】; } printf(“%c”,c); } } 【1】 A)c+=2 B)c-=32 C)c=c+32+2 D)c-=30 【2】 A)c=‘B’B)c=‘A’C)c-=26 D)c=c+26 【题6.5】下面程序的功能是在输入的一批正整数中求出最大者,输入0结束循环,请选择填空。 #include main() { int a,max=0; scanf(“%d”,&a); while(【1-B】) { if(max

matlab实验4_循环结构程序设计_参考解答

实验四 循环结构程序设计 教材P364 一、实验目的 1. 掌握利用for 语句实现循环结构的方法。 2. 掌握利用while 语句实现循环结构的方法。 3. 熟悉利用向量运算来代替循环操作的方法。 二、实验内容 1. 根据2222π11116123n =++++"2,求的近似值。当n 分别取100、1000、10000时,结果是多少? π要求:分别用循环结构和向量运算(使用sum 函数)来实现。 答:程序设计: (1) 循环结构 clear all; close all; clc; for n=[100,1000,10000] sum=0; for x=1:n sum=sum+1/(x.^2); end value=sqrt(6*sum) end (2) 向量运算 clear all; close all; clc; for n=[100,1000,10000] x=1:n; value=sqrt(6*sum(1./x./x)) end 运行结果: value = 3.1321 value = 3.1406 value = 3.1415 2. 根据11113521 y n =++++?",求: (1) 时的最大n 值。 3y <(2) 与(1)的n 值对应的y 值。 答:程序设计:

clear all; close all; clc; y=0; n=1; while y<3 y=y+1/(2*n-1); n=n+1; end n=n-1; y=y-1/(2*n-1) n=n-1 运行结果: y = 2.9944 n = 56 验证: clear all; close all; clc; n=56; i=1:n; f=1./(2*i-1); y=sum(f) 运行结果: y = 2.9944 3. 考虑以下迭代公式: 1n n a x b x +=+ 其中、b 为正的常数。 a (1) 编写程序求迭代的结果,迭代的终止条件为5110n n x x ?+?≤,迭代初值,迭代次数不超过500次。 0 1.0x =(2) 如果迭代过程收敛于r ,那么r 的准确值是2 b ?±,当的值取、(8、时,分别对迭代结果和准确值进行比较。 (,)a b (1,1),3)(10,0.1)答: (1) 程序设计: clear all; close all; clc; a=2; b=3; x0=1.0; x1=0; n=1; y=abs(x1-x0); while n<=500 & y>10^(-5)

第4章--循环结构 - 参考答案

1、若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是 for (i=5;i;i--) for (j=0;j<4;j++){...} A) 20 B) 25 C) 24 D) 30 A 2、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为 for(i=0,j=10;i<=j;i++,j--) k=i+j; A) 12 B) 10 C) 11 D) 9 B 3、当执行以下程序段时 x=-1; do { x=x*x;} while( !x); A) 循环体将执行一次 B) 循环体将执行两次 C) 循环体将执行无限次 D) 系统将提示有语法错误 A 4、若输入字符串:abcde<回车>,则以下while循环体将执行多少次。 while( (ch=getchar())!='e' ) printf("*"); A) 5 B) 4 C) 6 D) 1 B 5、有以下程序段 int k=0; while (k=1) k++; while循环执行的次数是 A) 无限次B) 有语法错,不能执行 C) 一次也不执行D) 执行一次 A 6、语句while(!e);中的条件!e 等价于( )。 A) e==0 B) e!=1 C) e!=0 D) ~e A 7、以下for循环是( )。 for(x=0,y=0;(y!=123) && (x<4);x++) A) 无限循环B) 循环次数不定 C) 执行4次D) 执行3次 C 8、C语言中while 和do-while 循环的主要区别是( )。 A) do-while的循环体至少无条件执行一次 B) while 的循环控制条件比do-while 的循环控制条件严格 C) do-while 允许从外部转到循环体内 D) do-while 的循环体不能是复合语句 A 9、以下叙述正确的是( )。 A) continue语句的作用是结束整个循环的执行 B) 只能在循环体内和switch语句体内使用break语句 C) 在循环体内使用break语句或continue语句的作用相同 D) 从多层循环嵌套中退出时,只能使用goto语句 B 10、对下面程序段,描述正确的是( )。 for(t=1;t<=100;t++) { scanf("%d",&x); if (x<0) continue; printf("%d\n",t); } A) 当x<0时,整个循环结束 B) 当x>=0时,什么也不输出 C) printf函数永远也不执行 D) 最多允许输出100个非负整数 D 11、在下列选项中,没有构成死循环的程序段是 A) int i=100; while (1) { i=i%100+1; if (i>100) break; } B) for( ; ; ); C) int k=1000; do {++k;} while (k>=1000) ; D) int s=36; while (s) --s; D 12、以下程序的输出结果是 main( ) { int a,b; for(a=1,b=1;a<=100;a++) { if (b>=10) break; if (b%5==1) { b+=5; continue; } } printf("%d\n",a); } A) 101 B) 6 C) 4 D) 3 D 13、以下程序的输出结果是( )。 #include

相关文档
相关文档 最新文档