다른게 아니구요
일단 풀어야 할 문제가 있어서 그걸 풀긴 풀었는데
궁금한게 있어서 그럽니다
문제는
10진수를 입력하면 2진수를 출력하는 프로그램을 작성하시오
숫자를 입력하시오 >> 12
2진수 : 1100
이거든요
배열에 2로 나눈 수 나머지를 차례로 넣고
거꾸로 출력을 시키는 겁니다
#include <stdio.h>
void main()
{
int N ; // 입력할 10진 수
int k; // 입력할 수가 몇 번 나눠지는가 알기위한 수
int i = 0 ; // 10진수가 2진수로 몇자리 나오는지 저장되는 변수
int j ; // j는 2진수 출력에 쓰이는 반복문 초기값
printf("10진수를 입력하세요 : ") ;
scanf("%d", &N) ;
k = N ; // N을 직접 쓰지 못하므로 따로 k에 N을 대입 ;
while ( k != 0 ) // 입력한 10진수가 2진수로
{ // 몇자리가 나오는지 계산
k = k / 2 ;
i = i + 1 ;
}
int leejin[100] ; // 2진수를 입력할 배열 선언
// 이걸 쓸려고 한게 아니라
// 바로 밑에껄 쓸려고 했습니다
/* ********************************************************
int leejin[i] ; --------->>>> 바로 문제를 일으키는 부분...
*/ ********************************************************
k = N ; // 다시 k에 초기에 입력한 10진수를 대입하여 씀
for ( j = 0 ; j < i ; j++ )
{
leejin[j] = k % 2 ; // 배열에 2진수를 구해서 입력함, 순서는 거꾸로임.
k = k / 2 ;
}
printf("\n이진수 : ") ;
for (j = i-1 ; j >= 0 ; j-- )
{
printf("%d", leejin[j]) ;
}
printf("\n\n\n\n") ;
}
코딩도 개판이고... 주석도 개판인데... 초보려니 하고 이해해 주세요
일단 풀긴 풀었거든요
그런데 원래 위에 별표를 친걸로 배열 선언을 할려고 했습니다
2진수 자리에 꼭 알맞게 하기 위해
배열 선언에 변수를 넣었거든요
for 문을 쓸 때도 배열문 안에 변수를 넣어서 썼던게 생각이 나서
배열을 선언할 때도 충분히 쓸 수 있을 거라고 그렇게 했는데
왠걸?
컴파일 하는데 자랑스럽게도 애러가 뜨더군요
제가 생각하기에... 충~~분히 될 것 같았는데... 쩝...
그래서 할 수 없이 100개 짜리 배열을 선언해서
자리를 충분히 만들 수 밖에 없었습니다
원래 배열을 선언할 때 변수를 쓸 수 없는건가요?
제가 보기에는 써도 될 것 같은데...
거기에 대해 좀 자세한... 이런 저런 이야기 좀 부탁 드리겠습니다
원래 배열 선언문 안에 변수를 쓸 수 없는지
어떠한 큰... 치명적인 문제 때문에 그렇게 만든건지...
이런 저런 자세한 설명 부탁드립니다
제 머리로는 도저히 이해가 T_T
흐... 여기 질문란에 처음 올리는 글이내요
아무튼 여러 고수님들께서 백옥, 주옥 같은 지도 부탁드립니다!!!
뒷말 : 고수님께서 무심코 던진 실마리 하나가
방황하는 왕하수한테는 굵은 동앗줄이 될 수 있습니다 T_T
|