求十进制转换二进制C语言代码

如果不愿意帮忙,可以无视,请不要讲风凉话... 如果不愿意帮忙,可以无视,请不要讲风凉话 展开
 我来答
有友星16
推荐于2019-10-27 · TA获得超过2765个赞
知道答主
回答量:8
采纳率:0%
帮助的人:6960
展开全部

求十进制转换二进制C语言代码代码如下:

#include <stdio.h>

#define  NR (sizeof(int)*8)  // 二进制位的个数

void deciToBin(int num); // 十进制转换为二进制函数声明

/* 主函数 */

int main(void)

{

int num;

fprintf(stdout, "请输入一个正整数:");

/* 获取并检查用户输入 */

while (1)

{

if (fscanf(stdin, "%d", &num) != 1)

{

fprintf(stderr, "输入错误!请重新输入:");

while (getchar() != '\n'); // 去掉多余的非法字符 

continue;

}

else if (num < 0)             // 输入的数不能为负数

{

fprintf(stderr, "请输入错误!请输入正整数:");

continue;

}

else

break;

}

fprintf(stdout, "对应二进制为:");

#if 1 /* 方法一: 不使用递归 */

char bitArr[NR];

int i = -1;

/* 算法:栈的数学模型 */

do {

i += 1;

bitArr[i] = num % 2;

num /= 2;

} while (num != 0);

/* 逆序打印 */

for (i ; i >= 0; i--)

{

fprintf(stdout, "%d", bitArr[i]);

}

fputc('\n', stdout);

#else /* 方法二: 使用递归 */

if (num == 0)

{

fprintf(stdout, "0\n");

}

else

{

deciToBin(num);       // 调用第归函数

fputc('\n', stdout);

}

#endif  

return 0;

}

/*

* @函数名:deciToBin

* @函数功能:实现十进制转换为二进制

* @参数:需要转换的十进制整数

*/

void deciToBin(int num)

{

/* 第归结束条件 */

if (num == 0)

{

return;

}

/* 第归调用 */

deciToBin(num/2);

/* 逆序打印 */

fprintf(stdout, "%d", num%2);

}

扩展资料:

使用C语言编程实现任意进制数(2-16进制)转换为其他任意进制数(2-16进制)方法:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int TenNum(char a[],int B);

void Numchange(int m, int B);

int TenNum(char a[], int B)

{

int len, i, num;

int sum = 0;     

len = strlen(a);

for (i = 0; i < len; i++)

{

if (a[i] >= '0' && a[i] <= '9')

num = a[i] - '0';

else if (a[i] >= 'A' && a[i] <= 'F')

num = a[i] - 'A' + 10;

sum = sum * B + num;

}

return sum;

}

void Numchange(int m, int B)

{

int n;

if (m)

{

Numchange(m / B, B);

n = m % B;

if (n < 10)

printf("%d", n);

else

printf("%c", n + 55);

}

}

int main()

{

int B, b;

char a[20];       

printf("请输入待转换数的进制(2-16):");

do {

scanf_s("%d", &B);         

} while (B < 2 && B > 16);

printf("请输入待转换数:");

getchar();         

gets_s(a);

int m = TenNum(a, B);

printf("请输入需要转成几进制数(2-16):");

do {

scanf_s("%d", &b);

} while (B < 2 && B > 16);

printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);

Numchange(m, b);

printf("\n");

system("pause");

return 0;

}

丘雅可4f
2019-12-17
知道答主
回答量:3
采纳率:0%
帮助的人:2224
展开全部
因为没有以二进制输入的“%”的格式所以麻烦了点。(有错见谅)
#include<stdio.h>
int change(int k);
int main()
{
int n;
printf("进制转换:\n");
printf("请输入一个十进制数:");
scanf("%d",&n);
printf("转换成二进制是:%d\n",change(n));
printf("转换成八进制是:0%o\n",n);
printf("转换成十六进制是:0x%x\n",n);
}
int change(int k)
{
int i=1,j,m,s=0;
m=k;
while(m)
{
j=m%2;
s+=j*i;
i*=10;
m/=2;
}
return(s);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋天来了仔陈
2009-06-16 · TA获得超过2145个赞
知道小有建树答主
回答量:843
采纳率:0%
帮助的人:839万
展开全部
#include "stdlib.h"
void main()
{
int n,x=0,a[100];
printf("请输入转换的数:\n");
scanf("%d",&n);
while(n)
{
a[x++]=n%2;
n/=2;
}
--x;
while(x>=0)
printf("%d",a[x--]);
}
给你吧蛮简单的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hpmv
推荐于2017-09-22 · TA获得超过886个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:157万
展开全部
#include <stdio.h>

int main()
{
int a;
scanf("%d", &a);
int i=0;
int bin[32];

while(a>0)
{
bin[i]=a%2;
a/=2;
i++;
}
for(int j=i-1;j>=0;j--)
printf("%d",bin[j]);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式