读书人

C语言实现求绝对值的有关问题

发布时间: 2012-05-12 15:39:31 作者: rapoo

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);
}
[解决办法]
楼主通过位运算来求绝对值算是不错的了。但是你要把边界值在内存的实际位理解了再动手哦。

C/C++ code
#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;}
[解决办法]
请问那个内存的实际位是什么意思,或者说要具备哪些知识,是数据结构的知识嘛?
探讨
楼主通过位运算来求绝对值算是不错的了。但是你要把边界值在内存的实际位理解了再动手哦。

C/C++ code

#include <stdio.h>
int main()
{
int num;
printf("Enter a negative number:\n");
scanf("%d",&num);
if(num<0)
num=-num;
printf("the……

[解决办法]
那要看楼主的需求了,对输入有何要求,如果用户保证输入的是整数,那只用判断头一个字符是否负号就可以了。
临界问题要看你是哪个界了。
C/C++ code
#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函数。
[解决办法]
探讨
abs,fabs

读书人网 >C语言

热点推荐