黑马程序员技术交流社区

标题: 请问,-10 除以 3, 余数为多少? [打印本页]

作者: 飘飘风    时间: 2015-11-15 09:48
标题: 请问,-10 除以 3, 余数为多少?
第一种, (-10) / 3 = -3 …… -1;
第二种, (-10)/ 3 = -4……2;
应该选哪一个结果呢?为什么?


作者: 长刀研    时间: 2015-11-15 10:04
亲,第二种,余数都是正数。
作者: 长刀研    时间: 2015-11-15 10:05
余数必须为正数,如上题余数为2,-29/5,余数为1
作者: 飘飘风    时间: 2015-11-15 10:56
@长刀研,谢谢解答!
但是在C语言程序中,
(-10%3)的结果为-1,
printf("-10 除以 3 的余数为;%d\n", ((-29)%5) );结果为-4。

后来我想了一下,大概是这样的,余数的正负是由被除数决定的,被除数原来为负,那么,余数结果也是负数。
作者: fenghun1991    时间: 2015-11-15 13:17
-10/3=-3  ,-10%3=-1  ,具体可以自己去测试下
作者: 飘飘风    时间: 2015-11-15 15:31
@fenghun1991, 我测试过,确实是如此。谢谢你!
作者: geqiandesiyu    时间: 2015-11-15 20:15
10%-3等于1;   

-10%3等于-1;
-10%-3等于-1;
对最终的计算结果正负有影响的只有第一个元素,也就是说a%b中a正的话正,负的话负
作者: 飘飘风    时间: 2015-11-15 22:20
好的,谢谢筒子们!
作者: 飘飘风    时间: 2015-11-15 22:24
@触底反弹,哥们,我没分了,你看,我0个黑马币了。
作者: chenxianzai    时间: 2015-11-15 23:11
选第一种啊,负数除以正数,符号不变,余数和绝对值的相同
作者: ^_^笨和尚^_^    时间: 2015-11-16 00:03
-10 / 3 =-3 余1 ,数学逻辑是求值运算。
-10%3 = -1. 这个结果是求余数的。一般是x %y ==0,是求当x 是y 的整数倍时,用来做判断的。
在编程中我们要分清楚是求余数,还是求值

以上是我这个初学者的分析,谢谢,,有更合适的解释转告我一下
作者: 韩三少    时间: 2015-11-16 00:08
正确答案有了吗
作者: 暮雨深处看落花    时间: 2015-11-16 00:34
-1  并不是说所有余数都是正整数
作者: 木冉    时间: 2015-11-16 09:45
余数的正负是由被除数所决定的,被除数是正则余数为正,为负则余数负
作者: 马小平    时间: 2015-11-16 11:29
余数为-1,余数的符号与前面的数的符号保持一致,如-10%3=-1,-10%-3=-1,10%-3=1
作者: 王开冰    时间: 2015-11-16 12:16
第一个答案,我认为
作者: 小龙2015    时间: 2015-11-16 17:53
是第一种,余数的符号与被除数相同
作者: 米易雅克    时间: 2015-11-16 20:57
本帖最后由 米易雅克 于 2015-11-16 20:59 编辑

int main(int argc, const char * argv[]) {
    int sum=0;
    sum=(-10)%3;
    printf("%d\n",sum);
    return 0;
}结果为-1

作者: 袁有福123    时间: 2015-11-16 23:00
第二种  余数应该为正数
作者: HavaDream    时间: 2015-11-16 23:50
(-10)\3 默认为int型  相当于(int)(-10)\3 = -3
作者: 仰望星空的猪    时间: 2015-11-17 07:29
取决于被除数的正负
作者: Mr.Cai    时间: 2015-11-17 09:49
我是来学习的
作者: 小笨笨天    时间: 2015-11-17 20:20
无语  这种问题直接写代码测试   每个人有每个人的理解
作者: 顽固派。    时间: 2015-11-17 21:12
其实取余很简单的,不管左边是是负数还是右边是负数,得到的结果符号都和左边一致.
作者: l5681065    时间: 2015-11-18 08:01
int i=10; printf("%d",(-10)%3);    程序告诉我是-1
作者: guitarjason    时间: 2015-11-18 23:49
被除数是正数,取余一定为正;反之,被除数是负数,取余一定为负。(余数为0除外)     
作者: Tactful丶boy    时间: 2015-11-19 20:31
余数都是正数,所以是第二种,加油
作者: 煌龙    时间: 2015-11-19 20:34

10%-3等于1;   

-10%3等于-1;
-10%-3等于-1;


取决于10的除数,或者求余数的正负
作者: 袁有福123    时间: 2015-11-19 21:16
应该选第二种  因为余数都是整数
作者: 飘飘风    时间: 2015-11-19 22:02
谢谢小伙伴儿们!这个题目很清晰了,我们转战下一个问题吧~~!
作者: z940505    时间: 2015-11-19 22:39
亲,验证一下就好啦!余数都是正的
作者: 大凶之兆    时间: 2015-11-20 17:44

第一种, (-10) / 3 = -3 …… -1;   
第二种, (-10)/ 3 = -4……2;

结果是第一种。
这就和我们做正整数  10除以3 是一个道理    3*3 <10而3*4>10     除数除以被除数要算到 不能整出的情况
(-10)/ 3 除到不能整除3的情况那就是-3.
同理 (-10)% 3 = -1.
作者: 夜神月No1    时间: 2015-11-21 13:26
余数的符号取决于第一个数
作者: 隔壁马良    时间: 2015-11-21 16:40
-1啊,除数与被除数符号不同时余数符号与被除数相同
作者: 为爱算了吧    时间: 2015-11-21 23:32
java第一种是对的   余数的正负是由被除数决定的,被除数原来为负,那么,余数结果也是负数。  
作者: 马小平    时间: 2015-11-22 09:47

余数为-1,余数的符号与前面的数的符号保持一致,如-10%3=-1,-10%-3=-1,10%-3=1
作者: 卞卞    时间: 2015-11-22 15:28
求余运算结果的正负号与除数一致。
如果被除数与除数同号,那么运算结果即为两数相除的余数;
如果被除数与除数异号,则运算结果为两数相除的余数再加上除数的值。
-10/3即余为2   //-10 / 3 = -1....(-1+3=2)
作者: 别再忘了    时间: 2015-11-22 22:58
这问题!!!除以3为-3,模以3为-1
作者: liuqiang11164    时间: 2015-11-23 18:59
-3.。。。-1
作者: 王际涛    时间: 2015-11-25 23:57
-10/3==-3  -10%3==-1
作者: OnTheWay_1314    时间: 2015-11-26 10:35
想知道结果,很简单,自己试试,看截图吧亲。答案很明显了,余数为-1哟

屏幕快照 2015-11-26 10.29.51.png (106.13 KB, 下载次数: 110)

程序运行及结果

程序运行及结果

作者: 冰雪丝阳    时间: 2015-11-26 14:57
和第一个有关。。。。。。。。。你们666
作者: lowke    时间: 2015-11-29 15:50
第一种, (-10) / 3 = -3 …… -1;
第二种, (-10)/ 3 = -4……2;
应该选哪一个结果呢?为什么?
int main {
    int sum=0;
    sum=(-10)%3;
    printf("%d\n",sum);
    return 0;
}     c-free跑一下。可知道为1  
  解释:首先你可以看作10除以3 ;分解 3*3=9   9+1=10
   就是10除以3 等于3 余数 是 1 ;;  那么负数也一样。-10%3=-1
作者: me1127    时间: 2015-12-4 12:48
飘飘风 发表于 2015-11-15 22:24
@触底反弹,哥们,我没分了,你看,我0个黑马币了。

哈哈哈
作者: liuzhipeng    时间: 2015-12-5 23:04
-10/3 = -3...............-1
作者: 小曼_r9qDE    时间: 2015-12-6 23:59
选择-10/3=-3 余数为1 因为余数与除数左边的符号无关
作者: me1127    时间: 2015-12-7 14:50
结果应该为-1.
作者: VisionDo    时间: 2015-12-9 11:24
java里

int a,int b,double c;
a/b 余数为0
a/c  余数为0

求余要用%
a%b或者c%a余数的符号和分子相同
作者: 星海浮沉    时间: 2015-12-22 15:47
楼主,有正确答案了,给结贴啊~
作者: song0619    时间: 2015-12-23 11:06
-1的,这些基础视频里面都有讲过,建议你看看视频
作者: 子午鼬    时间: 2015-12-28 22:11
第一种,我书读的少,不要骗我!
作者: wljr339    时间: 2016-1-13 22:45
我是也是刚学    这是我求大神问的   希望对你有帮助
10%-3=1;   
-10%3=-1;
-10%-3=-1;
作者: wljr339    时间: 2016-1-13 22:47
我是也是刚学    这是我求大神问的   希望对你有帮助
10%-3=1;   
-10%3=-1;
-10%-3=-1;
作者: 曦正    时间: 2016-2-3 10:20
跟着第一个元素走,第一个是负,余数就是负数,第一个是正数,余数就是正数
作者: 陈梦佳    时间: 2016-2-8 21:03
public class Test {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int a=(-10)%3;
                System.out.println(a);
        }

}
结果是-1
作者: xiewenjian0313    时间: 2016-2-14 23:41
直接写代码,
#include<stdio.h>
int main(void)
{
float a,b,c;
a=-10,b=-3,c=a/b;
printf("%f",c);
return o;
}

# include <stdio.h>

int main(void)
{
        char ch1 = 'A';
        printf("%c\n", ch1);
        char ch2 = 'AA';
        printf("%c\n", ch2);
        char ch3 = 'AAA';
        printf("%c\n", ch3);
        char ch4 = 'AAAA';
        printf("%c\n", ch4);
        
        return 0;
}
希望可以帮到你,余数结果为-1 楼上正解!
作者: xiyecao    时间: 2016-2-16 14:31
楼主新年好,是第一种答案的,因为除法取余的机器算法和算术是相近的,正负取余运算以不越界位原则取范围内最大积,然后被除数减去最大积极为余数,被除数为负数的话商与除数之积不能小于被除数反之被除数为正数的话不能大于被除数,按此操作的话-10/3商-3,3*-3为-9未超出-12,4*-3为-12超出了-10,所以取-9,-10减-9,余-1.
作者: zhao95    时间: 2016-2-19 01:11
-10/3=-3  ,-10%3=-1 类型是整形  所以结尾是一个数字    被除数为负   结果为负。
作者: gxc6073    时间: 2016-3-14 21:53
答案是-1,余数的正负和被除数相同
作者: 赵浩霖    时间: 2016-3-18 21:52
geqiandesiyu 发表于 2015-11-15 20:15
10%-3等于1;   

-10%3等于-1;

对符号由第一个数决定
作者: hjh987099654    时间: 2016-3-19 14:55
第二种,没有余负数的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2