mooc上老师讲的代码有两段没有看太懂

代码如下

 #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;

  • 1. n=n+1

把n+1的值赋给n。对了,别说数学的事情。这里的等号不是等于的意思,是赋值的意思

  • 2. 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,但是显然最少都是一位,所以预先处理。