c语言大神求破。。。 输入一个实型数,输出它整数部分的位数。

 我来答
White_MouseYBZ
2017-07-17 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6717万
展开全部

将这个浮点数强制为整型赋给一个int型变量,然后用10去除这个int型变量,几次能除到结果为0就是几位。代码如下:

#include "stdio.h"
int main(int argc,char *argv[]){
int n,t;
double x;
printf("Input x(float,x>=0)...\nx=");
if(scanf("%lf",&x)!=1 || x<0 || x>0x7FFFFFFF){//非负整型范围内
printf("Input error, exit...\n");
return 0;
}
for(n=(int)x,t=0;n;n/=10,t++);//n是整数部分,t记录位数
printf("The integer part of %g is(are) %d digit(s).\n",x,t);
return 0;
}

运行样例如下:

hbc7025
2014-04-08 · TA获得超过340个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:125万
展开全部
void main(){
float a;
int b,c;
scanf("%f",&a); //输入一个实数存在a变量中

b=a; //强制转换,直接把浮点数变量的值赋给整数变量,直接得到整数部分
for(int i=1,c=b;c<10;i++){ //备份整数部分到c变量,如果c变量的值小于10,那说明已经算出整数 //部分的个数了。i变量的值就是整数部分的位数
c/=10; //c=c/10; 以变量的值除于10,得到的整数部分再赋给c变量,执行完这句后,c的 //值就不再是b了

}
printf("输入的实数为%f,整数部分为%d, 整数部分的位数为%d",a,b,i);
}
追问
输入的实型数有可能是负数怎么破,比如输入-82.5得到2
追答
一样可以啊
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
学海识智渊2
2014-04-08 · TA获得超过327个赞
知道小有建树答主
回答量:170
采纳率:50%
帮助的人:105万
展开全部

如果你不是新手的话,应该这样做,得到这个实型数例如 是33.456然后强制转换成整数 变成33然后不停地对10取模,知道结果为0退出循环,统计循环的次数,就说明是几位!

#include <stdio.h>

int main(void)
{
// printf("Hello Linux\r\n");

float dNum =0.0;

puts("输入一个实数");
scanf("%f",&dNum);

int num = (int)dNum;
int times = 0;
while(num)
{
times++;
num /= 10;
}


printf("整数位数为%d\r\n",times);

return 0;
}
追问
输入的实型数有可能是负数怎么破,比如输入-82.5得到2
追答
先变成正数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
山风雪雨
2014-04-08 · 超过19用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:42.1万
展开全部
#include<stdio.h>

main()
{
double a=0.0;
int b=0;
int i=1;

printf("请输入一个实型数: ");
scanf("%lf",&a);
b=a;
while(b/10>0)
{
i++;
b=b/10;
}
printf("整数的位数是%d\n",i);
}
追问
输入的实型数有可能是负数怎么破,比如输入-82.5得到2
追答
while里面改成b/10!=0,负数也能处理
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨中的山2016
2021-12-29
知道答主
回答量:1
采纳率:0%
帮助的人:418
展开全部
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
char a[20],i,l,k,n=0;
int m=0;
while(1)
{

printf("请输入一个数!\n");
scanf("%s",a);
n=0;
k=0;
l=0;
for(i=0;i<strlen(a);i++)
{
if(((a[i]>='0')&&(a[i]<='9'))||(a[i]=='.'))//判断输入的只能是数字和小数点
{
if(a[i]=='.') //判断输入的小数点次数,为后面判断小数点输入多了做判断
{
k++;
l=n;
}

n++;

}

}

if(n==strlen(a)&&k<=1)//输入的全部是数字并且最多只有一个小数点
{

printf("你输入的正整数位数为:%d\n", l);
}
else
printf("不全部是数字,有其余字符");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式