22018, 1/1101 회원가입  로그인  
   dbqls5108
   안녕하세요 c언어공부중 질문쫌드릴게요 ㅎㅎ;

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=30797 [복사]


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
        int b=100;
        int i=0; //선택지
        int k,j; // k는행 j는열
        int arr[3][3] = {{rand()%4+1},{rand()%4+1},{rand()%4+1}}; //저장공간배열
        srand(time(NULL));        //rand 변환하게만들기


do
  {
     printf("\n\n\n1.재배치  2.배열보기  3.같은배열찾기 4.게임  5.종료\n\n\n");
     printf("숫자를 입력해주세요 :");
     scanf("%d",&i); // 메뉴실행

       if(i==1)
             {

              }
      
       else if(i==2)
       {
                 for(k=0;k<3;k++)
        {
            for(j=0;j<3;j++)
                {
                  printf("arr[%d][%d]=%d  ",k,j,arr[k][j]);
                        if(j==2)
                          {
                             printf("\n");
                         }
                       }
                                                
              }
   }


}while(i !=5); //4번일 때 종료

}


지금 공부중인 2차원배열과 rand함수인데요...
[3][3]배열에

1 3 3
2 1 4
4 2 a

이렇게 1234를 8개만들어가게하고 빈자리에는 a를 채우려고하는데요...
일단 빈자리에 1234를 채우려고 하는데.. (0 ,0 ) (1, 0) (2,0) 에만 숫자가들어가고 다른곳에는 안들어가더군요... 뭐가잘못된걸까요?

  Hit : 8412     Date : 2013/04/27 03:23



    
janeeyoon 일단 arr[3][3]은 3x3행렬을 표현한 것이잖아요. 그러니까 값을 줄때
{ {1,2,3}, {4,5,6}, {7,8,9} }; //이렇게 작성해주어야 배열의 전체 요소에 값을 넣어줄 수 있죠. 마지막 9에는 a를 저장하려한다면
9대신에 'a' 를 적으주면 될듯...
{ { arr[0][0],arr[0][1],arr[0][2] } , { arr[1][0],arr[1][1],arr[1][2] }, { ..........arr[2][2] } }; //대충 이런모양

나머지는 다른분이 이어서
2013/04/27  
jl0716 부족한 답변이지만, Srand(time())을 RNG쓰기전에 해주셔야 랜덤하게 번호를 구할수 있고요.
윗분 답변을 참고로 코드 하신거 보면 arr[3][3]중 3개 공간에만 값을 주셨네요.. 그러니깐 나머진 0이 들어가겠죠 (인트 기본값은 0이라 치고)

코더에 따라서 스타일은 다를 수 있으나, 저같으면 그냥 arr[3][3]을 먼저 만들고 loop을 이용해서 랜덤한 숫자들을 각각의 공간에 넣겠네요 ^^;
2013/04/29