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 |
반응형