C语言中怎样调用函数将十进制转换成二进制? 十进制转化二进制,c语言用调用函数

C\u8bed\u8a00\u7528\u51fd\u6570\u7684\u9012\u5f52\u8c03\u7528\u5c06\u5341\u8fdb\u5236\u6570\u8f6c\u5316\u4e3a\u4e8c\u8fdb\u5236\u6570

#include
#define n 20
void change2(int t)
{ //\u5c06\u5341\u8fdb\u5236\u6570\u8f6c\u6362\u5230\u5b58\u653e\u4e8c\u8fdb\u5236\u7684\u6570\u7ec4\u4e2d
int i;
int b[n]={0};
for(i=0;i<20;i++)
{
b[i]=t%2;
t=t/2;
}
for(i=n-1;i>=0;i--)
{
printf("%d",b[i]);
}
printf("\n");
}

void main(){
int demo;
printf("\u8bf7\u8f93\u5165\u4e00\u4e2a\u5341\u8fdb\u5236\u6570\uff1a");
scanf("%d",&demo);
change2(demo);
}

1\u3001\u6253\u5f00visualC++6.0-\u6587\u4ef6-\u65b0\u5efa-\u6587\u4ef6-C++SourceFile\u3002




2\u3001\u8f93\u5165\u9884\u5904\u7406\u547d\u4ee4\u548c\u4e3b\u51fd\u6570\uff1a

#include /*\u8f93\u5165\u8f93\u51fa\u5934\u6587\u4ef6*/

voidmain()/*\u7a7a\u7c7b\u578b\uff1a\u4e3b\u51fd\u6570*/



3\u3001\u5b9a\u4e49\u53d8\u91cf\u548c\u6570\u7ec4\u7684\u6570\u636e\u7c7b\u578b\u5e76\u8f93\u5165\u4e00\u4e2a\u5341\u8fdb\u5236\uff1a

intb[16],x,k,r,i;/*\u5b9a\u4e49\u53d8\u91cf\u548c\u6570\u7ec4\u7684\u6570\u636e\u7c7b\u578b\u4e3a\u6574\u578b*/

printf("\u8f93\u5165\u4e00\u4e2a\u5341\u8fdb\u5236:");/*\u8f93\u51fa\u6587\u5b57\u63d0\u793a*/

scanf("%d",&x); /*\u8f93\u5165\u4e00\u4e2a\u5341\u8fdb\u5236\u6570\u5b57*/

k=-1;/*\u5c06-1\u8d4b\u7ed9k*/



4\u3001\u7528\u9664R\u53d6\u4f59\u5012\u8ba1\u6cd5\u5c06\u5341\u8fdb\u5236\u7684\u6570\u8f6c\u5316\u6210\u4e8c\u8fdb\u5236\u7684\u6570\uff1a

do/*\u7528\u5faa\u73af\u5c06\u5341\u8fdb\u5236\u7684\u6570\u8f6c\u5316\u6210\u4e8c\u8fdb\u5236\u7684\u6570*/

{

r=x%2;/*\u7528\u9664R\u53d6\u4f59\u5012\u8ba1\u6cd5\u8ba1\u7b97\u4e8c\u8fdb\u5236*/

b[++k]=r;/*\u5c06\u503c\u8d4b\u7ed9\u6570\u7ec4*/

x/=2;/*\u5c06\u539f\u6570\u96642*/

}while(x>=1);



5\u3001\u8f93\u51fa\u7ed3\u679c\uff1a

for(i=k;i>=0;i--) /*\u5c06\u4e0a\u9762\u5012\u8ba1\u7684\u6570\u6b63\u56de\u6765*/

printf("%d",b[i]);/*\u8f93\u51fa\u7ed3\u679c*/

printf("\n");



6\u3001\u5b8c\u6574\u7684\u6e90\u4ee3\u7801\uff1a

#include /*\u8f93\u5165\u8f93\u51fa\u5934\u6587\u4ef6*/

voidmain()/*\u7a7a\u7c7b\u578b\uff1a\u4e3b\u51fd\u6570*/

{

intb[16],x,k,r,i;/*\u5b9a\u4e49\u53d8\u91cf\u548c\u6570\u7ec4\u7684\u6570\u636e\u7c7b\u578b\u4e3a\u6574\u578b*/

printf("\u8f93\u5165\u4e00\u4e2a\u5341\u8fdb\u5236:");/*\u8f93\u51fa\u6587\u5b57\u63d0\u793a*/

scanf("%d",&x); /*\u8f93\u5165\u4e00\u4e2a\u5341\u8fdb\u5236\u6570\u5b57*/

k=-1;/*\u5c06-1\u8d4b\u7ed9k*/

do/*\u7528\u5faa\u73af\u5c06\u5341\u8fdb\u5236\u7684\u6570\u8f6c\u5316\u6210\u4e8c\u8fdb\u5236\u7684\u6570*/

{

r=x%2;/*\u7528\u9664R\u53d6\u4f59\u5012\u8ba1\u6cd5\u8ba1\u7b97\u4e8c\u8fdb\u5236*/

b[++k]=r;/*\u5c06\u503c\u8d4b\u7ed9\u6570\u7ec4*/

x/=2;/*\u5c06\u539f\u6570\u96642*/

}while(x>=1);

for(i=k;i>=0;i--) /*\u5c06\u4e0a\u9762\u5012\u8ba1\u7684\u6570\u6b63\u56de\u6765*/

printf("%d",b[i]);/*\u8f93\u51fa\u7ed3\u679c*/

printf("\n");

}

1、打开visualC++6.0-文件-新建-文件-C++SourceFile。

2、输入预处理命令和主函数:

#include<stdio.h>           /*输入输出头文件*/

voidmain()/*空类型:主函数*/

3、定义变量和数组的数据类型并输入一个十进制:

intb[16],x,k,r,i;/*定义变量和数组的数据类型为整型*/

printf("输入一个十进制:");/*输出文字提示*/

    scanf("%d",&x);         /*输入一个十进制数字*/

k=-1;/*将-1赋给k*/

4、用除R取余倒计法将十进制的数转化成二进制的数:

do/*用循环将十进制的数转化成二进制的数*/

{

r=x%2;/*用除R取余倒计法计算二进制*/

b[++k]=r;/*将值赋给数组*/

x/=2;/*将原数除2*/

    }while(x>=1);

5、输出结果:

    for(i=k;i>=0;i--)        /*将上面倒计的数正回来*/

printf("%d",b[i]);/*输出结果*/

printf("
");

6、完整的源代码:

#include<stdio.h>           /*输入输出头文件*/

voidmain()/*空类型:主函数*/

{

intb[16],x,k,r,i;/*定义变量和数组的数据类型为整型*/

printf("输入一个十进制:");/*输出文字提示*/

    scanf("%d",&x);         /*输入一个十进制数字*/

k=-1;/*将-1赋给k*/

do/*用循环将十进制的数转化成二进制的数*/

{

r=x%2;/*用除R取余倒计法计算二进制*/

b[++k]=r;/*将值赋给数组*/

x/=2;/*将原数除2*/

    }while(x>=1);

    for(i=k;i>=0;i--)        /*将上面倒计的数正回来*/

printf("%d",b[i]);/*输出结果*/

printf("
");

}



如果是在windows下,可以使用itoa()函数来进行转换,如:

#include <stdio.h>
#include <stdlib.h>
void main()
{
char str[100];
int n=100;
itoa( n, str, 2 );
printf("%s
", str );
}

itoa是广泛应用的非标准C语言扩展函数。由于它不是标准C语言函数,所以不能在所有的编译器中使用。

头文件:#include <stdlib.h>

函数原型:char*itoa(int value,char*string,int radix);

函数说明:int value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等,将数字按要求转换为对应进制的字符串

因为itoa并不是一个标准的C函数,它是Windows特有的,所以若在linux下进行二进制转换,就要自己动手自定义函数来实现了。

通用版本参考代码:



void printBinary(int n)
{
if(n>1)printBinary(n/2);
printf("%d",n%2);
}

这样就可以把十进制的n变成二进制数出

void printfBinary(unsigned int n)
{
if (n != 0)
{
printfBinary(n >> 1);
printf("%d", (n & 1));
}
}
这样就可以把十进制的n变成二进制输出

#include "stdio.h"
#include "stdlib.h"

#define MAX 50
#define OK 1
#define ERROR 0
#define YES 1
#define NO 0

typedef int ElemType;
typedef int Status;
typedef struct tagStack{
ElemType data[MAX];
int top;
}Stack;

void InitStack(Stack *s){
s->top=-1;
}

Status isEmpty(Stack *s){
if(s->top==-1) return YES;
return NO;
}

Status Push(Stack *s,ElemType elme){
if(s->top>MAX)return ERROR;
s->top++;
s->data[s->top]=elme;
return OK;
}

ElemType Pop(Stack *s){
if(s->top==-1) return -1;
return s->data[s->top--];
}
void zhuanhuan(int flag,int n)
{
int b;
ElemType elemy;
Stack mystack;
InitStack(&mystack);
while(flag!=0){
b=flag%2;
if(Push(& mystack,b)==ERROR){
printf("ERROR\n");
break;
}
flag=flag/n;

}
printf("\n");
while(isEmpty(& mystack)!=YES){
elemy=Pop(& mystack);
printf("%d ",elemy);
}
printf("\n");

}

void run()
{
int num,choice,n;
printf("\n\t*Please input a number you want exchange:");
scanf("%d",&num);
if(num<0)
{printf("You must input a number(>0)\n");
scanf("%d",&num); }
printf("input you want zhuanhuan de jinzhi :") ;
scanf("%d",&n);
zhuanhuan(num,n);
}
void main()
{
run();
}

  • 鐢C璇█濡備綍鎶婂崄杩涘埗杞崲涓鍗佸叚杩涘埗,瑕佹眰绋嬪簭涓繍鐢鍑芥暟
    绛旓細printf("璇ユ暟鐨勫崄鍏繘鍒跺舰寮忎负锛0x%x\n",num);//鐩存帴浠ュ崄鍏繘鍒剁殑褰㈠紡灏嗘暣鏁拌緭鍑 change(num);} void change(int s){ char num1[10];sprintf(num1,"%x",s);//sprintf()鍑芥暟鏄皢鍙橀噺鎸夋寚瀹氱殑鏍煎紡淇濆瓨鑷冲瓧绗︿覆涓俻rintf("璇ユ暟鐨勫崄鍏繘鍒跺舰寮忎负锛0x%s\n",num1);} 璇存槑锛歞 浠鍗佽繘鍒...
  • 鐢鍑芥暟瀹炵幇,灏嗕竴涓鍗佽繘鍒鏁,杞崲鎴鐩稿簲鐨浜岃繘鍒舵暟骞惰緭鍑
    绛旓細include <iostream.h> void divideData(const float number, int &integer, float &decimal); //鍒嗙鍑烘暣鏁板拰灏忔暟閮ㄥ垎.void printBinaryForInteger(int &integer); //鎵撳嵃鏁存暟閮ㄥ垎鐨勪簩杩涘埗褰㈠紡.void printBinaryForDecimal(float &decimal); //鎵撳嵃灏忔暟閮ㄥ垎鐨勪簩杩涘埗褰㈠紡.int main(){ float number;int...
  • c璇█缂栫▼ 鎶婂崄杩涘埗杞崲涓鍗佸叚杩涘埗
    绛旓細鏂规硶涓锛#include<iostream>#include <string>using namespace std;string DecIntToHexStr(long long num){string str;long long Temp = num / 16;int left = num % 16;if (Temp > 0)str += DecIntToHexStr(Temp);if (left < 10)str += (left + '0');elsestr += ('A' + left -...
  • C璇█缂栫▼:鎬庝箞鎶涓涓鍗佽繘鍒舵暟杞崲鎴愪负涓涓崄鍏繘鍒舵暟?
    绛旓細char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};void dToO(int, char*);int main(){ int dNum;char oNum[100] = {0};//杈撳叆涓涓崄杩涘埗鏁 scanf("%d", &dNum);//璋冪敤杞崲鍑芥暟锛灏嗗崄杩涘埗杞崲鎴浠ュ瓧绗︿覆琛ㄧず鐨勫崄鍏繘鍒 dToO(dNum, oNum);//杈撳嚭浠ュ瓧绗︿覆琛ㄧず鐨...
  • 姹傚府鎴戝啓涓C璇█鍑芥暟 灏嗗崄杩涘埗杞寲鎴愪簩杩涘埗
    绛旓細voidprintbinary(intn){ if(n>1)printbinary(n/2);printf("%d",n%2);} 杩欐牱灏卞彲浠鎶婂崄杩涘埗鐨n鍙樻垚浜岃繘鍒舵暟鍑
  • 鐢C璇█缂栧啓涓や釜鍑芥暟,鍒嗗埆瀹屾垚鍗佽繘鍒鍜屼簩杩涘埗涔嬮棿鐨杞崲銆
    绛旓細include <stdio.h>int main(){ int Type,a,b[10],i=0,c=0; printf("璇疯緭鍏ヨ浆鎹㈢被鍨嬶紝1锛鍗佽繘鍒惰浆浜岃繘鍒讹紱2锛氫簩杩涘埗杞崄杩涘埗\n"); scanf("%d",&Type); printf("璇疯緭鍏ュ師鏁版嵁\n"); scanf("%d",&a); switch(Type) { case 1: while(a!=0) {...
  • c璇█,灏嗗崄杩涘埗杞寲涓轰簩杩涘埗
    绛旓細鍗佽繘鍒惰浆浜岃繘鍒跺彲浠ヤ娇鐢ㄥ簱鍑芥暟itoa銆俰toa鍑芥暟鍘熷瀷锛歝har*itoa(int value,char*string,int radix);鍔熻兘锛氬皢浠绘剰绫诲瀷鐨勬暟瀛楄浆鎹负瀛楃涓层傚湪<stdlib.h>涓笌涔嬫湁鐩稿弽鍔熻兘鐨勫嚱鏁鏄痑toi銆俷t value 琚浆鎹㈢殑鏁存暟锛宑har *string 杞崲鍚庡偍瀛樼殑瀛楃鏁扮粍锛宨nt radix 杞崲杩涘埗鏁帮紝濡2,8,10,16 杩涘埗绛夈傚弬鑰冧唬鐮...
  • c璇█鎬庝箞灏嗗崄杩涘埗杞寲鎴愪簩杩涘埗
    绛旓細include <stdio.h> void main(){ //杩涘埗杞崲鍑芥暟鐨澹版槑 int transfer(int x);int x;printf("璇疯緭鍏ヤ竴涓鍗佽繘鍒鏁:");scanf("%d",&x);printf("杞崲鎴浜岃繘鍒舵暟鏄:%d\n",transfer(x));} int transfer(int x){ int p=1,y=0,yushu;while(1){ yushu=x%2;x/=2;y+=yushu*p;p*=10...
  • 璇烽棶鐢C璇█缂栧啓涓涓鍗佽繘鍒惰浆鎹㈡垚浜岃繘鍒舵垨鍏繘鍒舵垨鍗佸叚杩涘埗鐨绋嬪簭闇瑕...
    绛旓細include<stdio.h> voidmain(){ //杩涘埗杞崲鍑芥暟鐨澹版槑 inttransfer(intx);intx;printf("璇疯緭鍏ヤ竴涓鍗佽繘鍒鏁:");scanf("%d",&x);printf("杞崲鎴浜岃繘鍒舵暟鏄:%d\n",transfer(x));} inttransfer(intx){ intp=1,y=0,yushu;while(1){ yushu=x%2;x/=2;y+=yushu*p;p*=10;if(x<2){...
  • 鐢c璇█灏嗗崄杩涘埗杞寲涓杩涘埗鎬庝箞鍋?
    绛旓細鐢ㄥ唴閮鍑芥暟 itoa(v,s,3); v 涓虹粰鍏鐨10杩涘埗鏁锛宻 涓3杩涘埗缁撴灉 瀛楃涓层備緥濡傦細include <stdio.h> int main(){ int v;char s[60];printf("input v:");scanf("%d",&v);itoa(v,s,3);printf("%s\n",s);return 0;} 杈撳叆10锛岃緭鍑101 === 鎵嬪伐璁$畻涔熷彲浠ワ紝鐢ㄤ笉鏂櫎浠3锛屽彇...
  • 扩展阅读:二进制算法最简单教程 ... c语言进制转换编程 ... 二进制口诀表 ... c++中如何调用函数 ... c#的十六进制转十进制 ... 十进制c语言表示方法 ... c语言%几是二进制 ... 十进制转二进制编程 ... 8进制在c语言里的表示方法 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网