Перевод из 10 системы счисления в 2 - C (СИ) (77593)
Формулировка задачи:
Суть такова!
Есть програма на паскале,которая переводит 10 систему числения в 2
я решил перегнать в borland C(чистый С),и вот что получилось:
Но в результате я получаю только "0"..подскажите в чем ошибка..
program test;
uses crt;
var b:array [1..255] of integer;
a,i,n:integer;
begin
clrscr;
write('Vvedite a=');
readln(a);
i:=0;
while a>=1 do
begin
i:=i+1;
b[i]:=a mod 2;
a:=a div 2;
end;
n:=i;
for i:=n downto 1 do
write(b[i]:3);
readln;
end.#include <stdio.h>
#include <conio.h>
#include <math.h>
void main(){
int b[255];
int a,i,n;
puts("Vv a");
scanf("%i",&a);
i=0;
while (a>=1){
i=i+1;
b[i]=a%2;
a=a/2;}
n=i;
for (i = n; i>0; i--)
{
printf("%i",a);
}}Решение задачи: «Перевод из 10 системы счисления в 2»
textual
Листинг программы
#include <stdio.h>
int main()
{
int b[255];
int a,i,n;
puts("Vv a");
scanf("%d", &a);
i = 0;
while (a>=1)
{
i = i + 1;
b[i] = a % 2;
a = a / 2;
}
n = i;
for (i = n; i > 0; i--)
{
printf("%d",b[i]);
}
getchar();
getchar();
return 0;
}
Объяснение кода листинга программы
Вывод:
- Объявлены следующие переменные: b[255] - массив, в который будут записываться результаты перевода из 10 системы счисления в 2. a, i, n - переменные для выполнения алгоритма.
- Программа запрашивает число для перевода и сохраняет его в переменной
a. - Переменная
iинициализируется нулем. Она используется для индексации массиваb. - Запускается цикл, который выполняется до тех пор, пока
aбольше или равно 1. - Внутри цикла выполняются следующие действия:
- Увеличивается значение
iна единицу. - В массивbзаписывается остаток от деленияaна 2. - Значениеaделится на 2. - После выполнения цикла, значение
iприсваивается переменнойn. - Запускается цикл, который выполняется до тех пор, пока значение
iбольше нуля. - Внутри цикла выполняется печать значения элемента массива
bс индексомi. - В конце программы запрашивается ввод символа.
- Возвращается 0, что означает успешное выполнение программы.