2.while结合for判断回文数及其比较+菲波拉契序列

while
    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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值