for循环
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int num=0; for(;num <= 10 ;num ++) { printf("%d\n",num*2); }
int a=0,n; printf("\n 输入n的值: "); 的 scanf("%d",&n); for(;n>0;a++,n--) printf("%d ",a*2);
10
省略表达式2
逗号运算符
for语句中的三个表达式都可以是逗号表达式 逗号表达式就是通过“,”运算符隔开的多个表达式组 成的表达式 逗号表达式从左往右计算。逗号运算符在 C 语言运算 符中的优先级最低
for(i = 0 , j = max ; i <=max ; i++, j--) printf(“\n%d + %d = %d”,i, j, i + j);
7
for 请输入一个值 循环示例2 #include <stdio.h> 根据这个值可以输出以下加法表:5 : void main() 0+5=5 1+4=5 { 2+3=5 int i,j,max; 3+2=5 printf("请输入一个值 + 1 = 5 4 \n"); 初始化语 5+0=5 printf(" printf("根据这个值可以输出以下加法表:"); "); 句只执行 一次 scanf("%d",&max); for(i = 0,j = max ; i <=max ; i++,j--) printf("\n %d + %d = %d",i,j,i + j); printf("\n"); } 循环执行max次
即不判断循环条件,也就是认为表达式2始终为真, 这时应在循环体内设法结束循环,否则将成为死循环
for(num=1;;num++) { ... }
11
省略表达式3
即省去修改循环变量的值,但此时应在循环体内设法结 束循环
for(i=1;i<=100;) { sum=sum+1; i++; }
12
省略三个表达式
8
for 循环的表达式
for 循环中有三个表达式 for 语句中的各个表达式都可以省略 分号分隔符不能省略
可省略
for(<初始化循环变量> ;<循环条件> ; <修改循环变量的值>) { 不能省略 <循环体语句>; }
9
省略表达式1
相当于省去了为循环变量赋初值,此时应在for语句之前 给循环变量赋初值
第七课 循环结构
回顾
循环结构的特点是,在给定条件成立时,重复执 行某程序段,直到条件不成立为止 while 循环用于在给定条件为真的情况下重复执 行一组操作,while循环先判断后执行 do-while do-while循环先执行后判断,因此循环将至少执 行一次 在循环中,需要修改循环变量的值以改变循环条 件,否则有可能形成死循环 循环嵌套必须将内层循环完整的包含在外层循环 中
循环的嵌套
注意:
while、do-while、for循环语句可以并列,也可 以相互嵌套,但要层次清楚,不能出现交叉。 多重循环程序执行时,外层循环每执行一次,内 层循环都需要循环执行多次。 例如:
for(a=1;a<=10;a++) for(a来自百度文库1;a<=10;a++) { for (b=0;b<=5;b++) (b=0;b<=5 …… }
continue语句及应用
中断循环体的本次执行(即跳过循环体中尚未执 行的语句),立即开始执行下一次循环。
while语句 while语句
循环条件
Y N
do-while语句 do-while语句 … continue; … 循环条件
Y N
for语句 for语句 计算表达式1 计算表达式1
表达式2? 表达式2?
例:
break 语句示例
内存 #include<stdio.h> ch c void main() 问题描述: { 0 H _ 5 1 统计从键盘输入的若干个字符中有效字符的个数,以换行 int c=0,ch; 符作为输入结束。有效字符是指第一个空格符前面的字符, printf("\n 请输入一行字符:"); 若输入字符中没有空格符,则有效字符为除了换行符之外 while((ch=getchar())!='\n') 的所有字符。 { if(ch==' ') break; c++; 循环执行 5 次 } printf("\n 共有 %d 个有效字符。\n",c); } 请输入一行字符:Hello world
void main() { int i,j,k; 问题描述: 控制打印的行数 for(i=1;i<=4;i++) { 用“*”输出一个菱形图案,图案如下: for(j=1;j<=4-i;j++) 控制每行打印的空格数 * printf(" "); for(k=1;k<=2*i-1;k++) 控制每行打印的*号数 printf("*"); * * * printf("\n"); ***** } 输出: *控制打印的行数 ****** for(i=1;i<=3;i++) * { * 控制每行打印的空格数 * * for(j=1;j<=i;j++) * * * * * printf(" "); ***** *** for(k=1;k<=7-2*i;k++) 控制每行打印的*号数 * * * **** printf("*"); * ***** printf("\n"); *** } } 30 *
19 共有 5 个 有效字符
练习4:
4、输入一个数判断它是否一个质数(只能被1和他 本身整除的数) //提示:查找在2到比这个数小1的数之间是否存在 能被他整除的数。
continue 语句 2-1
continue 语句只能用在循环里 continue 语句的作用是跳过循环体中剩余的语句 而执行下一次循环 对于while和do-while循环,continue 语句执行之 后的动作是条件判断;对于for循环,随后的动作 是变量更新
跳出 do-while 循环
do { if (x == 10) break; }while (x< 15);
17
#include<stdio.h> void main() { for( ; ; ) { for( ; ; ) { if(x>y) break; 语句a; } 语句 b; break; } 语句c; }
25
Continue练习
把100~200之间能被7整除的数,以十个数为一 行的形式输出,最后输出一共有多少个这样的数 。
如果循环语句的循环体内又包含了另一条循环语 句,则称为循环的嵌套 例如: #include <stdio.h> 运行jc5_a 运行 main( ) { int i, j; 外循环语句 for ( i=1; i<10; i++ ) 内循环语句 for ( j=1; j<=i; j++ ) printf ((j==i)?"%4d\n":"%4d",i*j); }
请输入任意一个正整数:5 5的阶乘 = 120
5
练习1
用for循环编写程序,求n个自然数的和 即: s=1+2+3+ … +n n的值是从键盘随意输入的。
#include <stdio.h> void main() { int num, c, f=1; printf("\n 请输入任意一个正整数:"); scanf("%d",&num); for(c = 1; c <=num; c++) f=f*c; printf("\n %d的阶乘 = %d\n",num,f); }
2
目标
熟练使用for循环 理解 break 和 continue 语句的用法 熟练使用嵌套循环
3
for 循环
for 循环的一般语法: for( 表达式1 ; 表达式2 ; 表达式3 ) { 1 2 4 语句; 3 }
counter = 0; counter == 10; counter ++; 工作原理 inum = 1; inum < 25; inum = inum + 1; 1、计算表达式1的值,通常为循环变量赋初值; cnt = 100; cnt >0 cnt-2、计算表达式2的值,即判断循环条件是否为真,若值为真则执行
循环体一次, 否则跳出循环; 3、计算表达式3的值,这里通常写更新循环变量的赋值表达式,然 分号用于分隔 for 循环的 后转回第2步重复执行; 三个表达式
4
for 循环示例1 内存
#include <stdio.h> num c void main() 6 2 5 1 { f int num, c, f=1; 120 1 printf("\n 请输入任意一个正整数:"); scanf("%d",&num); for(c = 1; c <=num; c++) f=f*c; printf("\n %d的阶乘 = %d\n",num,f); } 循环执行五次
21
continue 语句 2-2
while(…) { …… …… break; …… …… }
跳 出 整 个 循 环
while(…) { …… …… continue; …… …… }
续 下 一 次 循 环
继
继 续 下 一 次 循 环
22
for(表1;表2;表3) 表 表 { …… continue; …… …… }
N
… continue; …
… continue; … 计算表达式3 计算表达式3 后续语句
Y
后续语句
后续语句
例如:
⑴ int x,n=0,s=0;
while (n<10) { scanf("%d",&x); if (x<0) continue; s+=x; n++; };
⑵ int x,n=0,s=0; do { scanf("%d",&x); if (x<0) continue; s+=x; n++; } while (n<10);
16
break 语句 2-2
跳出 for 循环
for( ; ; ) { printf("这将一直进行下去 这将一直进行下去"); 这将一直进行下去 i = getchar(); if(i == 'X' || i == 'x') break; }
跳出 while 循环
while(1) { if(x == 10) break; }
即不为循环变量赋初值,不设置循环条件(认为表达式2 为真值),不修改循环变量的值,无终止地执行循环体 。此时应在循环体内设法结束循环,否则会成为死循环
for( ; ; ) { printf("这将一直进行下去 这将一直进行下去"); 这将一直进行下去 i = getchar(); if(i == 'X' || i == 'x') break; }
⑶ for (n=0,s=0; n<10; n++) { scanf("%d",&x); if (x<0) continue; s+=x; }
continue 语句示例
内存 #include<stdio.h> i sum void main() { 1 4570 0 null 101 13 1 78 int i,sum = 0; 问题描述: for(i=1; i<=100;i++) 求整数1~100的累加值,但要求跳过所有个位为3的数。 { if( i % 10 == 3) continue; 循环执行到 i = 13 sum += i; 循环执行到 i = 101 } printf("sum = %d \n",sum); } 输出: sum = 4570
13
练习2:
从0开始,输出n个连续的偶数 。
练习3:
/*求斐波纳契数列前20个数。斐波纳契数列有如 下特点:第1,2两个数分别为1,1。从第3个数 开始,每个数是其前两个数之和。即: 1, 1, 2, 3, 5, 8, 13, 21...*/
break 语句 2-1
break语句可以改变程序的控制流 break语句用于do-while、while、for循环中时,可使程 序终止循环而执行循环后面的语句 break语句通常在循环中与条件语句一起使用。若条件 值为真,将跳出循环,控制流转向循环后面的语句 如 果 已 执 行 break 语 句 , 就 不 会 执 行 循 环 体 中 位 于 break 语句后的语句 在多层循环中,一个break语句只向外跳一层
外循环执行了 次 内循环执行 外循环执行了10次,内循环执行6次 执行了10 执行6 循环正常结束时,内循环执行了10×6=60次 循环正常结束时,内循环执行了10×6=60次
编程序,输出以下图形
使用双重循环 使用双重循环实现 双重循环实现 思路: 思路: • 一共有4 行,每行由空格和星号组成:空格数 一共有4 每行由空格和星号组成: 按行增加, 按行增加,星号按行减少 • 变量 i 控制输出行数, 从1变化到4 控制输出行数, 变化到4 • 变量 j 控制输出每行的空格和星号: 控制输出每行的空格和星号: – j 从1变化到 i-1,每次输出一个空格 – j 从1变化到 8-2*i+1,每次输出一个星号