不要半途而废,加油!
判断位数
题目要求
程序要读入一个5位以下(含5位)的正整数,然后输出这个整数的位数。如输入:352,输出:3 。
解题思路
循环令数字每次/10,即去掉最右边的一位数,一直到结果为0,计算过程中持续计数,程序不考虑输入验证,不考虑输入值小于0或超过五位数的情况。
代码实现
while循环方法
#include <stdio.h>
int main()
{
//初始化变量
int x = 0,longs = 0;
//获取输入的整数
printf("请输入一个大于0的整数:");
scanf("%d", &x);
//先进行一次/10,并记录一位
longs++;
x = x/10;
//若/10后仍大于0,则重复此步骤
while(x>0)
{
longs++;
x /= 10;
}
//输出该整数的位数
printf("您输入的整数为%d位", longs);
return 0;
}
do - while循环方法
#include <stdio.h>
int main()
{
//初始化变量
int x = 0,longs = 0;
//获取输入的整数
printf("请输入一个大于0的整数:");
scanf("%d", &x);
//先进行一次/10,若/10后仍大于0,则重复此步骤
do
{
longs++;
x /= 10;
}while( x>0 );
//输出该整数的位数
printf("您输入的整数为%d位", longs);
return 0;
}
代码总结
while与do - while相比两者的区别是,do - while是先进入循环体,再判断是否符合条件,while是先判断是否符合条件,再进入循环体。两者的相同点是条件满足时执行循环,条件不满足时结束循环。
下图左边是do - while循环,右边是while循环。