c언어/c언어 (문제풀기)

c언어 배열을 이용해 10진수를 2진수로 바꾸기

byeol2ing 2017. 8. 11. 09:19
반응형


사용자로부터 10진수 형태로 정수를 하나 입력받은 다음 2진수로 변환해서 출력하는 프로그램을 작성해보자.


12를 2진수로 바꾸면, 1100 이 된다.

방법은 다음과 같다.

12를 2로 나눈다. 몫은 6 나머지는 0이된다.

몫인 6을 2로 나눈다. 몫은 3 나머지는 0이된다.

몫인 3을 2로 나눈다. 몫은 1 나머지는 1이된다.

몫인 1을 2로 나눈다. 몫은 0 나머지는 1이된다.


나머지들을 거꾸로 써주면, 1100이 된다.


이과정을 프로그램으로 만들어보면,



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
int main()
{
    int a,c,i; 
    int b[20]={0};
    int count=-1;
 
    printf("정수를 입력해주세요.");
    scanf("%d",&a);
 
    for(i=0;i<20;i++//20번 돌아간다.
    {
 
        if(a>0)             //a가 0보다 크다면,(몫이 0보다 큰경우까지만 2로 나눈다)
        {
            c=a/2;           //c에 a를 2로 나눈수를 대입시킨다.
            b[i]=a%2;        //b배열에 b[0]부터 2로나눈나머지숫자를 대입시킨다.
            a=c;             //a를 2로 나눈수 (c)를 a에 다시 대입시킨다.
 
            count=count+1;        //count를 증가시킨다. b[i]의 i와 같은 수.
        } 
    }
 
 
    for(i=count;i>=0;i--)         //i가 count 즉 b[i]의 가장 마지막까지 들어간숫자부터 b[0]까지 반복한다.
    {
        printf("%d",b[i]);       //반복하여 출력시켜준다.
    }
    
 
 
 
 
 
}
cs


반응형