C语言中的取模符号讨论

整理以前的代码,发现一个取模的测试用例,针对正负进行了讨论。

 

#include <stdio.h>

int main(int argc, char **argv)
{
    int x,y;
    printf("Input X >0 and Y>0 \n");
    scanf("%d%d",&x,&y);
    printf("%d%%%d=%d  , %d/%d=%d\n",x,y,x%y,x,y,x/y);
    y= -y;
    printf("%d%%%d=%d  , %d/%d=%d\n",x,y,x%y,x,y,x/y);
    x=-x;
    printf("%d%%%d=%d  , %d/%d=%d\n",x,y,x%y,x,y,x/y);
    y = -y;
    printf("%d%%%d=%d  , %d/%d=%d\n",x,y,x%y,x,y,x/y);
    return 0;    
}

测试结果为

Input X >0 and Y>0
34 6
34%6=4  , 34/6=5
34%-6=4  , 34/-6=-5
-34%-6=-4  , -34/-6=5
-34%6=-4  , -34/6=-5

x%y=a*y+b

a的符号与x一致即可。

b的符号与x*y的符号保持一致.

 

 

posted @ 2012-05-04 14:51  westfly  阅读(1044)  评论(0编辑  收藏  举报