c语言编程,:求变一个程序,输入一个double型数据,经过运行后可以得到这个数的个位数。因为是double型,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程,:求变一个程序,输入一个double型数据,经过运行后可以得到这个数的个位数。因为是double型,相关的知识,希望对你有一定的参考价值。

,:求变一个程序,输入一个double型数据,经过运行后可以得到这个数的个位数。因为是double型,所以%这个运算就用不了了,事情一下子就卡住了,求大师来帮忙啊。如果直接求不出来,那么还可以稍微放宽。因为数字比较巨大,所以我才用了double型,其实都是正整数的,可就是%这个运算没办法进行。。。。。求大师,高手们来帮忙,谢谢啦

很简单 我告诉你 把double的存入char 字符数组

然后从后向前找 . 找到 . 再向前一位就是个位了

/////////////////下面这个方法很节省内存和cpu///////////////////////

123
个位数为:3。
Press any key to continue
123.44
个位数为:3。
Press any key to continue

#include<stdio.h>
#include "string.h"

main(void)

int nLen;
char ge;
char doub[50];
gets(doub);
nLen = strlen(doub);
ge = doub[--nLen];
for (;nLen>=0;nLen--)

if (doub[nLen]=='.')

ge = doub[nLen-1];
break;


printf("个位数为:%c。\n",ge);
追问

可是我那个数其实i是个整数,这是因为int型放不下,所以改用double型,这样一来这个数应该是没有小数点的啊,那么你这饭方法。。。。。?啊抱歉,我真不懂,若为不妥之问请见谅。。。

追答

没有小数点的情况你没看见我贴的运行结果吗?
我肯定要考虑没有.的情况
不管有没有小数点 我这个程序都能准确找出 个位数

参考技术A #include "stdio.h"
void main()

double a;
int b;
scanf("%lf",&a);
b=((int)(a))%10; //求个位数
printf("%d\n",b); //输出个位数
追问

你这样把double强制转换为int,如果数字如果数字很大的话,应该会损失精度的吧?这样来说,岂不是又不行了。。。抱歉,我真不懂,若为不妥之问请见谅。。。

追答

1 只要你输入的数在double表示的范围内,这个程序就没有问题。
2 计算机中的数都有表示范围,适用于任何范围的程序是不存在的。

参考技术B //取整后模10,余数就是个位数了。代码如下,不懂问我。

#include <cstdio>
#include <windows.h>
using namespace std ;

int main ()
double x = 123.456 ;
int y = (int)x % 10 ;
printf("%d\n" , y) ;
system("pause") ;
追问

你这样把double强制转换为int,如果数字如果数字很大的话,应该会损失精度的吧?这样来说,岂不是又不行了。。。抱歉,我真不懂,若为不妥之问请见谅。。。

追答

有道理,不过个位应该不受影响吧,为了准确,有两个类似方案。
1、用fmod (浮点数取模)
#include
#include
#include
using namespace std ;

int main ()
double x = 123.456 ;
int z = (int)fmod(x , 10.0) ;
printf("%d\n" , z) ;
system("pause") ;


2、用long long 来转。其实像你说的整数太大的情况,应该直接用long long的。
#include
#include
using namespace std ;

int main ()
double x = 123.456 ;
int y = (long long)x % 10 ;
printf("%d\n" , y) ;
system("pause") ;

参考技术C #include<stdio.h>
#include<stdlib.h>
#include<string.h>
double c;
int a;
int main()

scanf("%lf",&c);
a=int(c);
a%=10;
printf("%d\n",a);


输入double类型,把它int成整数,直接%追问

你这样把double强制转换为int,如果数字如果数字很大的话,应该会损失精度的吧?这样来说,岂不是又不行了。。。抱歉,我真不懂,若为不妥之问请见谅。。。

C语言怎样接收double类型变量输入

参考技术A

我们在使用C语言编写程序的时候,经常需要使用double类型,那么C语言如何接收double类型的数据呢?下面我给大家分享一下。

工具/材料

Dev C++

    01

    首先我们打开Dev C++软件,新建一个C语言项目,如下图所示

    02

    接下来在C语言文件中通过scanf让用户输入数字,接着在打印数字,注意这里用的lf接收double数据类型,如下图所示

    03

    然后我们运行编写好的C语言文件,如下图所示

    04

    最后在弹出的CMD界面中我们就可以输入double类型的数据了,程序接收到数据以后就会进行输出,如下图所示

以上是关于c语言编程,:求变一个程序,输入一个double型数据,经过运行后可以得到这个数的个位数。因为是double型,的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎样接收double类型变量输入

c语言float可以输入指数吗

C语言 双精度类型(double)变量的输入问题

c语言 float型数据输入需要注意啥吗

C语言输入使用double型时,输出总是出错?

c语言long double 怎么输入,输出阿?