배열 / 버블 / 함수 / 포인터

2018. 7. 6. 23:07Study/C_언어

배열

다수의 데이터를 저장하고 처리하는 경우에 ㅇ용하게 사용할 수 있는 것 


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>
#include <stdlib.h>
#include <time.h>
#define INDEX 10
int main(void){
    int score[INDEX],i, max, min, max_index, min_index;
    float avg = 0, sum;
    srand(time(NULL));
 
    for(i = 0; i < INDEX; i++){
        score[i] = rand() % 101;
        printf("%2d 점수 %d\n", i+1 ,score[i]);
        sum += score[i];        
    }
    avg = (float)sum / INDEX;
    max = min = score[0];
    max_index = min_index = 0;
 
    for(i = 0; i < INDEX; i++){
        if(score[i] > max){
            max = score[i];
            max_index = i;
        }
        if(score[i] < min){
            min = score[i];
            min_index = i;
        } 
    }
    
    printf("%d번째 학생이 %d로 최고점 입니다.\n",max_index + 1, max);
    printf("%d번째 학생이 %d로 최소점 입니다.\n",min_index + 1, min);
    printf("전체평균은 %f\n", avg);    
 
    return 0;
}
cs


버블(나쁜)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    int i, j;
    int t;
    for(i = 0; i < INDEX ; i++){
        for(j = 0; j < INDEX ; j++){
            if(score[i] > score[j]){
                t = score[i];
                score[i] = score[j];
                score[j] = t;
             }
        }
    }
    for(i = 0; i < INDEX ; i++)
        printf("성적 : %d \n",score[i]);
    }
cs


함수

함수를 사용자가 정의하고 사용 할 수 있다.


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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
 
int add(int a, int b)
{
    int r;
    r = a + b;
    return r;
}
 
int subtract(int a, int b)
{
    return (a - b);
}
 
 
void Nocomput()
{
    printf("계산할 수 없습니다.");
}
 
 
int main(void){
    int first, second, result;
    char op;
 
    printf("수식을 입력하세요: \n(예, 3 + 5)");
    scanf("%d %c %d",&first, &op, &second);
 
    switch(op){
        case '+':
            result = add(first, second);
            break;
        case '-':
            result = subtract(first, second);
            break;
        case '*':
            result = first * second;
            break;
        case '/':
            result = first / second;
            break;
        case '%':
            result = first % second;
            break;
        default:
            Nocomput();
    }
 
    printf("result = %d",result);
 
    return 0;
}
cs


포인터


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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void swap(int a, int b)
{
    int t; 
    t = a; a = b; b = t;
}
 
void swap2(int k[2])
{
    int t; 
    printf("k = %d \n",k);
    printf("t = %d \n",&t);
    t = k[0]; k[0= k[1]; k[1= t;
 
}
 
int main(void){
    int a[2= {10,20};
    printf("swap 호출 전 : \n");
    printf("a[0] = %d a[1] = %d \n",a[0],a[1]);
    printf("a = %d \n",a);
    swap2(a);
    printf("swap 호출 후 : \n");
    printf("a[0] = %d a[1] = %d \n",a[0],a[1]);
 
    return 0;
 
}
cs


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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void){
    int arr[] = {23 ,4 ,5 ,6 ,7};
    int a;
    int j;
    int *k;
    a = 3;
    k = &a;
 
    printf("a = %d k = %d \n",&a ,k);
    *= 10;
 
    printf("a = %d \n",a);
    j = 100;
    k = &j;
 
    printf("%d %d",j ,*k);
    j= 200;
    *= 200;
 
    return 0;
 
}

cs



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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void swap3(int *i, int *j)
{
    int t;
    t = *i;
    *= *j;
    *= t;        
}
 
int main(void){
    int a,b;
    a = 10;
    b = 20;
 
    printf("a = %d ,b = %d \n",a , b);
    printf("호출 \n");
    swap3(&a, &b);
    printf("a = %d ,b = %d \n",a , b);    
 
    return 0;
 
}
cs


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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
 
void swap3(int *i, int *j)
{
    int t;
    t = *i;
    *= *j;
    *= t;        
}
int main(void){
    int a, b;
    int *p, *q;
    double k;
    double *d;
    p = &a;
    q = &b;
    d = &k;
    
    printf("size : %d\n",sizeof(p));
    a = 10;
    b = 20;
    
    printf("a = %d ,b = %d \n",a , b);
    printf("호출 \n");
    swap3(&a, &b);
    printf("a = %d ,b = %d \n",a , b);
    
    return 0;
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void){
    int arr[] = {45 ,6 ,7};
    int *p;
    //p = arr
    //4 : arr[0], *(p+0),p[0], *(arr+0)
    //5 : arr[1], *(p+1) 
    
    p = &(arr[2]);
    
    printf("%d \n",*(p+1));
    
    return 0;
}
cs


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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 20
void print(int *n, int *data, char *g);
void sort(int *n, int *data, char *g);
void evaluate(int *data, char *g);
int main(void)
{
    int score[NUM] = {0};
    int hak[NUM] = {0};
    char grade[NUM] = "";
    int i;
    srand(time(NULL));
    
    for(i = 0; i < NUM; i++){
        score[i] = rand()%100;
        hak[i] = i + 1;
    }
    evaluate(score, grade);
    print(hak, score, grade);
    sort(hak, score, grade);
    print(hak, score, grade);
    
    return 0;     
}
void print(int *n, int *data, char *g)
{
    int i;
    printf("========================\n");
    printf("    1반 성적\n");
    printf("========================\n");
    printf(" 학번\t 성적 \t 평점 \n");
    printf("========================\n");
    for(i = 0; i < NUM; i++)
        printf("%02d \t %02d \t %c \n", n[i] , data[i], g[i]);        
    printf("\n");
    printf("========================\n");
    
}
void sort(int *n, int *data, char *g)
{
    int i, j, temp;
    for(i = 0; i < NUM; i++){
        for(j = i; j < NUM; j++){
            if(data[i] < data[j]){
                temp = data[i];
                data[i] = data[j];
                data[j] = temp;
                
                temp = n[i];
                n[i] = n[j];
                n[j] = temp;
                
                temp = g[i];
                g[i] = g[j];
                g[j] = temp;
            }
        }
    }
}
 
void evaluate(int *data, char *g)
{
    int i;
    for(i = 0; i < NUM; i++){
        if(data[i] >= 90)
            g[i] = 'A';
        else if(data[i] >= 80)
            g[i] = 'B';
        else if(data[i] >= 70)
            g[i] = 'C';
        else
            g[i] = 'F';
    }    
}
cs


'Study > C_언어' 카테고리의 다른 글

if else 문  (0) 2018.07.06
for / while 문  (0) 2018.07.06
switch  (0) 2018.07.06
printf, scanf  (0) 2018.03.08
자료형  (0) 2018.03.03