turbo c程序问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 23:29:34
#include<stdio.h>
void main()
{
long i;
int leap;'leap定义用来表示该数的位数
printf("input a number between 0and 99999\n");
scanf("%ld",&i);
if(i/1e4!=0)
leap=5;
else if(i/1e3!=0)
leap=4;
else if(i/1e2!=0);
leap=3;
else if(i/10!=0)
leap=2;
else
leap=1;
printf(the number is composed of%d numbers\n",leap);
}
该程序用来判断一个数的位数,如1000由是个四位数。
现在问题是,我所输入的任何数运行后的结果都显示为5位数,请帮忙找出下问题?

int leap;
int num;要判断的数
for(;num=0;num/=10)
{
leap++;
}

你这个思路是有问题的,怎么可能i/1e3 的结果是非0的时候,leap就等于5呢?要是小于1的小数呢?所以你怎么输入什么正数得出的结果都还是leap=5的。你或者可以把i/9999>1作为条件,为真时则leap=5,如此类推下去。