c语言中怎么使一个数除以另一个数的余数恒为非负数

问题描述:

c语言中怎么使一个数除以另一个数的余数恒为非负数
我写的一个如下
#include
int main()
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d",a%b);
return 0;
}
但当我输入的ab为-1 2 时 输出的数就是-1.这是不符合作业要求的
我还写了一个逻辑上好像没问题,但还是不可以
#include
int main()
{
int a,b,c,d;
scanf("%d %d",&a,&b);
if(a0);
printf("%d",d);
}
if(a>0);
{
printf("%d",a%b);
}
return 0;
}
1个回答 分类:综合 2014-10-15

问题解答:

我来补答
a%b中输出结果的正负只与a也就是分子有关,所以当a是负数时你把它转成正的就可以了
#include
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d",a>0?(a%b):(-a%b));
return 0;
}
再问: 我如果输入-5和4,-5=-2*4+3正余数就应该是3,而你给我的输出的结果就是1,还是不对啊
再答: 不好意思,我不知道负数取余怎么算,我还以为跟正数一样呢。 那就把负数那一部分改一下算法。 #include int main() { int a,b,i,c; scanf("%d%d",&a,&b); if(a0) { i=1; while(1){ if(-a
 
 
展开全文阅读
剩余:2000