for循环笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
while(表达式)
循环体
求和
1.找通项公式
2.求和公式
1 2 3 4 5
sum = 0;
i = 1;
while(i<6)
{sum = sum + 每一项;
计算下一项(循环变量有关系);
}
1+1
t=1;
i=1;
sum = 0;
while(i<=n)
{
sum = sum + t;
i++;
t = t*(1/i);
}
死循环的处理:
1+2+3+4+5
i=1; 循环变量初始化
sum = 0;
while(i<=5) 循环条件 非0
{
sum = sum + i;
i++; 循环变量增值
}
死循环出现: 循环条件恒等于逻辑真(非0)
49天
#include "stdio.h"
void main()
{
int i=1,sum=0;
while(i<=5)
{
sum = sum + i;
i--;
printf("i=%d,sum=%d\n",i,sum);
}
}
解决方法:
1)压快捷键可以跳出死循环
ctrl + pause break
2)调出任务管理器,然后选则程序,结束任务
解决死循环的思路:
想方设法让循环条件有机会得到结果逻辑假(0情况)
通常出现的问题:(循环变量增值和循环条件之间的关系)
第四章:知识结构
1.基本循环控制结构
while()
for()
do... while()
2.循环嵌套
3.学习的算法
A)求和
B)素数
for的学习
2.for语句来控制循环(for循环)
基本结构:
for(表达式1;表达式2;表达式3)
{语句1;语句2...语句n;}
<=>
表达式1;
while(表达式2)
{语句1;语句2....语句n; 表达式3}
执行过程:
1)先执行表达式1
2)执行表达式2(非0,0)
A)非0 执行循环体 -->表达式3--->计算表达式2
B) 0 结束循环
1+2+3+4+5
sum=0
1)sum = sum + i (sum += 1)
2)sum = sum + 2
3)sum = sum + 3
4)sum = sum + 4
5)sum = sum + 5
6)sum的值
sum = 0
i = 1
1)sum = sum + i
i++;
2)sum = sum + i
i++
3)sum = sum + i
i++
4)sum = sum + i
i++
5)sum = sum + i
i++
6)sum值
C语言表达:
sum = 0
i = 1 循环变量
while(i<=5) 循环条件
{sum = sum + i;
i++; 循环增值(步长)
}
6)sum的值
理解for()
for(循环变量初始化;循环条件;循环变量增值)
{循环主体}
sum = 0;
for(i=1;i<=5;i++)
{sum = sum + i;}
注意: 表达式1 等价于 循环变量初始化,在程序执行
过程中,当进入循环时执行一次
表达式2 等价于循环条件
printf("sum=%d\n",sum);
1)i=1 1<=5
sum = 0 + 1
i=2
2) 2<=5
sum = 1 + 2
i = 3
3)3<=5
sum = 3+3
i = 4
4)4<=5
sum = 6+4
i=5
5)5<=5
sum = 10 + 5
i = 6
6) 6<=5 0
7) sum 的值
2 4 6 8 10 + 100
5!
#include "stdio.h"
void main()
{
int i,sum;
sum = 0;
for(i=2;i<=100;i+= 2)
sum = sum + i;
printf("sum = %d\n",sum);
}
1--20
printf("%4d",i);
#include "stdio.h"
void main()
{
int i;
for(i=1;i<=20;i++)
printf("%4d",i);
}
1)i=1;1<20
shu chu 1
i = 2
2)2<=20
sum chu 2
i = 3
3)3<=20
shu chu 3
i = 4
4)4<=20
1--20
#include "stdio.h"
void main()
{
int i,sum=0,k=1;
for(i=1;i<=100;i++)
{sum = sum + i*k;
k = -k;
}
}
1)i=1 1<=100
sum = 0+1*1
k = -1
i = 2
2)2<=100
sum = 1+2*(-1)
k=-(-1)
i = 3
3)3<=100
sum = 1+(-2)+3*1
k = -1
i = 4
4) ...
素数(质数):公约数只能是1和它本身
1: 不是素数
2: 是素数
20(1,20)
20%1 == 0
20%20 == 0
2 3 4 5 6 7 8 9---19
n判断n是不是素数
n%2!=0
n%3!=0
n%4!=0
...
n%(n-1)!=0
for的进一不讨论:
1.可以将表达式1省略,表达式1后面的分号不能省略
解决:可以在for结构之前先执行表达式1
表达式1
for(;表达式2;表达式3)
#include "stdio.h"
void main()
{
int i;
i=1;
for(;i<=20;i++)
printf("%4d",i);
}
2.可以将表达式2省略(循环将不会结束(死循环情况))
解决: break:可以使用在switch语句体和循环体
switch语句体出现: 功能:跳出它所在的siwtch体( 结束switch体的执行)
循环体出现: 跳出它所在的循环体(结束循环)
1--20
#include "stdio.h"
void main()
{
int i;
for(i=1;;i++)
{
if(i>10)
break;
printf("%4d",i);
}
}
3.表达式3可以省略(出现死循环)
解决:将表达式3作为语句写在循环体最后一个部分(表达式3所构成的语句属于循环体)
#include "stdio.h"
void main()
{
int i,count=0;
system("cls");
i=1;
for(i=1;i<=20;)
{printf("%4d",i);
i++;
count++;
/*if(count==5) {printf("\n");count=0;}*/
if(count%5==0) printf("\n");
}
}
4.将for三个表达式都省略(分号不能省略)
for(;;)
#include "stdio.h"
void main()
{
int i;
i=1;
for(;;)
{
if(i>20) break;
printf("%4d",i);
i++;
}
}
判断17是否是素数:
1.定义法
从2开始到16之间,将每一个数取出来和17做求余数运算
只要其中有一个数被17整数,说明不是素数,反之
#include "stdio.h"
void main()
{
int i,n=17;
for(i=2;i<17;i++)
{
if(n%i==0)
break;
}
if(i==17)
printf("%d shi su shu!\n",n);
else
printf("%d bu shi su shu!\n",n);
}
void main()
{
int i,n=17;
for(i=2;i<=17;i++)
{
if(n%i==0)
break;
}
if(i>=17)
printf("%d shi su shu!\n",n);
else
printf("%d bu shi su shu!\n",n);
}
17 (2 3 4 5 6 7 8 9 10 11 12 13 14 15 16)