13_for语句和用for语句构成的循环结构

合集下载

第4章 循环结构(C++版)ppt课件

第4章  循环结构(C++版)ppt课件

第一节 for语句
三、语句格式举例
(1)将控制变量从1变到100,增量为1 for(i=1;i<=100;++i)
(2)将控制变量从100变到1,增量为-1 for(i=100;i>=1;--i)
(3)控制变量从7变到77,增量为7 for(i=7;i<=77;i+=7)
(4)控制变量从20变到2,增量为-2 for(int i=20;i>=2;i-=2)
【上机练习】
•8.满足条件的数【1.5编程基础之循环控制08】 • 将正整数m和n之间(包括m和n)能被17整除的数累加,其中0<m<n<1000。 •输入: • 一行,包含两个整数m和n,其间,以一个空格间隔。 •输出: • 输出一行,包行一个整数,表示累加的结果。 •样例输入: • 50 85 •样例输出: • 204
for (int i=2; i<=100 ; i+=2) cout << i << " "; return 0; }
例4.2 利用for循环,计算输出1+2+…+100的和 #include <iostream> using namespace std; int main () {
int sum=0; for (int i=1; i<=100 ; ++i)
第一节 for语句
• 二、语句执行过程 • for语句的执行过程可由以下4步来描述。 • (1)执行“控制变量初始化语句”,使控制变量获得一个初
值。 • (2)判断控制变量是否满足“条件表达式”,若满足条件则
执行一遍循环体,否则结束整个for语句,继续执行for循 环下面的句子。 • (3)根据增量表达式,计算出控制变量所得到的新值 • (4)自动转到第(2)步。

循环结构(for循环)

循环结构(for循环)

选择结构复习:单分支:行:If 条件 Then 语句块:If 条件 Then语句End If双分支行:If 条件 Then 语句1 Else 语句2块:If 条件 Then语句1Else语句2End If多分支ElseIf语句If条件1then语句1ElseIf条件2then语句2ElseIf条件3then语句3Else语句End IfSelect Case语句Select Case表达式Case 表达式1语句lCase 表达式2语句2……Case 表达式n语句nCase Else语句n+1End Select循环结构程序设计一循环结构控制语句程序设计三种基本结构结构:顺序结构流程图 选择结构流程图 循环结构流程图选择结构:(如图) If 条件表达式 Then 语句End IfFor 循环结构:(如图)For I = 1 To 10 Step 1 语句Next I循环是指对同一个程序段重复执行若干次,直到指定的条件不满足为止,这段被重复执行的语句序列被称为循环体,由若干个语句构成。

循环结构主要有三种形式:For ...Next 循环 While …Wend 循环 Do …Loop 循环。

二 For 循环(最常用的一种格式) 1、For 循环语句的格式:For 循环变量=初值 To 终值 Step 步长 循环体 Next 循环变量例如: For I = 1 To 10 Step 1 Print “ 你好 ” Next I说明:(1)循环变量:为一个数值型变量。

用来控制循环过程。

(2)初值:循环变量的初始值,一般为数值型常量、变量。

(3)终值:循环变量的终止值,一般为数值型常量、变量。

(4)步长:循环变量的增量。

其值为正,初值应小于终值(递增循环);若为负,初值应大于终值(递减循环)。

但步长不能是0。

会造成死循环。

如果步长是1,Step 1可省略不写。

(5)循环体:在For语句和Next语句之间的语句序列,可以是一个或者多个语句。

循环结构for语句

循环结构for语句
(计数循环)for语句
通过计数来控制重复语句的运行次数。
for循环
for语句 循环体(需要重复执行的子程序)
(计数循环)for语句
递增型for循环
for 控制变量:=初值 to 终值 do 循增型for循环
for 控制变量:=初值 to 终值 do 循环体语句
递增型for循环
讨论:设每次读入的数为x,和sum,平均值ave,它们都 是实数类型。
一级算法: 1.初始化sum为0; 2.for i:=1 to 20 do
begin 3.读入x 4.将x加到sum上
end 5.计算ave 6.输出sum和ave
例二:读入20个数,输出它们的和以及平均值
二级求精: 1.初始化sum为0; 2.for i:=1 to 20 do
for 控制变量:=初值 downto 终值 do 循环体语句
例一:
编程计算1+2+3+……+100=? 递增型for循环
Program he(input,output); var i,sum:integer; begin
sum:=0; for i:=1 to 100 do
sum:=sum+i; writeln(sum); end.
例一: 编程计算1+2+3+……+100=? 递增型for循环
Program he(input,output); var i,sum:integer; begin
sum:=0; for i:=100 downto 1 do
sum:=sum+i; writeln(sum); end.
例二:读入20个数,输出它们的和以及平均值

循环结构-1.for语句

循环结构-1.for语句
var i:char; begin for i:=‘a’ to ‘z’ do write(i:3); end.
9
使用for语句的注意事项:
3. do后面如果有分号,说明循环体是空
do 后面有分号,所以循环体 是空 执行完for语句后,再执行1 次k:=k+1
var i,k:integer; begin for i:=1 to 10 do; k:=k+1; end.

能否用writeln?
24
阶乘
n的阶乘:1~n 的累乘 即 n! =1*2*3*…*n 规定 : 0!=1 1!=1 n!= n* (n-1)! ∵ n!= n* (n-1) * (n-2) * … * 3 * 2 * 1 (n-1) ! ∴ n!= n * (n-1) !
25
累乘器
10.求1*2*3*…*n 的积. 即求n! readln(n);
s:=s+1;
18
累加器
4.求1+2+3+…+100的和.
s:=0;
{变量s存储 累加和}
for i:=1 to 100 do s:=s+i; write(s);
19
编程练习
5.求1+2+3+…+n的和。(n<10000) 【输入】一个整数n(n<10000) 【输出】输出1+2+3+...+n的和。 【输入样例】100 【输出样例】 5050
【分析】设i为循环控制变量,偶数个数放在s中,利用循环变量i的值从1变 化到30的规律,逐一寻找偶数的个数,找到偶数就s:=s+1.
Var I,s:integer; begin for i:=1 to 30 do if i mod 2=0 then s:=s+1; writeln(s); end.

《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案4

《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案4

《面向对象程序设计JA V A语言程序设计》期末考试试题及部分答案1一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。

1.下列语句序列执行后,k 的值是( B )。

int m=3, n=6, k=0;while( (m++) < ( -- n) ) ++k;A) 0 B) 1 C) 2 D) 32.设i、j 为int型变量名,a 为int型数组名,以下选项中,正确的赋值语句是( B )。

A) i = i + 2 B) a[0] = 7;C) i++ - --j; D) a(0) = 66;3.Java语言的类间的继承关系是( B )。

A) 多重的B) 单重的C) 线程的D) 不能继承4.设有定义int i = 6 ;,则执行以下语句后,i 的值为( C )。

i += i - 1;A) 10 B) 121 C) 11 D) 1005.下列选项中,用于在定义子类时声明父类名的关键字是( C )。

A)interface B) package C) extends D) class6.若已定义byte[ ] x= {11,22,33,-66} ;其中0≤k≤3,则对x数组元素错误的引用是( C )。

A) x[5-3] B) x[k] C) x[k+5] D) x[0]7.下列语句序列执行后,ch1 的值是( B )。

char ch1='A',ch2='W';if(ch1 + 2 < ch2 ) ++ch1;A) ‘A' B) ‘B' C) ‘C' D) B8.下列语句序列执行后,i 的值是( D )。

int i=8, j=16;if( i-1 > j ) i--; else j--;A) 15 B) 16 C) 7 D) 89.下列语句序列执行后,k 的值是( C )。

Python语言程序设计第五章循环结构程序设计

Python语言程序设计第五章循环结构程序设计

14
第5章
循环结构程序设计
5.2 for语句 结构
1. for语句一般形式: for 目标变量 in 序列对象: 循环体语句 说明:
for语句的首行定义了目标变量和遍历的序 列对象,后面是需要重复执行的语句块。语 句块中的语句要向右缩进,且缩进量要一致。
15
第5章
循环结构程序设计
注意:
(1)for语句是通过遍历任意序列的元素来建立 循环的。 (2)for 语句也支持一个可选的else块,一般格 式如下: for 目标变量 in序列对象: 语句块 else: 语句
5
第5章
循环结构程序设计
在while语句中使用else子句
while exp: 循环体 else: 语句
Python可以在循环语句中使用else子句,即构 成了while.......else循环结构。
6
第5章
循环结构程序设计
例 :求

100
n 1
n
开始 sum,n=0,1 n<=100
1)问题分析:
29
第5章
循环结构程序设计
5.4 循环控制语句
有时候我们需要在循环体中提前跳 出循环,或者在某种条件满足时,不执行 循环体中的某些语句而立即从头开始新的 一轮循环,这时就要用到循环控制语句 break、continue和pass语句。
30
第5章
循环结构程序设计
(1) break语句
一般格式 break 功能
371printdddijk40728python语言程序设计第5章循环结构程序设计第5章循环结构程序设计循环结构程序设计51while语句当型循环52for语句结构53循环的嵌套54循环控制语句55循环结构程序举例2第5章循环结构程序设计循环结构的基本类型exptaf

c#试题 (复习)

c#试题 (复习)

选择题:(2X15=30 分,非单选题)非单选题)一、选择题:1、C#语言源代码文件的后缀名为:DA、.C#B、.CCC、.CSPD、.CS2、C#中导入某一个命名空间的关键字是:AA、usingB、useC、importD、include3、方法中的值参数是_____A_的参数。

A、按值传递B、按引用传递C、按地址传递D、不传递任何值4、以下标识符中,错误的是:CA、_b39B、x345C、6_321D、nAverage5、结构化程序设计的3 种结构是:DA、顺序结构、if 结构、for 结构B、if 结构、if…else 结构、else if 结构C、while 结构、do…while 结构、foreach 结构D、顺序结构、分支结构、循环结构6、while 语句循环结构和do…while 语句循环区别的区别在于:DA、while 语句的执行效率较高B、do…while 语句编写程序较复杂C、无论条件是否成立,while 语句都要执行一次循环体D、do…while 循环是先执行循环体,后判断条件表达式是否成立,而while 语句是先判断条件表达式,再决定是否执行循环体7、下面有关break、continue 和goto 语句描述正确的是:DA、break 语句和continue 语句都是用于中止当前整个循环的B、使用break 语句可以一次跳出多重循环C、使用goto 语句可以方便地跳出多重循环,因而编程时应尽可能多地使用goto 语句D、goto 语句必须和标识符配合使用,break 和continue 语句则不然8、下面是几条定义初始化一维数组的语句,指出其中正确的:CA、int arr1[]={6,5,1,2,3};B、int[] arr2=new int[];C、int[] arr3=new int[] {6,5,1,2,3};D、int[] arr4;arr4={6,5,1,2,3};9、下面有关枚举成员赋值说法正确的是:BA、在定义枚举类型时,至少要为其中的一个枚举成员赋一个常量值B、在定义枚举类型时,直接为某个枚举成员赋值,则其他枚举成员依次取值C、在把一个枚举成员的值赋给另一个枚举成员时,可以不考虑它们在代码中出现的顺序D、在定义的一个枚举类型中,任何两个枚举成员都不能具有相同的常量值10、下面有关静态方法的描述中,错误的是:ABDA、静态方法属于类,不属于实例B、静态方法可以直接用类名调用C、静态方法中,可以访问非静态的局部变量D、静态方法中,可以访问静态的变量11、在类的外部可以被访问的成员是:AA、public 成员B、private 成员C、protected 成员D、protected internal 成员12、下面有关析构函数的说法中,不正确的是:CA、析构函数中不能包含return 语句B、一个类中只能有一个析构函数C、用户可以定义有参析构函数D、析构函数在对象被撤销时,被自动调用13、控件不可用的属性是以下哪一个BA、AllowDropB、EnabledC、BoundsD、Visible14、用于设置时间的控件是以下哪一个?AA、TimerB、ComboBoxC、DateTimeD、DateTimePicker15、以下哪一个命名空间是在进行Sql Server 数据库访问时必须加载的? BA、System.Data.OdbcB、System.Data.SqlClientC、System.Data.OleDbD、System.Data.SqlTypes1、C#中可以把任何类型的值赋给的object 类型变量,当值类型赋给object 类型变量时,系统要进行___装箱__操作;而将object 类型变量赋给一个值类型变量,系统要进行___拆箱_ 操作,并且要求必须加__强制__类型转换。

For循环结构

For循环结构

for循环结构
for语句属于控制结构中的循环结构。

是控制结构中非常重要的一种结构。

当程序中需要按照一定条件重复执行一些语句时使用循环结构。

例如实现1加到100的和的程序,需要重复计算相加功能,这样的程序就适合用循环结构来实现。

而for常用于设计已知循环次数的程序。

for 循环的语法:
程序进行循环后首先执行语句1为循环变量赋初值,然后执行语句2是否符合循环条件,如果符合,执行循环体中的代码块并执行语句3,否则退出循环。

示例:
for…in
for…in循环结构又称为遍历循环结构。

常用于数据集合的循环比如数组。

此结构不需要指定循环次数,会自动从第一个元素循环遍历到最后一个元素。

例如:
建议练习:
使用for循环实现1加到100的和,并输出结果。

使用for…in循环实现数组遍历。

未来教育·(2016年版)全国计算机等级考试教程:二级C语言程序设计

未来教育·(2016年版)全国计算机等级考试教程:二级C语言程序设计

C
2.6 赋值表达式
2 程序设计的初步知识
01
2.7.1 自加、 自减运算符
02
2.7.2 逗号运 算符
2.7 自加、自减和逗号运算 符
04 3 顺序结构
3.1 赋值 语句
3.2 数据 输出
3.3 数据 输入
课后习题
3 顺序结构
3.2.1 printf()函数的一般调用形式 3.2.2 printf()函数的输出格式说明 3.3.1 scanf()函数的一般调用形式 3.3.2 scanf()函数的输入格式说明
07 6 字符型数据
6.1.1 字符 型常量
6.1.2 转义 字符
6.1.3 字符 串常量
6 字符型数据
6.3.1 调用 printf和
scanf函数输 出和输入字符 6.3.2 调用
putchar和 getchar函数 输出和输入字

6.1 字符 常量
6.2 字符 变量
6.3 字符的 输入和输出
8.5 函数之间地址值的 传递
8.2 指针变量的定义和 指针变量的类型
8.4 对指针变量的操作
课后习题
8.3.1 给指针变量赋地址
8指针
8.3 给指针变量赋值
8.3.2 给指针变量赋“空” 值
01
8.4.1 通过指 针来引用一个存
储单元
02
8.4.2 移动指 针
03
8.4.3 移动比 较
8指针
8.4 对指针变量的操作
12 C语言 中用户标 识符的作 用域和存 储类
12.3 全局变量及其作用域和 生存期

01 12.3.1 全局变量的作用域和生 存期
02 12.3.2 在同一编译单位内用 extern说明符扩展全局变量的作 用域

C语言判断题

C语言判断题

C语言判断题1.每一个C语言程序都必须有一个main函数。

答案: 正确2.C语言程序的三种基本结构是顺序结构、选择结构和递归结构。

答案: 错误,C语言程序的三种基本结构是顺序结构、选择结构和循环结构。

3.在程序设计中,经常用选择(又称分支)、循环和函数3种控制结构。

答案: 错误,程序设计中经常用选择(又称分支)、循环和函数3种控制结构。

4.用C语言编写的源程序必须经过编译连接后生成可执行程序,才能运行。

答案: 正确5.C程序主函数中的一个变量可以被定义为两个或多个不同的类型。

答案: 错误,C程序主函数中的一个变量只能被定义为一种类型。

6.在C源程序中,/*与*/之间的注释信息也被编译,但对程序运行结果不发生影响。

答案: 错误,/*与*/之间的注释信息在编译时会被忽略,不会被编译。

7.C程序是由函数构成的,每一个函数完成相对独立的功能。

答案: 正确8.一个C语言程序中,有且只能有一个main函数。

答案: 正确9.C程序总是从程序的第一条语句开始执行。

答案: 错误,C程序总是从main函数开始执行。

10.C语言标识符由字母、数字和下划线组成,其中第一个字符必须是字母。

答案: 错误,C语言标识符由字母、数字和下划线组成,其中第一个字符可以是字母或下划线。

11.C语言规定:在一个源程序中,main函数的位置必须在最开始。

答案: 错误,C语言规定:在一个源程序中,main函数可以出现在任意位置。

12.C语言程序的基本单位是语句。

答案: 错误,C语言程序的基本单位是函数。

13.对于C程序中的逻辑错误,编译器是可以发现的。

答案: 错误,编译器只能检查语法错误,不能检查逻辑错误。

14.一系列计算机指令的有序组合就构成了程序。

答案: 正确15.C程序由函数所组成。

答案: 正确16.在C程序中,每行只能写一条语句。

答案: 错误,在C程序中,一行可以写多条语句,但是每条语句必须以分号结束。

17.C程序中能直接让机器执行的文件是编辑后的.c源文件。

FOR嵌套循环ppt课件

FOR嵌套循环ppt课件

13
f1--第一个数 f2--第二个数 f3--第三个数 f1=1; f2=1; f3=f1+f2;
以后只要改变f1,f2的值,即可求出下一个数. f1=f2;f2=f3; f3=f1+f2;
递推
for 语句
14
参考程序:
void main() {long f1=1, f2=1, f3; int k;
循环嵌套结构
1
例1 显示右侧图形
main() { int i;
for(i=1;i<=5;i++) printf("* "); getch();
}
*****
2
例2 显示右侧图形
main() { int i,j;
for(i=1;i<=4;i++) {for(j=1;j<=5;j++) printf("* "); printf("\n"); }
{int num=123,x,n;
printf("hint:0<number<1000\n"); /*给出数据范围的提示信息*/
for(n=1;n<=10;n++)
{printf("guess:");
scanf("%d",&x);
if(x==num) {printf("Win!\n");break;}
5
例5 显示右侧图形
main() { int i,j;
for(i=1;i<=4;i++) {for(j=1;j<=i;j++) printf("%d ",j); printf("\n\n"); }

C语言循环结构

C语言循环结构
3
例5.1编写程序,求1+2+3+···+100的值 5.1编写程序,求1+2+3+···+100的值 main( ) { int i,sum; i=1; sum=0; while (i<=100) { sum=sum +i; i++;} printf(“ printf(“ sum=%d \n” ,sum); }
15
5-2有以下程序 main() { int i, s=0; for (i=0;i<10;i+=2) s+=i+1; printf (“%d\n”,s); (“%d\ } 程序执行后的结果是 A.自然数1-9的累加和 A.自然数1 B.自然数1-10和的累加 B.自然数1 10和的累加 C.自然数1-9中奇数之和 C.自然数1 D.自然数1-10中偶数之和 D.自然数1 10中偶数之和
16
5-3要求以下程序的功能是计算: s=1+1/2+1/3+···+1/10。 s=1+1/2+1/3+···+1/10。 main() { int n; float s; s=1.0; for (n=10; n>1; n--) n--) s=s+1/n; printf(“%6.4f\ printf(“%6.4f\n”,s); } 程序运行后出现结果错误,导致错误结果的程序 行是 A. s=1.0; B. for (n=10; n>1; n--) n--) C. s=s+1/n; D. printf(“%6.4f\n”,s); pr循环结构的嵌套 在一个循环体内又完整地包含了另一个循环, 称为循环嵌套。前面介绍的三种类型的循环都可 以互相嵌套,循环的嵌套可以多层,但每一层循 环在逻辑上必须是完整的。 例5.5使用双层for循环打印下面的图形 5.5使用双层for循环打印下面的图形 **** **** ****

大学C语言期末考试题库试题及答案汇总-填空 复习题

大学C语言期末考试题库试题及答案汇总-填空 复习题

大学C语言期末考试题库试题及答案汇总-填空复习题1.以下程序的输出结果是______。

main(){ int a=0;a+=(a=8);printf("%d\n",a);}答案:16知识点:赋值表达式2.若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是______。

c=(a-=(b-5));c=(a % 11)+(b=3);答案:3知识点:赋值表达式3.以下程序运行后的了输出结果是______。

main(){ int a=1,b=2,c=3;if(c=a) printf("%d\n",c);else printf("%d\n",b);}答案:1知识点:赋值表达式4.若有语句int i=-19, j=i%4;printf("%d\n",j);则输出结果是______。

答案:-3知识点:算术表达式7.设y 是int型变量,请写出判断y为奇数的关系表达式______。

答案:y%2知识点:算术表达式12.下面程序的输出是______。

main(){ int x=2;while(x--);printf("%d\n", x);}答案:-1知识点:自加、自减运算符和逗号运算符19.以下程序的输出结果是______。

void fun(){ static int a=0;a+=2; printf("%d",a);}main(){ int cc;for(cc=1;cc<4;cc++) fun();printf("\n")}答案:246知识点:函数的调用21.若有以下程序int f(int x,int y){ return(y-x)*x; }main(){ int a=3,b=4,c=5,d;d=f(f(3,4),f(3,5));printf("%d\n",d);}执行后输出结果是______。

计算机等级考试 循环结构

计算机等级考试 循环结构
#include <stdio.h>
Main()
{
Float n,t,pi; /*存放分母,每次累加不是一个整数,而是实数,因此要用float定义*/
Int s;
T=1.0;n=1.0;pi=0;
S=1;
While(fabs(t)>=1e-4)
{
Pi=pi+t;
N=n+2;
S=-s;
T=s/n;
}
Pi=4*pi;
6)表达式1和表达式3可以是一个简单的表达式,也可以是一个逗号表达式,表达式1和表达式3可以是与循环无关的任意表达式。
i=1,sum=0;
for(p=0;i<=100;p=p+i)
{sum+=i;i++}
7)表达式可以是关系、逻辑、数值、字符表达式。
关系:for(i=1;i<=100;i++)
逻辑:for(i=3,j=4;i&&j;i--,j--)
1)while和do-while语句在循环体之前赋值。
For在表达式(也相当于在循环体前赋初值)
2)while和do-while使循环趋于结束的语句位于循环体内,而for循环位于表达式3(也可位于循环体内)
3、共同点:
1)三个循环体解决同一个问题时,条件相同。
2)三个循环都必须有使循环趋于结束的语句,否则为死循环。
printf(“n!=%lf\n”,s);
}
四、三种循环结构的区别和特点。
1、while和do-while的区别
1)while当型循环:先判断,后执行
do-while直到型循环:先执行,后判断
2)while最少执行次数0

JAVA语言程序设计考试试题及参考答案

JAVA语言程序设计考试试题及参考答案

JAVA语言程序设计考试试题及参考答案一、单选题:(每题1分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。

1.下列语句序列执行后,k 的值是( B )。

int m=3, n=6, k=0;while( (m++) < ( -- n) ) ++k;A) 0 B) 1 C) 2 D) 32.设 i、j 为int型变量名,a 为int型数组名,以下选项中,正确的赋值语句是( B )。

A) i = i + 2 B) a[0] = 7;C) i++ - --j; D) a(0) = 66;3.Java语言的类间的继承关系是( B )。

A) 多重的 B) 单重的 C) 线程的 D) 不能继承4.设有定义 int i = 6 ;,则执行以下语句后,i 的值为( C )。

i += i - 1;A) 10 B) 121 C) 11 D) 1005.下列选项中,用于在定义子类时声明父类名的关键字是( C )。

A)interface B) package C) extends D) class6.若已定义 byte[ ] x= {11,22,33,-66} ;其中0≤k≤3,则对x数组元素错误的引用是( C )。

A) x[5-3] B) x[k] C) x[k+5] D) x[0]7.下列语句序列执行后,ch1 的值是( B )。

char ch1='A',ch2='W';if(ch1 + 2 < ch2 ) ++ch1;A) 'A' B) 'B' C) 'C' D) B8.下列语句序列执行后,i 的值是( D )。

int i=8, j=16;if( i-1 > j ) i--; else j--;A) 15 B) 16 C) 7 D) 89.下列语句序列执行后,k 的值是( C )。

C语言程序设计教程(第4版)_第5章_循环结构

C语言程序设计教程(第4版)_第5章_循环结构

5.1 for语句
程序流程图: 程序:example5_2.c 思考: ①该算法的缺点; ②设计更好的算法。 ③假如输入的数可以为任意整数, 如果a≤b,计算 i ; 如果a>b,则计算 i 。 请设计算法并编写程序验证。
i b ia ia i b
5.1 for语句
例3:编写程序,从键盘输入m和n的值,用符号“*”在屏幕 上打印出如下所示具有m行n列的矩形图案。 ******* ******* ******* ******* ******* ******* ******* ******* 分析: ①图案有规律,共有m行,每行有n个*号。 ②可采用循环嵌套的方式: 第1层(外层)控制行数,用i来表示,输出m行“*” ; 第2层(内层)控制列数,用j来表示,输出n列“*” 。
100
5.1 for语句
for语句所具有的特性。 1.<初始表达式>可以省略,但须保留分号(;),同时在for之 前必须给循环控制变量赋值,形式为: <初始表达式>; for(;<条件表达式>;<循环表达式>) <循环体语句> 2.<条件表达式>一般不可省略,否则为无限循环。 例如: for(i=1;; i++) sum =sum+i; 相当于条件总为真,程序会一直不停地执行直到“数据溢出”。
5.2 while语句
例7:编写程序,统计从键盘输入的字 符个数(回车换行符也是一个字符) ,当遇到结束标志时程序结束。 分析:关键是循环计数。
开始 count=0
(ch=getchar())!=EOF
F
设置一个累加器count(初值为0),
每次从键盘输入一个字符,只要该字 符的值不等于结束标志,累加器的值 就增1:count=count+1; 算法流程图如图所示。 程序: example5_7.c

第4章 循环结构(C++版)_第四节 循环嵌套(新)02

第4章  循环结构(C++版)_第四节  循环嵌套(新)02

第四节 循环嵌套
同时也可以采用一个for循环来求解,表面上看好像优于三重循环,实际上却比 上面的程序效率低,请同学们自己分析。 程序如下:
#include<iostream> #include<iomanip> using namespace std; int main() { int a,b,c; for (int m=100; m<=999; ++m) { a=m/100; b=(m%100)/10; c=m%10; if (a*a*a+b*b*b+c*c*c==m) cout<<setw(6)<<m; } return 0; }
【说明】 这里用了一个三层循环的程序解决问题。当x取得一个数值时, for的y循环体都要执行遍y的所有取值;当y取得一个数值时,for的z 循环体都要执行遍z的所有取值;对于z的每一个取值,if语句都要执 行一次。
不难算法,在程序的执行过程中,作为最内层循环体的if语句, 将被执行:(1+100/5)*(1+100/3)*(1+3*100)=214914次。而观察程序 的运行结果,问题的解远远小于这个数字,只有4组解。如何减少循 环次数呢?
第四节 循环嵌套
例4.15 求100-999中的水仙花数。若三位数ABC,ABC=A3+B3+C3,则称ABC为水 仙花数。 例如153,13+53+33=1+125+27=153,则153是水仙花数。 【分析】 根据题意,采用三重循环来求解。由于循环次数一定,用for循环最为 简单。程序如下: #include<iostream> #include<iomanip> //调用setw函数需注明使用该库 using namespace std; int main() { for (int a=1; a<=9; ++a) for (int b=0; b<=9; ++b) for (int c=0; c<=9; ++c) { if ( a*a*a+b*b*b+c*c*c==a*100+b*10+c ) cout<<setw(6)<<a*100+b*10+c; //setw函数控制输出场宽 } return 0; } 运行结果: 153 370 371 407
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(3)如果省略表达式3,即: for(表达式1;表达式2;) 循环语句; 此时,也将产生一个无穷循环。因此,程序设计者应另外设法保证循环 能正常结束,可以将循环变量的修改部分(即表达式3)放在循环语句 中控制。例如: for(i=1;i<=100;) { sum+=i; i++; } 上述for语句中没有表达式3,而是将表达式3(i++)放在循环语句中, 作用相同,都能使用循环正常结束。注意表达式2后面的分号不能省略。 (4)也可以同时省略表达式1和表达式3,即: for(;表达式2;) 循环语句; 也即省略了循环的初值和循环变量的修改部分,此时完全等价于while 语句。
(5)同时省略表达式1、表达式2和表达式3,即: for(;;) 循环语句; 相当于赋循环变量的初值,循环控制条件始终为真,不修 改循环变量,故循环将无终止地进行下去。 (6)在for语句中,表达式1和表达式3不仅可以使用简单表 达式,也可以使用逗号表达式,即包含一个以上的简单表 达式,中间用逗号间隔。在逗号表达式内按自左至右求解, 整个表达式的值为其中最右边的表达式的值。例如: for(i=1;i<=100;i++,sum=sum+i) 相当于 for(i=1;i<=100;i++) sum=sum+i; (7)在for语句中,表达式一般为关系表达式或逻辑表达式, 但也可以是其他表达式(如字符表达式、数值表达式)。
可以看出,此例的结果前两例是完全相同的。显 然,用for语句简单、方便。 ※重点提示:for语句中的表达式可以部分或全部 省略,但两个分号不能省略,且三个表达式均省略 时,循环将会无限制执行,而形成死循环。因此, 编写程序时,在for后面的一对圆括号内,应只含有 能对循环进行控制的表达式,其它的操作尽量放在 循环体内完成。
本次课要点:
5.3 for语句和用for语句构成的循环结构
ห้องสมุดไป่ตู้
5.3 for语句和用for语句构成的循环结构 5.3.1 for语句构成的循环结构 for语句的一般形式为: for(表达式1;表达式2;表达式3) 循环语句; 以下是几点说明: 1.表达式1一般为赋值表达式,用于进入循环之前 给循环变量赋初值。 2.表达式2一般为关系表达式或逻辑表达式,用于 执行循环的条件判定,它与while、do while循环 中的表达式作用完全相同。 3.表达式3一般为赋值表达式或自增、自减表达式, 用于修改循环变量的值。
5.3.2 for循环执行过程
for语句的执行过程是: ① 先计算表达式1的值。 ② 再计算表达式2的值,若其值为真,则 执行循环体一次;否则跳转第⑤步。 ③ 然后计算表达式3的值。 ④ 转回上面第②步。 ⑤ 结束循环,执行for语句下面一个语句。
图5.2 for语句的执行流程图
※重点提示:在整个for语句 中,表达式1只计算一次, 表达式2和表达式3则可能 计算多次。循环体可能多 次执行,也可能一次都不 执行。
for循环结构是几乎所有高级语言都提供的循 环控制结构。但C语言中的for语句使用最为 灵活,它不仅可以用于循环次数已经确定 的情况,而且可以用于循环次数不确定而 只给出循环结束条件的情况,因而它完全 可以代替while语句和do while语句。
※重点提示:表达式1、表达式2、表达式3都 必须为for语句规定的合法的表达式。
5.3.3 有关for语句的说明 (1)for语句的一般形式中的“表达式1”可以省略,即: for(;表达式2;表达式3) 循环语句; 但注意省略表达式1时,其后的分号不能省略。此时,应在 for语句之前给循环变量赋初值。 (2)如果省略表达式2,即: for(表达式1;;表达式3) 循环语句; 则表示表达式2的值始终为真,循环将无终止地进行下去。 例如: for(i=1;;i++) printf("%d",i); 将无限循环输出1,2,3,4,5,6,……
(8)for语句的循环语句可以是空语句。空语句用来实现延 时,即在程序执行中等待一定的时间。如下为延时程序的 例子: for(i=1;i<=1000;i++); 注意以上语句最后的分号不能省略,它代表一个空语句。 例如:用for循环结构来计算1+2+3+…+100。 main() { int i,sum=0; for(i=1;i<=100;i++) sum+=i; printf("%d\n",sum); } 程序运行结果为: 5050
相关文档
最新文档