c 언어 배열로 장난하는 거 같지만..
      글쓴이: xodn158 / 작성시간: 화, 2018/06/05 - 11:07오후    
  
  0   0   1   0   0
0   2   3   4   0
5   6   7   8   9
0 10 11 12  0
0  0 13  0  0
이런 식으로 나오게끔 코드를 짜봤습니다. 대부분은 잘 되는데 a[0][0] 부분에서 32이라는 숫자가 뜬금없이 나옵니다. 이게 어떤 동작으로 인해서 32숫자가 나오는 건지 궁금해서 질문 올립니다.(원래는 0이 나와야 정상)
#include <stdio.h>
int main() {
 
	int a[5][5] = {' '},c=1,center = 5/2;
 
	for(int i =0; i<5; i++){
		for(int j=0; j<5; j++){
			if(i<center){
				if(i%2 !=0){
					a[i][center-1] = c;
					c++;
					a[i][center] = c;
					c++;					
					a[i][center+1] = c;
					c++;
					break;
				}
				else if (i%2 ==0){
					a[i][center] = c;
					c++;
					break;
				}
			}
			if(i ==center){
				a[i][j] = c;
				c++;
			}
			if (i > center){
				if(i%2 !=0){
					a[i][center-1] = c;
					c++;
					a[i][center] = c;
					c++;					
					a[i][center+1] = c;
					c++;
					break;
				}
				else if (i%2 ==0){
					a[i][center] = c;
					c++;
					break;
				}					
			}
 
		}		
	}	
	for(int i=0; i<5; i++){
			for(int j =0; j<5; j++){
				printf("%d ", a[i][j]);
			}printf("\n");
	}				
}
<code>File attachments: 
| 첨부 | 파일 크기 | 
|---|---|
| 6.48 KB | 
Forums: 


처음 int a[][]를 선언할 때 a[0][0]을
처음 int a[][]를 선언할 때 a[0][0]을 32로 초기화하고 있습니다.
해보시면 32가 출력될겁니다.
해결해주셔서 감사합니다 그런데
공백이 아스키코드로 32를 취하는 군요
그런데 첫번째 숫자만 32가 나오는 이유가 뭔가요?
a[0][0] 만 32 로 초기화
a[0][0] 만 32 로 초기화 하셨으니까.
int a[5][5] = {' '}
를
로 바꿔 보셔요.
세벌 https://sebuls.blogspot.kr/
댓글 달기