c语言求大神拯救~~~~~~为什么过不了阿

求数的位数....
如123
printf 3
4444
printf 4
那里错了阿阿阿
#include<stdio.h>
#include<math.h>
int main()
{
int a,i=1,n;
while(scanf("%d",&a)!=EOF)
{
n=abs(a/10);
while(n>0)
{
i++;
n=n/10;
}
printf("%d\n",i);
i=1;
}
return 0;
}

你好!!

    程序没有问题,判断正确,采用 Ctrl + Z 退出程序

        

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-31
程序上没错,如果报的是unexpected end of file while looking for precompiled header directive之类的错误的话那是你用的VC创建事例工程后在你自己的文件中没引入stdafx.h,造成的编译失败。

另外说一下这个程序逻辑虽然正确,但是如果输入数据过长的话("%d",&a)这里转换会出错不准确,所以需要限定一下长度。如果需要更长数据支持的话可以改成(%ld,&a)等。
第2个回答  2013-10-31
刚才试了下,功能正常
1234
4
4567
4
12
2
123456
6
第3个回答  2013-10-31
你写的好乱啊,我这是手机,大致我给你个思路吧,读取a的值,进行判断是否大于1,大于1进入while 循环,n++,a=a/10,直到a小于1跳出循环,输出n
第4个回答  2013-10-31
abs()是stdlib.h里面的 你定义math.h没用的~~~
第5个回答  2013-10-31
程序看上去语法没错误啊,能详细描述一下错误吗??
相似回答