小弟刚开始学C语言
下面是程序
#include<stdio.h>int jc(int x)
{int i;
for(i=1;i<=(x-1);i++)
x=x*i;
return(x);
}
main(){
int n,k,sum=0;
for(k=1;k<=10;k++)
{
n=jc(k);
sum=sum+n;
printf("%d",k);
printf("!=%d\n",n);
}
printf("sum=%d\n",sum);
return 0;
}
求解 为什么输出结果除了前两次(分别是1,2)都是负数,但是SUM的和却是正数 而且貌似不对。
【C语言】有没有大佬知道这个程序为什么会输出一个负数?
程序会输出负数的原因是,在这个程序中你没有对每次运算的结果进行检查,因此当乘积超出了long类型的最大值时,就会产生溢出,导致结果为负数。为了避免这个问题,你可以在每次运算后检查结果是否已经超出了long类型的范围,并在必要时退出循环。可以这样改:include<stdio.h> main(){ long i;i=chengji(...
C语言 为什么我这个程序输入正确数后 结果总为负数
那么长的结果 你不把数据类型改长一点 那么就会数据溢出 变成负数的
c语言问题,为什么会输出负数
算法有错误,最终计算结果是负数。输出自然会是负数。例如:int a=1;int b=a-2;printf("b=%d",b);\/\/输出结果:b=-1超过变量类型的最大取值范围,发生溢出。例如Turbo C里int是16位,取值范围-32768~32767。如果计算过程当中,数值超过32767,由于补码的关系。结果就有可能是负数。这种情况,就需...
C语言运行结果的时候为什么会出现负数
必然是溢出了。
c语言一个程序没有错误,在运行时输入两个数,其中有一个数在输出时却是...
输入时用于分隔的都是应该是西文半角的逗号,你输入中文全角的逗号了
为什么C语言算出来是负数?大神们帮忙检查一下吧
for(n=2;n<=16;n=n+2)m=m*(n+1)*(n+2);你的m的初步估计是3的8次方4的8次方乘以2 144194 然后肯定是超出界限了。。int是2个字节。。也就是16位,第一位是数据的正负0正1负,15位是数值最大的值是32767 超出了。。。然后你最后结果的反正是超出范围了。,。最终是哪里超出的就不...
一道C语言题,为什么输出的结果为负数?
你的主要原因是变量w没有初始化,是内存中的遗留值,导致最后输出的结果中全部学生的平均值为2000多的一个负数。修改后源码软下:include <stdio.h>#include <stdlib.h>#define input scanfstruct student{ char num[10]; char name[10]; int score[3]; int total; float avr;}...
C语言的一个程序运行的问题..为什么反显会出错.请大家赐教
对于程序本身没错,编译通过,当你输入数据时,程序对数据进行计算,输入的数据超出-32768~32767时,输入数据错误,也就是说,你输入的数是0~65535时就是正确的数据,再解释,从32767~65535系统认为其为负数,也是正确的数据。在由就是为什么没有显示数据错误的提示,这也不难理解,首先对于数据空间j...
我的数据输出怎么是负数,c语言大神求指教 #include<stdio.h> #define...
那么就直接返回,后面的参数没有办法接收数据,你在scanf中r=%lf,h=%lf这样控制格式,那么在输入数据时,需要r=1.5,h=2.5这样的格式输入,才能让变量r和h接收到你输入的参数,如果你不按照这个格式输入参数,那么scanf函数就会返回错误,变量就有可能接收不到正确的数据,导致程序运行结果不正确 ...
C语言程序,结果会出现负0,请问怎么办?
这是圆周率数值的截断误差引起的,算出的向量就是接近0的负数。要想得正0,圆周率给个 (四舍)五入值:pai=3.14159265359;就可以了。但不能保证别的特殊的输入数会不会 该正0 出现负0。