ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C 프로그래밍: 새내기를 위한 첫 C 언어 책] 실습 7주차
    학교 수업/1-1, 1-2 코딩 기초 (파이썬, C) 2020. 10. 12. 17:28
    반응형

    CHAPTER 8 프로그램 + 연습문제

     

     

    p.354 프로그램 8-17

    notebook 배열과 pen 배열 값을 직접 입력 받을 수 있도록 만들기

    #include <stdio.h>
    #define N 4
    
    double compute_avg(int arr[]);
    
    int main()
    {
    	int notebook[N], pen[N];
    	double average;
    
    	printf("notebook 배열 입력: ");
    	for (int i = 0; i < N; i++)
    		scanf_s("%d", &notebook[i]);
    
    	printf("pen 배열 입력: ");
    	for (int i = 0; i < N; i++)
    		scanf_s("%d", &pen[i]);
    
    	average = compute_avg(notebook);
    	printf("노트 평균 판매수: %.1lf \n", average);
    
    	average = compute_avg(pen);
    	printf("펜 평균 판매수: %.1lf \n", average);
    
    	return 0;
    }
    
    double compute_avg(int arr[])
    {
    	int i, sum = 0;
    
    	for (i = 0; i < N; i++)
    		sum += arr[i];
    
    	return (double)sum / N;
    }

     

     

    연습문제 1

    #include <stdio.h>
    #define N 30
    void print_title();
    int frequency(int arr[N], int value); //<= 여기
    
    int main() //<= 여기
    {
    	int result[N] = { 1,3,2,5,3,2,1,2,3,4,5,2,3,3,2,
    					1,4,5,2,3,5,1,3,4,2,3,1,4,2,3 };
    	int count, i, target;
    	printf("개수를 구하고 싶은 값은(1~5)?");
    	scanf_s("%d", &target);
    	print_title(); //<= 여기
    	count = frequency(result, target); //<= 여기
    	printf("배열에는 %d가 %d개 있습니다.\n", target, count);
    	return 0;
    }
    
    void print_title() {
    	printf("============================================================\n");
    	printf("배열에 특정 값이 몇 개 포함되어 있는지 찾는 프로그램\n");
    	printf("============================================================\n");
    }
    
    int frequency(int arr[N], int value) //<= 여기
    {
    	int i, count = 0;
    
    	for (i = 0; i < N; i++)
    		if (arr[i] == value)
    			count++;
    
    	return count; //<= 여기
    }

    1. frequency 함수 원형을 선언함

    2. return 0;이므로 void main()을 int main()으로 수정

    3. print_title을 print_title()로 수정

    4. 배열을 통째로 가져가야하므로 result[N]을 result로 변경해줌

    5. value를 int value로 수정함

    6. int함수인데 return이 없으므로 return count;를 추가해줌

     

     

     

    연습문제 6

    #include <stdio.h>
    #define SIZE 5
    
    int find_min(int arr[]);
    void print_arr(int arr[]);
    int idx;
    
    int main()
    {
    	int f[SIZE] = { 3,0,-30,-20,-1 };
    	int min;
    
    	min= find_min(f);
    
    	printf("어는 점 목록:");
    	print_arr(f);
    
    	printf("\n가장 낮은 어는 점: f[%d]=%d \n", idx,min);
    
    	return 0;
    }
    
    int find_min(int arr[])
    {
    	int i, min;
    
    	min = arr[0];
    	for (i = 0; i < SIZE; i++)
    		if (arr[i] < min)
    		{
    			min = arr[i];
    			idx = i;
    		}
    
    	return min;
    }
    
    void print_arr(int arr[])
    {
    	int i;
    	
    	for (i = 0; i < SIZE; i++)
    		printf("%4d", arr[i]);
    }

     

     

     

     

     

    연습문제 9

    #include <stdio.h>
    #define N 9
    #define SWAP(x,y) (x=x^y, y=x^y, x=x^y)
    
    int rank(int arr[], int val);
    
    int main()
    {
    	int class[N] = { 10,8,7,9,6,10,9,8,7 }, my_score, ans;
    	
    	printf("사용자의 점수를 입력하세요.: ");
    	scanf_s("%d", &my_score);
    
    	ans = rank(class, my_score);
    
    	printf("\n사용자의 등수는 %d등입니다.", ans);
    
    	return 0;
    }
    
    int rank(int arr[], int val)
    {
    	int count=0;
    	
    	for(int i=0; i<9; i++)
    		for (int j = i + 1; j < 9; j++)
    			if (arr[j] > arr[i])
    				SWAP(arr[j], arr[i]);
    
    	for (int i = 0; i < 9; i++)
    	{
    		if (arr[i] == val) return ++count;
    		else count++;
    	}
    }

     

     

     

     

     

    연습문제 13

    #include <stdio.h>
    
    void to_binary(int n) {
    	if (n == 0) return;
    	else {
    		to_binary(n / 2);
    		printf("%d", n % 2);
    	}
    }
    
    int main()
    {
    	int num;
    
    	printf("Enter a positive interger. \n");
    	scanf_s("%d", &num);
    	to_binary(num);
    
    	return 0;
    }

     

    반응형

    댓글

Designed by Tistory.