我对C很新,所以我对此并不了解。指针是我还没有学到的东西...... 我需要以十进制和二进制显示单个字符。它在十进制中很简单,但我无法以任何方式将其转换为二进制...我得到了ASCII数字,并将它与2的模块进行比较,但它显示了一个非常尴尬的数字......出了什么问题代码?(它用葡萄牙语写的 这是我的代码:
#include <stdio.h>
#include <conio.c> //library my professor created to assist his students
#include <string.h>
#define MAXIMO 8
int main( void )
{
char caracter;
int aux, resto[MAXIMO], contador, decimal, numero;
printf( "Digite um UNICO caracter: " );
caracter = getch();
numero = caracter;
decimal = caracter;
aux = 0;
do
{
if (numero % 2 == 0)
{
resto[aux] = 0;
}
else
{
resto[aux] = 1;
}
numero = numero / 2;
aux++;
}
while (numero >= '0');
//system("cls");
printf( "\n\n%d\n\n", aux );
printf( "\nCaracter em Binario: " );
for (contador = aux; contador >= 0; contador--)
{
printf( "%d", resto[contador] );
}
printf( "\nValor decimal do caracter: %d", decimal );
getch();
return 0;
}
我使用的东西就像getch();并返回0;最后只是让我的老师不要杀了我......我不完全知道为什么会这样,但必须如此。
答案 0 :(得分:1)
您的代码在while
条件中出现了一些错误:
#include <stdio.h>
#include <string.h>
#define MAXIMO 8
int main( void )
{
char caracter;
int aux, resto[MAXIMO], contador, decimal, numero;
printf( "Digite um UNICO caracter: " );
caracter = getchar(); // I used getchar instead of getch()
numero = caracter;
decimal = caracter;
aux = 0;
do
{
if (numero % 2 == 0)
{
resto[aux] = 0;
}
else
{
resto[aux] = 1;
}
numero = numero / 2;
aux++;
}
while (numero > 0); // > than 0 not >= '0'
//system("cls");
printf( "\n\n%d\n\n", aux );
printf( "\nCaracter em Binario: " );
for (contador = aux-1; contador >= 0; contador--) //aux-1
{
printf( "%d", resto[contador] );
}
printf( "\nValor decimal do caracter: %d", decimal );
getchar();
return 0;
}
>
(更高)和>=
(更大或相等)不同含义