作者在 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)
输出"这个数不是回文数"
*/
时间: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)
输出"这个数不是回文数"
*/