简单的:二进制 十进制 互转;
程序代码:#include <stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
long s_c, a, b = 0, c = 0, i = 1, p_d;
printf("请输入需要转换为二进制的整数:");
scanf_s("%d", &s_c);
printf("2=》10请输入10;10=》2请输入2:");
scanf_s("%d", &p_d);
if(p_d==2)
{
if (s_c > 1) //用2辗转相除至结果为1 将余数和最后的1从下向上倒序写 就是结果
{
while (s_c > 1) //4位数转2进制 变量C i溢出;
{
a = s_c / 2;
b = (s_c % 2)*i + b;
i = i * 10;
c = i;
s_c = a;
}
b = c + b;
printf("转换的二进制为:%d\n", b);
}
else if (s_c == 1)
{
printf("转换的二进制为:1\n");
}
else
printf("请输入数字");
}
else if (p_d==10)
{
a = s_c; //此处把输入值给a用于循环判断位数 不改变S_C的值。
while (a >= 10) // |
{ // |
i++; // |
a = a / 10; // |
} //此处把输入值给a用于循环判断位数 不改变S_C的值。
a = 0; //此处让变量a归零进入存储下一步的计算。
for (; i >0; i--) //从最后一位开始算,依次列为第0、1、2...位 第n位的数(0或1)乘以2的n次方 得到的结果相加就是答案
{
a = a + (s_c / (int)pow(10, i - 1) % 10) * ((int)pow(2, i - 1));
}
printf("%d\n", a);
}
system("Pause");
return 0;
}刚学的写了个小转换程序,有部分功能未实现,感觉算法有问题 也有BUG。求各位大神指点。


