简单的:二进制 十进制 互转;
程序代码:
#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。求各位大神指点。