2.while结合for判断回文数及其比较+菲波拉契序列
2016-06-13 14:57
393 查看
while
1.执行顺序
格式:
while(表达式)
语句;
2.与for的相互比较
for和while可以相互转换
但是for的逻辑性更强,更不容易出错,推荐多使用for
3.举例
从键盘输入一个数字,如果该数字是回文数,则返回yes,否则返回no
回文数:正着写和倒着写都一样
比如:121 12321 都是回文数
详解:
试数:1234
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; }
详解:
试数:1234
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) 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
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Linux C函数参考手册(PDF版)
- C# partial关键字说明
- Lua和C语言的交互详解
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- C#用链式方法表达循环嵌套
- C#中的委托数据类型简介
- C#编写的艺术字类实例代码
- C#实现打造气泡屏幕保护效果
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C++中explict关键字用法
- C语言中fchdir()函数和rewinddir()函数的使用详解