输入一个数后,输出其整数部分的位数(例如输入123.4,则输出3;输入-0.6则输出0)。

求源代码,要求是C语言的,CB能编出来的最好

已经调试,请采纳,如需注释,请追问

另,负数都返回0,如需返回负数整数个数,使用fabs,或将字符串指针挪到符号之后。

#include <stdio.h>

#include "string.h"

int GetIntNum(float f)

{

 char a[50],*p;

if(f<1)return 0;//补充回答

 {

 sprintf(a,"%f",f);

 p=strchr(a,'.');

 *p='\0';

 return strlen(a);

 }

}

void main(){

 float f;

 scanf("%f",&f);

 printf("result is:%d\n",GetIntNum(f));

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-15
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<memory.h>
#include<queue>

using namespace std;

int main()
{
double n;
int m,i;
while(cin>>n)
{
m=int(n);//把浮点型的n强制转化为整型,这样就不用管小数部分了
if(m==0)
{
printf("%d\n",0);//如果强制转化后为0那么直接输出0,比如0.6强制转化为整型后为0
continue;//输出后跳出本次循环,进行下一次输入循环
}
for(i=0;;i++)
{
m/=10;//不断除10,比如1234/10,除四次就是0了
if(m==0)//判断是否为0
break;//为0了表示除光了就跳出for循环
}
printf("%d\n",i+1);//i表示除了几次,但因为i从0开始所以要加1
}
return 0;
}
第2个回答  2013-05-15
int main()
{
int num;
int count = 1;

scanf("%d",&num);
if(num<1)
{
printf("%d\n",0);
return 0;
}

while(num)
{
if(num/10==0)
break;
num/=10;
++count;
}
printf("%d\n",count);

return 0;
}
相似回答