C语言,求一个任意整数的位数,需要调用函数的方法,下面是我编的一个程序,帮忙看看,运行得不到结果。

#include<stdio.h>
long f(long int x)
{
int a[100];
int i;
for(i=1;;i++)
{
a[i]=x%10;
x=x/10;
if(x==0)break;
}
return (i);
}
void main()
{
long x;
int m;
printf("输入一个任意位数的整数:");
scanf("%l",&x);
m = f(x);
printf("%l的位数为%i!",x,m);
}

#include<stdio.h>
long f(long int x)
{
int a[100];
int i;
for(i=1;;i++)
{
a[i]=x%10;
x=x/10;
if(x==0)break;
}
return (i);
}
void main()
{
long x;
int m;
printf("输入一个任意位数的整数:");
scanf("%ld",&x);//这里改了
m = f(x);
printf("%ld的位数为%ld!",x,m);//这里也改了
}追问

运行成功了,为什么
scanf("%ld",&x);//这里改了
printf("%ld的位数为%ld!",x,m);//这里也改了
就可以了呢?

追答

因为long int 的格式应该是%ld 你写的那个格式是杜撰的吧...

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-21
main()
{
int a,l;
int n=0;
printf("输入一个数:");
scanf("%d",&a);
while(a!=0)
{
l=a%10;
a=a/10;
printf("%d",l);
n++;

}
printf(" %d位数\n",n);
}
第2个回答  2011-04-21
源程序是不是复制错了?
一:long f(long int x){....},参数类型是long吧,应该写成这样:long f(long x){....};
二:printf("%l的位数为%i!",x,m);错误应该是类型匹配不对,应该改成:printf("%ld的位数为%d!",x,m);
字母l用于长整型数据,可加在d、o、u、x格式符前。
第3个回答  2011-04-21
printf("%l的位数为%i!",x,m);
改成printf("%l的位数为%l!",x,m);
还有,你f()函数里的a[100]可以完全不用。
第4个回答  2011-04-21
long f(long int x)
函数定义这儿是不对的
第5个回答  2011-04-21
长整形的输入输出格式有误!
将主函数中scanf语句改为 scanf("%ld",&x);
最后一个输出语句改为 printf("%ld的位数为%d!\n",x,m);
即可
相似回答