合肥市建设工程市场价格信息网站,在线做交互网站,做棋牌游戏网站赚钱吗,网站建设 印花税1.思路#xff1a;除2取余法#xff0c;也就是说用除以2取余来将10进制数转换为二进制
2.两种代码实现#xff0c;这里用了两#xff0c;一个递归一个非递归。 递归是一种编程技术#xff0c;其中一个函数直接或间接地调用自己。递归通常用于解决那些可以被分解为更小的、…1.思路除2取余法也就是说用除以2取余来将10进制数转换为二进制
2.两种代码实现这里用了两一个递归一个非递归。 递归是一种编程技术其中一个函数直接或间接地调用自己。递归通常用于解决那些可以被分解为更小的、相同类型的子问题的问题。 递归函数必须满足两个基本条件 基本情况Base Case这是递归结束的条件通常是一个简单的问题可以直接解决而不需要进一步的递归调用。递归步骤Recursive Step这是函数调用自己的部分它将问题分解成更小的子问题。 递归的工作原理可以类比为数学中的等比数列求和或者像是一个俄罗斯套娃每个问题都包含了一个更小的问题直到达到基本情况。 3.代码实现
1递归:这里定义了一个printBinary函数它递归地将输入的10进制数除以2并打印出余数直到10进制数变为0。在main函数中程序会提示用户输入一个10进制数然后调用printBinary函数来打印出对应的二进制表示。
#include stdio.h// 函数用于打印二进制表示除2取余
void printBinary(int decimal) {if (decimal 0) {printBinary(decimal / 2);printf(%d, decimal % 2);}
}int main() {int decimal;printf(请输入一个10进制数: );scanf(%d, decimal);if (decimal 0) {printf(负数的二进制表示不是标准的,这里错误请重输\n);} else {printf(该10进制数的二进制表示为: );printBinary(decimal);printf(\n);}return 0;
} 2非递归:这个程序首先检查输入的数是否为负数如果是打印负号并取其绝对值。然后使用一个循环来不断地将10进制数除以2并取余数将余数作为二进制的最低位然后乘以10的相应次方累加到binary变量中。循环继续直到10进制数变为0。最后打印出得到的二进制数。
#include stdio.h
#include math.h//pow()int main() {int decimal, binary 0, remainder, i 0;printf(请输入一个10进制数: );scanf(%d, decimal);// 处理负数if (decimal 0) {printf(-);decimal -decimal; // 取其绝对值}// 循环直到decimal为0while (decimal 0) {remainder decimal % 2;binary binary (remainder * (int)pow(10, i));decimal decimal / 2;i;}printf(该10进制数的二进制表示为: %d\n, binary);return 0;
}