while循环用法举例1(判断输入的数字是否回文数)

作者在 2011-08-17 15:50:54 发布以下内容
/*
时间:2011年8月17日15:45:14
功能:判断输入的数是否是回文数
目的:掌握while循环的用法,体会while和for的区别
注释:回文数是指一种正着读、倒着读都一样的数,如12321
*/

# include <stdio.h>

int main(void)
{
    int val;    //用来保存输入的数
    int m;
    int sum = 0;

    printf("请任意输入一个自然数,按回车结束\n");
    scanf("%d",&val);

    m = val;                                        //这段循环用来把输入的自然数倒过来
    while (m)
    {
        sum = sum*10 + m%10;
        m /= 10;
    }

/*                                                    
    for (m=val; m; m/=10)                            //上面的while循环可与for循环转换
        sum = sum*10 + m%10;                        //for的逻辑更强,更不容易出错,推荐多使用for
*/

    if (sum == val)
        printf("这个数是回文数\n");
    else
        printf("这个数不是回文数\n");

    return 0;
}

/*
分别输入一个回文数和一个不是回文数的数
在VC++6.0中的输出结果为:
————————————
请任意输入一个自然数,按回车结束
12321
这个数是回文数
Press any key to continue

请任意输入一个自然数,按回车结束
12345
这个数不是回文数
Press any key to continue
————————————

程序执行流程
sum=0
提示输入一个数
输入12345, val=12345
m=val=12345
12345不等于0,所以为真,开始循环
1)sum = 0*10 + 12345%10 = 0+5 = 5
   m = 12345/10 = 1234
1234为真,继续循环
2) sum = 5*10 + 1234%10 = 50+4 =54
   m = 1234/10 = 123
123为真,继续循环
3) sum = 54*10 + 123%10 = 540+3 = 543
    m = 123/10 =12
12为真,继续循环
4) sum = 543*10 + 12%10 = 5430+2 = 5432
    m = 12/10 = 1
1为真,继续循环
5) sum = 5432*10 + 1%10 = 54320+1 = 54321
    m = 1/10 = 0
0为假,循环结束
判断sum==val为假(因为此时sum=54321,val=12345)
输出"这个数不是回文数"

*/
郝斌视频笔记 | 阅读 3455 次
文章评论,共1条
贾文慧
2011-08-19 12:25
1
为了骗积分,赞一个
游客请输入验证码
最新评论