代码如下
#include<stdio.h> //输入数字然后程序判断这是几位数
int main ()
{
int x ,n=0; //x输入的数字 n是用来输出的位数
scanf("%d",&x);
n=n+1; // 3 只要输入数字都是1位以上的不存在0位所以先+1
x /=10; // 4 利用两整数相除省略小数部分,将输入的数字位数减去1位
while(x>0) //判断输入的数字是否小于0
{
n++; //n的值+1
x/=10; //将输入的数字位数再减去1位
}
printf("%d\n",n);
return 0 ;
}
这程序的3 4行不是很理解 想听听您们的讲解,多谢了!
第三步完全可以并到第一步去
直接n=1;就行了
第四步可以理解为 x=x/10;
n=n+1
把n+1的值赋给n。对了,别说数学的事情。这里的等号不是等于的意思,是赋值的意思
x /= 10;
从意义上理解,可以看做x=x/10;当然实际执行上,有点不一样,不过暂时可以忽略这些不一样。从算法的实现上来说,完全没有必要有第3和第4行。
因为它的 while 循环体的语句完全是一样的,直接进入 while 循环进行判断即可。
#include //输入数字然后程序判断这是几位数
int main ()
{
int x ,n=0; //x输入的数字 n是用来输出的位数
scanf("%d",&x);
do {
n++; //n的值+1
x/=10; //将输入的数字位数再减去1位
}while(x>0) //判断输入的数字是否大于0
printf("%d\n",n);
return 0 ;
}
其实这个程序很简单的,第3行、第4行完全没有必要,可以删除了,不影响程序运行结果。这个程序要实现的功能是判断输入数字的位数,n是用来输出数字的位数
,x /= 10,则是利用/运算符的功能来实现目的。写程序,要注意简约而不简单,能不要的就不要。
一开始n的值为0,但是显然最少都是一位,所以预先处理。