c语言问题,为什么会输出负数
程序会输出负数的原因是,在这个程序中你没有对每次运算的结果进行检查,因此当乘积超出了long类型的最大值时,就会产生溢出,导致结果为负数。
可能的原因太多,可以肯定程序输出不在你的预想,代码有错。错误代码输出的结果没有参考性。先检查代码。比如:运算式子有没错。调用了未赋值且未初始化的变量。数组访问越界。等等。
出现负数,是因为奇数、偶数的和太大,超过了long(长整型)类型的最大值了。个数是对的,0-151554545共有151554546个数,其中奇数偶数各有75777273个。
你的主要原因是变量w没有初始化,是内存中的遗留值,导致最后输出的结果中全部学生的平均值为2000多的一个负数。
c程序一输入负数就出错,求指导
1、可能与你scanf函数中格式控制符中的“.”有关,一般情况下,格式控制符之间最好不要有这种分隔符,如果需要,在输入数据时也必须原样加上。
2、数值太大。devc输入负数需要进行数值修改,将光标移到要输入负数的单元格,点击数字,在分类中点击数值,在负数中选一负数,调整负数的小数位数,点击确定就可以输入了。
3、你先添加一个正负检验函数,就是看字符串第一个是不是“-”号,然后如果是,就相应的执行相反的函数就行,是加法检测到“-”号直接调用减法运算,这是一个办法。
4、其中奇数偶数各有75777273个。至于for不动了,是for循环进入死循环了,你的编译器中int是2bytes,最大值为32768,当i加到32769的时候,就越界了,成为负数,所以i永远不会大于你输入的151554545这个数值,所以死循环。
5、试了一下,b 为0 或 为 负 可以 得结果,所以就不细查程序了。
c语言中如何利用scanf输入负数
1、可以的。当调用scanf函数从键盘输入数据时,最后一定要按下回车键,输入负数也是一样的。scanf是C语言中的一个输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
2、直接按照数学的写法就可以了。在C语言中,小数,或者带小数的实数,都是以浮点数形式储存的,有单精度float和双精度double两种,后者可以更精确,表示范围也更大。要判断一个变量f是否为负,可以用if(f0)的方式。
3、scanf 函数最主要的用法是:scanf(输入控制符, 输入参数);功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
4、include stdio.h void main(){ long a,b,r;scanf(%ld,&a);b=0;do{ r=a%10;a=a/10;b=b*10+r;}while(a);printf(%ld,b);} 呵呵,正负数没有限制的。
5、第一位符号位1为负,0为正。 正数的补码和2进制原码是一样的。负数的补码:先取绝对值|x| ;对|X|+1 ;对|X|+1 取反,就得到它的补码了 。计算机中存放整型数据都是按补码的形式存放的。
6、最高位是符号位,1表示负数,0表示正数。这里-5,所以取1。接着是8位阶码,阶码用移码表示,最高位为符号,0表负、1表正;单精度要在原值上+127实现,即加01111111。