4. 배열에 대한 궁금증.

참고자료 (http://cafe.naver.com/cafec/288156)


-int형 배열연습


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main()
{
    int i[3];  // 선언과 동시에 초기화 하려면 int i[3] = {1,2,3}; 도 가능하다.
    i[0]=1;
    i[1]=2;
    i[2]=3;
    printf("%d\n",i[0]);
    printf("%d\n",i[1]);
    printf("%d\n",i[2]);
    for(;;);    
}

각각의 배열 자리값 i[0], i[1], i[2]에 초기화를 안해주면 쓰레기값..

3개중 하나라도 0이든 뭐든 초기화 해주면 나머지는 선언 안해도 알아서 0으로 초기화됨.


-변수형 배열

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
#include <stdio.h>
 
int main()
{
    int i[3];
    int j=1;
    i[0]=1;
    i[j]=2;
    i[j+1]=3;
    printf("%d\n",i[0]);
    printf("%d\n",i[j]);
    printf("%d\n",i[2]);
    for(;;);    
}
 
 
#include <stdio.h>
 
int main()
{
    int score[5];
    int i;
    for(i=0;i<5;i=i+1)
    {
        printf("%d번 학생 점수 입력 : ",i+1);
        scanf("%d", &score[i]);
    }
    for(i=0;i<5;i=i+1){
        printf("%d번 학생 %d점\n",i+1,score[i]);
    }
    for(;;);
}
 
 

이건 좀 어려웠다.

=========================================================================================================


그런데 배열 코드를 연습하다 보니 문제가 생겼다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
#include <stdio.h>
 
int main()
{
    int aaa[3][5]={{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3}};  // aaa[0][0]={1}
    int i=0;
    int j=0;
    
    for(i;i<4;i=i+1)
    {
        for(j;j<5;j=j+1)
        {
        printf("%d", aaa[i][j]);
        }
        printf("\n");
    }
 
    for(;;);
}
 



위의 코드를 보면 처음부터 변수를 0으로 초기화 시켜 두었다. 이런 경우 내가 원하는


11111

22222

33333 

이런 결과물이 나오지 않는다;; 왜이럴까


반대로

아래 코드와 같이 for문 안에서 =0 으로 초기화 시키면 결과가 잘 나온다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int main()
{
    int aaa[3][5]={{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3}};  // aaa[0][0]={1}
    int i;
    int j;
    
    for(i=0;i<3;i=i+1)
    {
        for(j=0;j<5;j=j+1)
        {
        printf("%d", aaa[i][j]);
        }
        printf("\n");
    }
 
    for(;;);
}


왜 이런 문제가 생기는 것인가..?


설정

트랙백

댓글

3. 함수나누기 void형 함수

강좌 18, 19


강좌 19-(http://cafe.naver.com/cafec.cafe?iframe_url=/ArticleRead.nhn%3Fclubid=10026632%26page=3%26menuid=149%26boardtype=L%26articleid=287668%26referrerAllArticles=false)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 
void triangle(int height)
{
    int i=0;
    int j=0;
 
 
    for(i;i<height;i=i+1)
    {
        for(j;j<=i;j=j+1)
        {
            printf("#");
        }
        printf("\n");
    }
}
 
int main()
{
    triangle(5);
    for(;;);
}
 


이렇게 하면 



아래 그림처럼 나오는데



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
void triangle(int height)
{
     int i, j;
     for(i=0;i<height;i=i+1){
     for(j=0;j<=i;j=j+1){
     printf("#");
     }
     printf("\n");
     }
}
int main()
{
    triangle(5);
    for(;;);
}


이렇게 코드를 입력하면



차이가 뭐지??

설정

트랙백

댓글

2. for문과 조건문

http://blog.naver.com/fflash4/30150789726


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
int main(){
    int i=0;
    int a=0;
 
    for(i;;i=i+1){
        printf("정수 입력 :");
        scanf("%d", &a);
 
        if(a>1){
            printf("입력한 값이 1보다 큽니다");
        }
        else if(a<1){
            printf("입력한 값이 1보다 작습니다");
        }
        else{
            printf("입력한 값이 1입니다");
        }
    }
    for(;;);
}


설정

트랙백

댓글

1. for문과 scanf를 이용한 문제.


참고자료 (http://blog.naver.com/fflash4/30150577724)


무한 루프를 이용하여 scanf() 함수로 두개의 정수를 사용자로부터 입력받아

두 정수의 합을 출력하는 프로그램을 제작 하세요


여기 숙제처럼 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main(){
    int a;
    int b;
    
    int i=0;
    int c=a+b;
 
    for(i; ;i=i+1){
    printf("정수 두개 입력 :");
    scanf("%d %d", &a, &b);
    
    printf("\n");
    printf("두 수의 합 : %d \n", c);
    }
    for(;;);
}


이렇게 적고 F5 하면, 아래 스샷과 같이 경고문이 나온다.


계속을 하면 실행은 되지만... 결과가



이런식으로 나온다...


하지만 int c를 지우고 printf 함수에 a+b 의 값을 받아오게 하면 잘된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main(){
    int a;
    int b;
    
    int i=0;
    
 
    for(i; ;i=i+1){
    printf("정수 두개 입력 :");
    scanf("%d %d", &a, &b);
    
    printf("\n");
    printf("두 수의 합 : %d \n", a+b);
    }
    for(;;);
}


원인이 뭘까??

설정

트랙백

댓글

1. vi 편집문제 -> vim 설치, vim 기본설정.

vi 편집기가 안됨.

chmod 777 '디렉토리 이름' 으로 권한을 바꿔주고

sudo vi로 실행했는데도 안됨.

아무래도 vim 설치가 안된듯하다.

원래는 검은색 배경의창이 새로 떠야되는데 뭔가 문제가 생긴듯.


방향키를 누르면 A B C D가 나오고

지워도 지워지지 않는다. Del 키는 입력가능.

이렇게 그냥 q!로 종료;;;


=========================================================================================================


이제부터 vim을 설치해보자.

참고자료(http://cafe.naver.com/pipc/431)

              http://blog.naver.com/chazzing?Redirect=Log&logNo=192251092


여기서 아래 스샷과 같이 sudo apt-get install vim 입력.

업그레이드가 안됫다고?

sudo apt-get update를 해봐도 안된다.


아... 아마도 vim 설치가 제대로 안된듯하다. 위에서 생긴 문제가 똑같이 일어난다.

그래서 http://blog.naver.com/gauya?Redirect=Log&logNo=110156473356 사이트 처럼 

sudo apt-get install vim-full을 적용했다.

아하. 원인을 알았다. 인터넷연결이 안되는구나.

이로써 결론은 노트북과 1:1 라즈베리 연결을 하면 인터넷이 안된다는 것.


그러면 인터넷을 연결할 수 있게 설정을 바꿔줘야 한다.




=========================================================================================================



그래서 설정을 모두 되돌리고 다시 vim설치를 하였다.


sudo apt-get install vim

sudo apt-get upgrade

sudo apt-get update

이제 인터넷 연결이 되어 있어서 정말 잘된다.


이제 vim 편집기 까지 정상적으로 작동이 잘 되나... 아래와 같이 코딩할 때 검은색으로 변하는게 안된다... 도대체 이유가 뭐지?

오른쪽처럼 색상이 검은색으로 나오고 색도 나오고 라인도 나오고... 해야될텐데.


이것의 문제는 간단하다 (http://cafe.naver.com/pipc/431)


Vim 편집기의 기본설정 문제인데 이 경우는 간단한 설정으로 변경이 가능하다.

sudo vim /etc/vim/vimrc 를 실행해서 vimrc 환경파일을 오픈



원본 파일을 이렇게 바꿔주면 코딩준비 완료! 한시름 덜었다...

'●프로젝트와 세미나 > C-language' 카테고리의 다른 글

4. 배열에 대한 궁금증.  (1) 2013.11.29
3. 함수나누기 void형 함수  (2) 2013.11.19
2. for문과 조건문  (0) 2013.11.17
1. for문과 scanf를 이용한 문제.  (0) 2013.11.15

설정

트랙백

댓글