while
1.执行顺序
格式:
while(表达式)
语句;
2.与for的相互比较
for和while可以相互转换
但是for的逻辑性更强,更不容易出错,推荐多使用for
3.举例
从键盘输入一个数字,如果该数字是回文数,则返回yes,否则返回no
回文数:正着写和倒着写都一样
比如:121 12321 都是回文数
1.m=1234 成立
sum=0*10+1234%10=4
m=m/10=123
2.m=123 成立
sum=4*10+123%10=43
m=123/10=12
3.m=12 成立
sum=43*10+12%10=432
m=12/10=1
4.m=1 成立
sum=432*10+1%10=4321
m=1/10=0
5.m=0 不成立
则最终sum=4321跟开始输入的试数值1234不相等,所以不是回文数,最终输出"no!"
---------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------用for去写----------
求1+2+3+4+...+100的和
菲波拉契序列:
1 2 3 5 8 13 21 34
1.执行顺序
格式:
while(表达式)
语句;
2.与for的相互比较
for和while可以相互转换
但是for的逻辑性更强,更不容易出错,推荐多使用for
3.举例
从键盘输入一个数字,如果该数字是回文数,则返回yes,否则返回no
回文数:正着写和倒着写都一样
比如:121 12321 都是回文数
#include<stdio.h>
int main()
{
int val;
int m;
int sum=0;
printf("please input a number:");
scanf("%d",&val);
m=val;
while(m)
{
sum=sum*10+m%10;
m/=10;
}
for(sum==val)
printf("yes!\n")
else
printf("no!\n");
return 0;
}
详解:
试数:12341.m=1234 成立
sum=0*10+1234%10=4
m=m/10=123
2.m=123 成立
sum=4*10+123%10=43
m=123/10=12
3.m=12 成立
sum=43*10+12%10=432
m=12/10=1
4.m=1 成立
sum=432*10+1%10=4321
m=1/10=0
5.m=0 不成立
则最终sum=4321跟开始输入的试数值1234不相等,所以不是回文数,最终输出"no!"
---------------------------------------------------------------------------------------------------------------------------------------------
for(1;2;3)
A;
等价于
1;
while(2)
{
A;
3;
}
4.什么时候使用while,什么时候使用for
-------------------------------------------用for去写----------
求1+2+3+4+...+100的和
#include<stdio.h>
int main()
{
int sum=0;
int i;
for (i=1;i<101;++i)
{
sum=sum+i;
}
printf("sum=%d\n",sum);
return 0;
}
------------------------------------------用while去写-----
#include<stdio.h>
int main()
{
int sum=0;
int i;
i=1;
while (i<101)
{
sum=sum+i;
++i;
}
printf("sum=%d\n",sum);
return 0;
}
------------------------------------------------------
菲波拉契序列:
1 2 3 5 8 13 21 34
求n次的时候的序列数值:
#include<stdio.h>
int main()
{
int n,f1,f2,f3,i;
f1=1;f2=2;
printf("please input your number:\n");
scanf("%d",n);
if(1==n)
{f1=1;}
else if(2==n)
{f2=2;}
else
{
for(i=3;i<=n;++i)
{
f3=f1+f2;
f1=f2;
f2=f3;
}
printf("%d\n",f3);
}
return 0;
}
详解:当n=7时,i的值从3开始循环,当i=3时,即有for(i=3;i<=7;++i)
f3=f1+f2=1+2=3
f1=2
f2=3
当i=4时,
f3=2+3=5
f1=3
f2=5
当i=5时,
f3=3+5=8
f1=5
f2=8
当i=6时,
f3=5+8=13
f1=8
f2=13
当i=7时,
f3=8+13=21
f1=13
f2=21
即当n=7时的菲波拉契序列值为21