int 逐个转 char

主要是运用 单个 char = int + '0'; 技术
#include <stdio.h>
#define MAXDIM	80

short dec2bin(int d, char *b)
{
	short i = MAXDIM; /* so che b e' un array di MAXDIM + 1 char */
	
	/* introduco il carattere di terminazione nell'ultima posizione dell'array b */
	b[MAXDIM] = 0;
	/* ciclo trovando una cifra binaria per volta, dalla meno significativa alla */
      /* piu' significativa; in altri termini, da destra a sinistra */
	do {
		/* sommo '0' per passare dal valore intero 0 o 1 al valore del codice */
            /* ASCII di '0' o '1' */
		b[--i] = (d % 2) + '0'; 
		d /= 2;
	} while(d >= 1);
      /* i adesso e' la posizione iniziale in b della stringa binaria */
	return i;
}

int bin2dec(char *b)
{
	short i,c;
	int n = 0;

	/* ciclo sulle cifre binarie dalla piu' significativa alla meno significativa */
	for(i = 0; b[i]; i++) {
		/* assegno a c il valore corrispondente alla i-esima cifra binaria */
		c = b[i] - '0';
		/* moltiplico *2 il valore corrispondente alle prime i-1 cifre */
		n *= 2;
		/* gli sommo la i-esima cifra */
		n += c;
	}
	return n;
}

int main(void)
{
	int d;
	char b[MAXDIM + 1];
	short i;

	printf("Immetti numero (nonnegativo) in base 10 da convertire in base 2:\n");
	/* uso il valore di ritorno di scanf per controllare se l'utente ha effettivamente immesso un numero */
	if((scanf("%d",&d) != 1) || d < 0) {
		fprintf(stderr, "Errore nell'immissione del numero nonnegativo.\n");
		return -1;
	}
	i = dec2bin(d,b);
	printf("%d in base 10 si scrive %s in base 2\n",d,&b[i]);
	d = bin2dec(&b[i]);
	printf("%s in base 2 equivale a %d in base 10\n",&b[i],d);
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值