关于进制相加的问
怎样写一个程序使得它们有各种进制相加的功能,
例如二进制相加,八进制相加,等,进制是人为输入,并且输入相加数,但是相加规则必须受进制限制.各位高手们请说详细点,我也就这个学期才学c的.
谢谢
[解决办法]
我来坐沙发,各种进制数相加就是操作ASCII码,这个还是要楼主自己想一想自己实现的效果好,我就提示到这,呵呵
[解决办法]
C语言数据结构《任意进制转换》:
http://blog.f177.com/article.asp?id=99
[解决办法]
C实例:任意进制数的转换:
http://www.nou.com.cn/cms/cxsj/10058/page.action
[解决办法]
首先明白进制间的转换原理,
然后看看这些代码吧。
一个办法就是通过统一转换到指定进制,
进行 相加,
然后转换到原给定进制即可。
不过,
如果仅仅是8、10、16这三个计算机内置支持的数据进制表示方式和2进制这个计算机内部使用的进制方式,那么可以不用考虑转化的问题。
[解决办法]
atoi()把各种进制的“BCD”码转为标准int再+-*/最后itoa()转成“BCD”
注意上面的BCD指的是1char一个数字0结尾的字符串
[解决办法]
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x, y, result, radix;
char a[32], b[16];
printf( "Input the radix, 2/8/10/16: "); //输入进制
scanf( "%d ", &radix);
while(!((radix == 2)||(radix == 8)||
(radix == 10)||(radix == 16))) //验证进制的输入是否为2/8/10/16之一
{
printf( "Input Error!!, Again:\n ");
printf( "Input the radix, 2/8/10/16: ");
scanf( "%d ", &radix);
}
switch(radix) //根据进制操作
{
case 2: //2进制使用字符串方式进行转换 求和 和结果的表达
printf( "Input x= ");
scanf( "%s ", a);
printf( "Input y= ");
scanf( "%s ", b);
result = strtol(a, NULL, 2)+strtol(b, NULL, 2);
itoa(result, a, 2);
printf( "Result = %s\n ", a);
break;
case 8: //8/10/16 进制可以直接用格式控制符号进行控制。
printf( "Input x= ");
scanf( "%o ", &x);
printf( "Input y= ");
scanf( "%o ", &y);
result = x+y;
printf( "Result = %o\n ", result);
break;
case 10:
printf( "Input x= ");
scanf( "%d ", &x);
printf( "Input y= ");
scanf( "%d ", &y);
result = x+y;
printf( "Result = %d\n ", result);
break;
case 16:
printf( "Input x= ");
scanf( "%x ", &x);
printf( "Input y= ");
scanf( "%x ", &y);
result = x+y;
printf( "Result = %o\n ", result);
break;
}
system( "PAUSE ");
return 0;
}
程序没有输入错误控制,
比如输入2进制,
x=101
y=110
输出 result=1011