程序运行不了,什么情况,这是个整数分解的程序,求解释

img

img

有报错截图么

代码如下:

#include <stdio.h>
int main()
{
    int x;
    printf("请输入要判断的数字");
    scanf("%d",&x);
    int mask = 1;
    int m = x;

    while(m>9) 
    {
        m/=10;  //123除以10,结果是12
        mask *= 10; //m=1*10;
    }
    printf("%d %d\n",mask,m);
    int d;
    do 
    {
        d = x/mask;
        printf("%d",d);
        if(mask > 9)
            printf(" ");
        x %= mask;
        mask /=10;
    } while (mask > 0);
    printf("\n");
    return 0;
}

int mask = 1;
int m = x;
while(m>9) //这里是计算输入的数字是多少位数,比如,123是百位数,mask最后等于100
{
m/=10;
mask = 10; //m=110;
}
假设输入的x的值是123;那么m=123;进入while循环
123 > 9;执行循环体: m/=10;以后m=12;mask*=10;以后mask=10;
12>9;执行循环体: m/=10;以后m=1;mask*=10;以后mask=100;
1>9不成立,结束循环,所以,此时m=1,mask = 100;
------------------------继续下面的do..while循环-----------------------------
do
{
d = x/mask;
printf("%d",d);
if(mask > 9)
printf(" ");
x %= mask;
mask /=10;
} while (mask > 0);

进入循环体:
d = x/mask;执行完毕后,d = 123/100= 1(这里编译器会取整数),然后显示d的值为1
mask=100,所以if成立,输出空格;
x %= mask;就是x除以mask取余数,x= 123%100 = 23;
mask/=10;执行后就是mask = 100/10=10;
判断while(mask>0)成立,继续执行循环体;
d = x/mask;执行完毕后,d = 23/10= 2,然后显示d的值为2
mask=10,所以if成立,输出空格;
x %= mask;就是x除以mask取余数,x= 23%10 = 3;
mask/=10;执行后就是mask = 10/10=1;
判断while(mask>0)成立,继续执行循环体;
d = x/mask;执行完毕后,d = 3/1= 3,然后显示d的值为3
mask=1,所以if成立,输出空格;
x %= mask;就是x除以mask取余数,x= 3%1= 0;
mask/=10;执行后就是mask = 1/10=0;
判断while(mask>0)不成立,结束循环;
输入回车符。
所以最后显示的就是1 2 3 ,也就是输入的x的各位数字

代码看上去没大问题,唯一是檔案名字,路径里面和檔名最好别用中文,因为 GNU 那些编译器是N久前的,都是用英文字的,中文处理有机会出问题……