C语言实现求绝对值的问题
#include <stdio.h>
void main()
{
int num;
printf("Enter a negative number:\n");
scanf("%d",&num);
num=~0^num;
printf("the absolute value:%d\n",num+1);
}
此方法在32位系统下,临界值有问题,求高手正解,或,其它方法
[解决办法]
#include <stdio.h>
void main()
{
int num;
printf("Enter a negative number:\n");
scanf("%d",&num);
if(num<0)
num=-num;
printf("the absolute value:%d\n",num);
}
[解决办法]
楼主通过位运算来求绝对值算是不错的了。但是你要把边界值在内存的实际位理解了再动手哦。
#include <stdio.h>int main(){int num;printf("Enter a negative number:\n");scanf("%d",&num);if(num<0)num=-num;printf("the absolute value:%d\n",num);return 0;}
[解决办法]
请问那个内存的实际位是什么意思,或者说要具备哪些知识,是数据结构的知识嘛?
#include <stdio.h>int main(){char num[512];char *p;printf("Enter a negative number:\n");scanf("%s",&num);if(num[0]=='-') p=&num[1];else p=num;printf("the absolute value:%s\n",p);}
[解决办法]
abs,fabs
[解决办法]
num=~0^num;
假设num的位是“0000 0000 0000 1001”
这条语句的意思是
0^num=“0000 0000 0000 1001”
~=“1111 1111 1111 1001”
获得的是反码,反码=相反数?!
[解决办法]
用math库
[解决办法]
为什么不用:unsigned int类型呢?或者fabs函数。
[解决办法]