c语言数据溢出问题,下面是程序与输入20后溢出的情况
发布网友
发布时间:2024-01-05 16:10
我来回答
共2个回答
热心网友
时间:2024-01-25 10:36
#include <stdio.h>
double fun(int n)
{
int i;
double result=1;//只改这儿就行double表示数的范围更大,long result=1;
for(i=2;i<=n;i++)
{
result*=i;
}
return result;
}
int main()
{
int n;
double ret;
scanf("%d",&n);
ret = fun(n);
printf("ret = %.0f\n",ret);
return 0;
}
热心网友
时间:2024-01-25 10:36
double fun(int n)函数中 long result=1;改为 double result=1;就ok了
因为阶乘的结果很大,不用浮点运算的话,否则的话就得自己写大数运算的算法了
谢谢采纳
c语言中数据溢出的问题怎么解决?
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp,输入问题基础代码。2、在test.cpp文件中,将int全部调整为long long,printf函数调整为:printf("%lld!=%lld\n",n,count);。3、编译器运行test.cpp文件,此时成功打印出了大数。
C语言编程问题,数据溢出。
你的算法有问题:你这个程序的算法没有你想的这么容易,因为实际上中间你是在做幂运算,而幂运算是非常容易溢出的;但是考虑到实际上你只是需要输出后面三位数字即可,那么按照乘法(幂运算其实是乘法运算)的规则,我们知道其实影响最后三位的是两个乘数的后三位,高于后三位的是不参与对乘积的后三位...
C语言关于整型数据溢出的一个问题请教
long 型数据要加附加格式说明符 l 。输出的格式:printf("%ld,%ld",a,b);注意,2个数都是用"%ld"格式输出,否则可能会得到意外的结果。你可以试试用下面的几个语句依次替换printf(“%d,%d”,a,b);1.printf("%d,%ld",a,b);2.printf("%d\n",a);printf("%d\n",b);3.printf("%ld\...
C语言关于数据溢出
这不是数据溢出。这是由于没有指定小数位数(系统默认输出6位小数,加上2位整数,就是要输出8位数字),float只能保证7位有效数字,多余位数上的数字是无效的。如果以%.1f或%g格式输出,就不会出这种错了。如果改为double类型(相应地,输入语句要改为%lf格式),这样可以有15位有效数字,也不会出...
求助c语言 好像是数据溢出
虽然我没有看到你的 C 语言源程序,但是根据我的编程经验,引起数据溢出的情况通常有:(1)、数组下标越界。这个是 C 语言初学者最容易犯的错误!例如,定义如下数组:int num[10] ; 在 C 语言中其有效的下标范围应该是:0-9,而不是:1-10!如果在源程序中引用了 num[10]变量,那么必定会...
为什么C程序中33000,20的平均数是-16258.0000000?
在C语言中,这个问题的原因很可能是整数溢出。整数溢出是当一个整数超出其可以表示的范围时发生的现象。在C语言中,整数类型(例如int)有一定的范围,对于有符号整数,通常情况下,int类型的变量可以表示-2^31 (-2147483648) 到 2^31-1 (2147483647) 之间的整数。当您尝试计算33000和20的平均数时,...
(c语言)输入20个数,输出它们的平均值,并且输出与平均值之差的绝对值最...
include <stdio.h>#include <math.h>#define N 20void main(void){ float a[N],average = 0, s = 0, t = 0;//注意这个t赋值,部分编译器不会如你所愿 int i,k; for(i =0; i< N;i++) //这个不能等于,本身从0开始,到N-1个正好是N个 scanf("%f",&a[i...
关于c语言整型数据的溢出问题~~求高手多指点~~
就可以得到原码。假设你是16位系统。100000000000000 求补=1 11111111111111+1=00..00 b就溢出为0了。不过现在都是32位系统了,int类型都是4个字节的都,a表示成00..00100000000000000了。楼主的的这个程序不能造成溢出。所以printf ("%d",b);打印出来的b应该是32768,也不是 -32768 ...
c语言溢出是什么问题
溢出原因 数据类型超过了计算机字长的界限就会出现数据溢出的情况。导致内存溢出问题的原因有很多,比如:(1) 使用非类型安全(non-type-safe)的语言如 C/C++ 等。(2) 以不可靠的方式存取或者复制内存缓冲区。(3)编译器设置的内存缓冲区太靠近关键数据结构。因素分析 1.内存溢出问题是 C 语言或者 C++...
c语言算术溢出问题怎么解决?
sqrt的函数原型为double sqrt(double);参数的类型为double,返回值也是double 你在这里i是long int类型的,根据提示叫你强制转换,你可以这样 x = sqrt((double)i + 100);如有用,望采纳