-
[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; }
반응형'학교 수업 > 1-1, 1-2 코딩 기초 (파이썬, C)' 카테고리의 다른 글
[C 프로그래밍: 새내기를 위한 첫 C 언어 책] 실습 13주차 (0) 2020.11.25 [C 프로그래밍: 새내기를 위한 첫 C 언어 책] 실습 12주차 (0) 2020.11.17 [C 프로그래밍: 새내기를 위한 첫 C 언어 책] 실습 10주차 (0) 2020.11.03 [C 프로그래밍: 새내기를 위한 첫 C 언어 책] 실습 8주차 (0) 2020.10.19 [C 프로그래밍: 새내기를 위한 첫 C 언어 책] 실습 7주차 (0) 2020.10.12