Member 14657607 Ответов: 1

Я запутался, чтобы написать этот код... Кто - нибудь, помогите мне... Я студентка первого курса.


Программа преобразования в 'C'... Я попробовал, но не до конца. Ожидаемый результат не достигнут. Помоги мне решить эту проблему...

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ:
==========================================
decimal value = 112	        	
binary·value·=·43	        	
octal·value·=·166	        	
hex·value·=·41970	       
ascii char = a


МОЙ ВЫХОД:
============================================
decimal value = 112

octal·value·=·246

hex·value·=·1093879346

ascii·char·=·97


Что я уже пробовал:

#include <stdio.h>
void main() {
	int decimalValue = 112;
	printf("decimal value = %d\n", decimalValue);  // use the correct formating char to print the decimal integer value
	int binaryValue = 101011; //this should be correctly represented as a binary
	printf("binary value = %b\n", binaryValue);
	int octalValue = 246; //this should be correctly represented as an octal
	printf("octal value = %d\n", octalValue);
	int hexValue = 'A3F2'; //this should be correctly represented as hexadecimal
	printf("hex value = %d\n", hexValue);
	int asciiValue = 97;
	printf("ascii char = %d\n", asciiValue); // use the correct formating char after % to print the ascii char
}

1 Ответов

Рейтинг:
5

OriginalGriff

Нет, у вас неправильные значения для ваших констант:

int decimalValue = 112;

Правильно - база по умолчанию для C является десятичной.
int binaryValue = 101011;
Неверно - это опять же основание 10, или десятичное число. Попробовать это:
int binaryValue = 0b101011;

int octalValue = 246;
Опять же, база 10. Попробуй:
int octalValue = 0246;

int hexValue = 'A3F2';
Неверно: это символ, и многим системам он не понравится, так как это "многосимвольная символьная константа".
Попробуй:
int hexValue = 0xA3F2;

int asciiValue = 97;
Это просто бессмысленно. Если вам нужен символ ASCII, то укажите символ ASCII:
int asciiValue = 'a';

И - кстати - "%b" не является действительным printf формат кода!
Но... они не будут печатать так, как вы хотите!
Числа не имеют никакого формата, и они не "помнят", в какой базе было введено значение, когда оно было введено - все это преобразуется в двоичный код для хранения и форматируется, когда оно преобразуется в строку для отображения.
Если вы хотите печатать значения в dec, hex или octal, вам нужно использовать правильный спецификатор с помощью printf:
%d   Decimal
%o   Octal
%x   Hexadecimal, lowercase : "af7"
%X   Hexadecimal, uppercase : "AF7"
Нет никакого "стандартного" способа печати двоичных файлов, но это может помочь: c - есть ли конвертер printf для печати в двоичном формате? - переполнение стека[^]


CPallini

5.