ABOUT ME

-

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

    10장 연습문제 + 추가문제

     

     

    연습문제 15번

     

    #include <stdio.h>
    
    double convert(double *x, int t){
    	double a;
    	if(t==1)
    		a = (*x) /4.3 * 4.5;
    	else
    		a = (*x)/4.3 * 100;
    	return a;
    }
    
    
    int main(){
    	double grade,grade2, score;
    
    	scanf_s("%lf",&grade);
    	grade2 = convert(&grade,1);
    	score = convert(&grade,2);
    
    	printf("%.1lf , %.1lf", grade2, score);
    
    
    	return 0;
    }

     

     

    연습문제 17번

     

    #include <stdio.h>
    
    void swap(int *x, int *y){
    	int temp;
    	temp = *x;
    	*x = *y;
    	*y = temp;
    }
    
    void top_n(int *arr, int x){
    	int i,j;
    
    	for(i=0; i<x; i++){
    		for(j=i; j<10; j++){
    			if(arr[i]<arr[j]){
    				swap((arr+i),(arr+j));
    			}
    		}
    	}
    
    	return;
    }
    
    int main()
    {
    	int sales[10] = {203,105,302,200,289,175,130,120,267,312};
    	int n,i;
    
    	scanf("%d",&n);
    
    	top_n(sales, n);
    
    	for(i=0; i<n; i++){
    		printf("%d\n",sales[i]);
    	}
    }

     

     

    연습문제 18번

    #include <stdio.h>
    
    int index_of_max(int* quiz) {
    	int i, ans[2] = { 0,0 };
    	for (i = 0; i < 10; i++) {
    		if (ans[0] > quiz[i]) {
    			ans[0] = quiz[i];
    			ans[1] = i;
    		}
    	}
    
    	return ans[1];
    }
    
    int main() {
    	int quiz[10] = { 0, }, res;
    
    	printf("지금 입력된 퀴즈 점수는 : ");
    	for (int i = 0; i < 10; i++) {
    		scanf_s("%d", (quiz + i));
    	}
    
    	res = index_of_max(quiz);
    	printf("퀴즈 최고 점수는 : quiz[%d] = %d\n", res, quiz[res]);
    
    	return 0;
    
    }

     

     

    연습문제 19번

     

    char *name에는 한글 3글자 이름만 들어가 있으므로 char who에 NULL을 채운다음 name[6]의 값이 NULL이면 who의 이름이 최소 4글자라는 뜻이므로 -1을 반환하게 만들었음

    #include <stdio.h>
    #define N 10
    
    int search(char* name, char* name_list[N]) {
    	int i, j, ans;
    	if ((int)name[6] != 0) return -1;
    	for (i = 0; i < N; i++) {
    		ans = 0;
    		for (j = 0; j < 3; j++) {
    			if (name[j] == name_list[i][j]) ans++;
    		}
    		if (ans == 3) return i;
    	}
    	return -1;
    }
    
    int main()
    {
    	char* name[N] = { "나태희", "유현빈", "나원빈", "문건영", "소지법", "나보배", "장도건", "고수영", "이나라", "김해수" };
    	char* phone[N] = { "010-5228-7889","010-5211-1472","010-1235-8765","010-8282-8282","010-5165-3483","010-5232-1628","010-3452-1676","010-5210-5463","010-5210-1234","010-8255-8255" };
    	double grade[N] = { 4.3, 4.0, 3.2, 2.7, 3.2, 4.0, 4.4, 3.7, 4.2, 3.8 };
    
    	char who[10] = {"\0", };
    	int index;
    	printf("정보를 찾고 싶은 학생의 이름은? ");
    	gets(who);
    
    	index = search(who, name);
    
    	if (index == -1)
    		printf("%s 학생은 찾을 수 없습니다.\n", who);
    	else {
    		printf("이름: %s\n", name[index]);
    		printf("번호: %s\n", phone[index]);
    		printf("성적: %.1lf\n", grade[index]);
    	}
    
    	return 0;
    }
    

     

     

    추가문제

     

    복권 번호를 생성하는 프로그램 만들기

    1000원당 하나의 번호 세트를 만들어야하며, 번호를 출력할 때 오름차순으로 출력하고 중복된 숫자가 없어야함

    한 세트에 숫자는 6개씩 들어가있음

    #include <stdio.h>
    #include <stdlib.h>
    #define SWAP(x,y) (x=x^y,y=x^y,x=x^y)
    
    void start(int *lotto){
    	int i, j, x, res=0, ans[6];
    
    	while(res != 6){
    		x = rand()%45 + 1;
    		if(lotto[x-1] == 0){
    			ans[res] = x;
    			res += 1;
    			lotto[x-1] += 1;
    		}
    	}
    
    	for(i=0; i<6; i++)
    		for(j = i; j<6; j++){
    			if(ans[i] > ans[j]){
    				SWAP(ans[i],ans[j]);
    			}
    		}
    
    	for(i=0; i<6; i++) printf("%d ", ans[i]);
    	printf("\n");
    }
    
    
    int main(){
    	int lotto[45]={0,};
    	int money, num, res, i,j;
    
    	while(1){
    		printf("Enter available money.\n");
    		scanf("%d",&money);
    		if(money == 0) break;
    
    		num = money / 1000;
    
    		printf("Possible sets of lottery numbers are,\n");
    		for(i=0; i<num; i++){
    			for(j=0; j<45; j++) lotto[j] = 0;
    			start(lotto);
    		}
    	}
    
    	return 0;
    }

     

     

    반응형

    댓글

Designed by Tistory.