请用一个很简单的C语言程序:十进制转换为二进制。

请用一个很简单的C语言程序:十进制转换为二进制。,第1张

#include "stdio.h"

int main()

{

   int n

   int i=0,j

   char str[100]={0}

   char output[100]={0}

   printf("请输入一个整数:")

   scanf("%d",&n)

   while(n)

   {

         str[i]=n%2+'0'

         n=n/2

         i++

   }

   for(j=0j<ij++)

       output[j]=str[i-1-j]

   printf("该整数的二进制表示为:%s\n",output)

 

}

求十进制转换二进制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 >= 0i--)

{

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 = 0i <leni++)

{

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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11186907.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存