星野アイ.com
Category A
Subcategory a
Category B
Subcategory b
Subsubcategory 1
Subsubcategory 2
post-03
Subcategory c
Study
C Language
ARM Device
C Example
C task
Linux
Day1
Day2
Day3
Day4
perceptron
Subcategory c
VLSI Circuits Design
Day1
Subsubcategory 1
Subsubcategory 2
example
comment system
Home
markdown guide
posting guide
visitor counter
Contact
Copyright © 2024 |
Yankos
Home
>
Study
> C Language
💖 星野アイ (◍•ᴗ•◍)♡ ✧*。
C Language
example page
What is Lorem Ipsum? This is an example post ‘<’. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 수정wogjd Heading 1 Heading 2 Heading 3 Heading 4 Heading 5 Heading 6 This is the bold text and this is the italic text and let’s do strikethrough. Don’t forget to code your dream. Fruits: 🍎 🍋 Other fruits: 🍑 🍏 Numbers: first second third Click here | Header | Description | | :–: | :–: | | Cell1 | Cell2 | | Cell1 | Cell2 | | Cell1 | Cell2 | | Cell1 | Cell2 | To print message in the console, use console.log('your message') and .. console.log('your message') 1일차 기록 source /home/env/env_tools.csh custom_compiler& Custom Compiler 실행 및 초기화면 나의 작업 공간인 Library 생성 (name, tech_library 선택) schematic 생성을 위해 CellView 추가 (schematic name: NOT) schematic 원할한 작업을 위해 Design Options setting (Editing modify) Key Roll I istance W wire L label(wire name) P pin U back C copy Q property F2 save M move E inside cell ctrl + E outside cell 단축키 및 역할 기록 Check and Save 통해 Error 확인
Study
· 2025-06-16
example page
What is Lorem Ipsum? This is an example post ‘<’. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 수정wogjd Heading 1 Heading 2 Heading 3 Heading 4 Heading 5 Heading 6 This is the bold text and this is the italic text and let’s do strikethrough. Don’t forget to code your dream. Fruits: 🍎 🍋 Other fruits: 🍑 🍏 Numbers: first second third Click here | Header | Description | | :–: | :–: | | Cell1 | Cell2 | | Cell1 | Cell2 | | Cell1 | Cell2 | | Cell1 | Cell2 | To print message in the console, use console.log('your message') and .. console.log('your message') 1일차 기록 source /home/env/env_tools.csh custom_compiler& Custom Compiler 실행 및 초기화면 나의 작업 공간인 Library 생성 (name, tech_library 선택) schematic 생성을 위해 CellView 추가 (schematic name: NOT) schematic 원할한 작업을 위해 Design Options setting (Editing modify) Key Roll I istance W wire L label(wire name) P pin U back C copy Q property F2 save M move E inside cell ctrl + E outside cell 단축키 및 역할 기록 Check and Save 통해 Error 확인
Study
· 2025-06-16
example page
What is Lorem Ipsum? This is an example post ‘<’. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 수정wogjd Heading 1 Heading 2 Heading 3 Heading 4 Heading 5 Heading 6 This is the bold text and this is the italic text and let’s do strikethrough. Don’t forget to code your dream. Fruits: 🍎 🍋 Other fruits: 🍑 🍏 Numbers: first second third Click here | Header | Description | | :–: | :–: | | Cell1 | Cell2 | | Cell1 | Cell2 | | Cell1 | Cell2 | | Cell1 | Cell2 | To print message in the console, use console.log('your message') and .. console.log('your message') 1일차 기록 source /home/env/env_tools.csh custom_compiler& Custom Compiler 실행 및 초기화면 나의 작업 공간인 Library 생성 (name, tech_library 선택) schematic 생성을 위해 CellView 추가 (schematic name: NOT) schematic 원할한 작업을 위해 Design Options setting (Editing modify) Key Roll I istance W wire L label(wire name) P pin U back C copy Q property F2 save M move E inside cell ctrl + E outside cell 단축키 및 역할 기록 Check and Save 통해 Error 확인
Study
· 2025-06-16
[ex64] 배열에서 패턴 개수 찾기 (10점)
문제 설명 20글자 이하의 문자열이 입력되어 s1 배열에 저장되고 5글자 이하의 문자열이 입력되어 s2 배열에 저장된다. 문자열 s1에서 s2와 같은 패턴의 문자열이 몇개가 존재하는지 개수를 인쇄하라 만약 s1이 abababac 이고 s2가 aba일 경우 총 3번 aba 패턴이 존재하므로 답은 3이 된다. 아래 코드를 사용하되 변수, 함수는 임의로 추가하여 사용하면 된다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { char s1[21]; char s2[6]; scanf(" %s", s1); scanf(" %s", s2); // 코드 작성 } 입력 예시 abababac aba 출력 예시 3 정답 코드 #if 0 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { char s1[21]; char s2[6]; scanf(" %s", s1); scanf(" %s", s2); int i, j, cnt = 0; for (i = 0; s1[i] != '\0'; i++) { for (j = 0; ; j++) { if (s2[j] == '\0') { cnt++; break; } else if ((s1[j + i] != s2[j]) || (s1[j + i] == '\0')) { break; } } } printf("%d\n", cnt); } #endif /* 함수로 설계 */ #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int str_cmp(char * p, char * q) { int i; for (i = 0; ; i++) { if (q[i] == '\0') return 1; if ((p[i] != q[i]) || (p[i] == '\0')) return 0; } } void main(void) { char s1[21]; char s2[6]; scanf(" %s", s1); scanf(" %s", s2); int i, cnt = 0; for (i = 0; s1[i] != '\0'; i++) { cnt += str_cmp(&s1[i], s2); } printf("%d\n", cnt); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex63] 같은 수는 용납 못해 (10점)
문제 설명 10개의 정수(음수, 0, 양수 가능)가 공백으로 분리되어 num 배열에 저장된다. 10개의 값이 모두 다를 경우 YES, 하나라도 같은 값이 있으면 NO를 인쇄하는 코드를 구현하라. 아래 코드를 이용하되 주어진 코드는 변경하면 안되며 필요한 변수, 함수는 임의로 추가 가능하다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { int num[10]; int i; for(i = 0; i < 10; i++) { scanf("%d", &num[i]); } // 코드 구현 } 입력 예시 1 9 2 8 7 3 66 55 44 100 출력 예시 YES 정답 코드 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { int num[10]; int i; for(i = 0; i < 10; i++) { scanf("%d", &num[i]); } int j, r = 0; for(i = 0; i < 10; i++) { for(j = i + 1; j < 10; j++) { if(num[i] == num[j]) { printf("NO\n"); return; } } } printf("YES\n"); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex62] 배열에서 큰 값 2개 찾기 (10점)
문제 설명 정수 10개가 공백을 기준으로 한 줄에 입력되어 배열 a에 저장된다. 이 값들 중 가장 큰 값과 두 번째로 큰 값을 차례대로 공백을 기준으로 한 줄에 인쇄하라 예를 들어 1 23 435 20 -29 20 1234 -45 24 100 이 입력된다면 가장 큰값이 1234이고 그 다음이 435이므로 1234 435가 인쇄되어야 한다. 만약 가장 큰 값과 같은 값이 여럿일 경우 가장 큰 값과 두 번째로 큰 값은 같은 값이 된다. 예를 등어 1 2 3 4 9 9 8 7 6 5 일 경우 1등, 2등은 모두 9 이므로 9 9가 인쇄되어야 한다. 다음 코드를 사용하되 필요한 변수는 임의로 선언하여 사용한다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { int a[10]; int i; for(i = 0; i < 10; i++) { scanf("%d", &a[i]); } // 코드 작성 } 입력 예시 1 23 435 20 -29 20 1234 -45 24 100 출력 예시 1234 435 정답 코드 #if 0 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { int a[10]; int i; for(i = 0; i < 10; i++) { scanf("%d", &a[i]); } int n; for(n = 0; n < 2; n++) { int r = 0; int t; for(i = 1; i <= 9 - n; i++) { if(a[i] > a[r]) { r = i; } } t = a[i-1]; a[i-1] = a[r]; a[r] = t; } printf("%d %d", a[9], a[8]); } #endif #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { int a[10]; int i; for(i = 0; i < 10; i++) { scanf("%d", &a[i]); } int r[2] = {0,1}; if(a[r[0]] < a[r[1]]) { r[0] = 1; r[1] = 0; } for(i = 1; i < 10; i++) { if(a[i] > a[r[1]]) { r[1] = i; if(a[i] > a[r[0]]) { r[1] = r[0]; r[0] = i; } } } printf("%d %d", a[r[0]], a[r[1]]); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex61] 알파벳 추리기 (10점)
문제 설명 in 배열에 최대 10글자(널문자 포함 11글자)의 문자열이 입력된다. 이 문자열에서 알파벳 대문자 또는 소문자만 순서대로 모아서 배열 out에 저장하고 그 내용을 인쇄하는 코드를 구현하라. 아래 주어진 입력, 출력 함수는 절대 수정할 수 없다. (주의) %s 옵션은 문자열을 인쇄하며 끝에 널문자가 있어야 인쇄를 종료한다. 따라서 out 배열에는 선별된 글자들 뒤에 반드시 널문자가 있어야 한다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { char in[11]; char out[11]; scanf("%s", in); // 코드 구현 (필요시 변수 자유롭게 선언하여 사용 가능) printf("%s\n", out); } 입력 예시 dkIWO23JI# 출력 예시 dkIWOJI 정답 코드 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { char in[11]; char out[11]; scanf("%s", in); int i, j = 0; for(i = 0; i < sizeof(in)/sizeof(in[0]); i++) { if(in[i] == '\0') { out[j] = '\0'; break; } if(((in[i] >= 'A') && (in[i] <= 'Z')) || ((in[i] >= 'a') && (in[i] <= 'z'))) { out[j++] = in[i]; } } printf("%s\n", out); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex60] 8비트 통신 데이터에 Even Parity 추가하기 (10점)
문제 설명 숫자 1 또는 0 이 공백으로 구분되어 8개가 data 배열에 입력된다. 입력된 값들 중 1의 개수가 홀수개이면 data 배열의 마지막에 1을 1의 개수가 짝수개이면 data 배열의 제일 마지막에 0을 추가한다. 이렇게 데이터의 전체 1의 개수가 짝수가 되게 하는 방식을 even parity 방식이라 부른다. 아래 코드를 사용하되 입출력 코드는 절대 수정할 수 없으며 필요한 변수는 선언하여 사용하면 된다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { int data[9]; int i; for(i = 0; i < 8; i++) { scanf("%d", &data[i]); } // 코드 구현 for(i = 0; i < 9; i++) { printf("%d ", data[i]); } } 입력 예시 1 0 1 1 1 1 0 1 출력 예시 1 0 1 1 1 1 0 1 0 정답 코드 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { int data[9]; int i; for(i = 0; i < 8; i++) { scanf("%d", &data[i]); } data[8] = 0; for(i = 0; i < 8; i++) { data[8] ^= data[i]; } for(i = 0; i < 9; i++) { printf("%d ", data[i]); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex59] 가위 바위 보 판정하기 (10점)
문제 설명 a와 b 두 사람이 가위, 바위, 보 게임을 하려고 한다. 가위는 0, 바위는 1, 보는 2를 입력하게 되며 승부 결과는 a가 이기면 a, b가 이기면 b 비기면 =을 인쇄하면 된다. 즉, 0 0, 1 1, 2 2와 같이 같은 것을 내면 비기므로 =가 나와야 하고 0 1 이렇게 되면 a는 가위 b는 바위이므로 b가 이겨서 b가 인쇄되어야 한다. 아래 코드를 이용하여 작성하되 필요한 변수 등은 자유롭게 추가가 가능하다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { int a, b; scanf("%d %d", &a, &b); // 코드 작성 } 입력 예시 0 1 출력 예시 b 정답 코드 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> char r[3][3] = { {'=','b','a'},{'a','=','b'},{'b','a','='} }; void main(void) { int a, b; scanf("%d %d", &a, &b); printf("%c\n", r[a][b]); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex58] 만기 적금 계산 함수 (10점)
문제 설명 다음 조건을 만족하는 적금 만기액을 구하는 함수를 설계하라 (1) 원금(total), 일 이자액(rate), 가입 일수(day)를 전달 받는다. (2) 가입일(day) 1일마다 월 이자액(rate) 만큼 원금에 이자가 붙는다. (3) 다만, 최종 지급액은 100원 미만 금액은 절사하여 결정한다. 예를 들어 total이 12,310원, rate가 40원, day가 9일이라면 총 이자는 360원이므로 총 금액은 12,670원이다. 그러나 100원 미만 절사하게 되므로 최종 지급금은 12,600원이 된다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int money(int total, int rate, int day) { // 코드 작성 } void main(void) { int t, r, d; scanf("%d %d %d", &t, &r, &d); printf("%d\n", money(t, r, d)); } 입력 예시 12310 40 9 출력 예시 12600 정답 코드 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int money(int total, int rate, int day) { total = (total + rate * day); return total - total % 100; } void main(void) { int t, r, d; scanf("%d %d %d", &t, &r, &d); printf("%d\n", money(t, r, d)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex57] 가까운 정수 반환 함수 설계 (10점)
문제 설명 입력된 실수 값에 가까운 정수를 리턴하는 함수 round를 설계하라 단, 아래 주어진 템플릿을 사용하되 round 함수 이외 코드는 절대 수정하면 안됨 (주의) 3.51는 가까운 정수가 4이지만 -3.51은 가까운 정수는 -4이다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int round(double x) { // 코드 작성 } void main(void) { double d = 3.5; scanf("%lf", &d); printf("%d\n", round(d)); } 입력 예시 32.768 출력 예시 33 정답 코드 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int round(double x) { if (x >= 0) return (int)(x + 0.5); return (int)(x - 0.5); } void main(void) { double d = 3.5; scanf("%lf", &d); printf("%d\n", round(d)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex56] 단어 글자수 맞추기 (10점)
문제 설명 공백이 없는 최대 20글자의 단어가 배열 x에 입력된다. 이 단어의 글자수를 인쇄하는 코드를 구현하라. 단, 문자열 끝의 널문자는 개수에 포함되지 않는다. 아래 코드를 이용하되 변수 등은 자유롭게 추가가 가능하다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { char x[21]; scanf(" %s", x); // 코드 구현 } 입력 예시 Hello 출력 예시 5 정답 코드 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void main(void) { char x[21]; scanf(" %s", x); int i, cnt = 0; for (i = 0; x[i] != '\0'; i++) { cnt++; } printf("%d\n", cnt); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex55] Black Jack 함수 (10점)
문제 설명 정수 3개의 합이 21이면 1을 아니면 0을 리턴하는 black_jack 함수를 설계하라 입력되는 3개의 정수는 1 이상 9 이하의 정수만 가능하며 card 배열에 저장된다. 이래 코드를 이용하되 주어진 코드는 변경할 수 없으며 필요한 변수는 추가하여 사용 가능하다. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int card[3]; int black_jack(void) { // 코드 구현 } void main(void) { int i; for(i = 0; i < 3; i++) { scanf("%d", &card[i]); } printf("%d\n", black_jack()); } 입력 예시 3 9 9 출력 예시 1 정답 코드 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int card[3]; int black_jack(void) { int i, s = 0; for(i = 0; i < 3; i++) { s += card[i]; } return (s == 21) ? 1 : 0; } void main(void) { int i; for(i = 0; i < 3; i++) { scanf("%d", &card[i]); } printf("%d\n", black_jack()); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex54] 두 개의 문자열을 교환하는 Swap 함수를 구현하시오
문제 설명 두 개의 문자열을 교환하는 Swap 함수를 구현하시오. (필요시 함수 추가 설계하여 구현한다.) 다음 코드는 입출력 Template으로 복사하여 코드를 작성하고 제시한 함수( Swap() )를 직접 구현하여 완성한다. #include < stdio.h> // 필요시 함수 추가 설계 (예)문자열을 복사하는 함수 // 여기에 Swap()함수를 구현한다 int main(void) { char a[110], b[110]; scanf("%s %s", a, b); Swap( a, b ); printf("%s %s\n", a, b); return 0; } 입력 설명 문자열 2개를 입력받는다 출력 설명 교환한 문자열을 출력한다 입력 예시 Hi Hello 출력 예시 Hello Hi 정답 코드 #include <stdio.h> void str_copy( char *d, const char *s) { while(*d++=*s++); } void Swap(char *ap, char *bp) { char temp[110]; str_copy(temp,ap); str_copy(ap,bp); str_copy(bp,temp); } int main(void) { char a[110], b[110]; scanf("%s %s", a, b); Swap( a, b ); printf("%s %s\n", a, b); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex53] 문자열 연결
문제 설명 문자열을 연결하는 함수를 완성하라 #include <stdio.h> void str_add(char * d, const char * s) { } void main(void) { char a[15] = "Willtek"; char b[15] = " Corp."; str_add(a, b); printf("%s\n", a); } 출력 예시 Willtek Corp. 정답 코드 #include <stdio.h> void str_add(char * d, const char * s) { while (*d) d++; while (*d++ = *s++); } void main(void) { char a[15] = "Willtek"; char b[15] = " Corp."; str_add(a, b); printf("%s\n", a); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex52] 문자열 길이 측정
문제 설명 문자열 길이를 측정하는 함수를 완성하라 #include <stdio.h> unsigned int str_length(const char * d) { } void main(void) { char a[] = "Willtek"; printf("%d\n", sizeof(a)); printf("%d\n", str_length(a)); } 출력 예시 8 7 정답 코드 #include <stdio.h> unsigned int str_length(const char * d) { int cnt = 0; while (*d++) cnt++; return cnt; } void main(void) { char a[] = "Willtek"; printf("%d\n", sizeof(a)); printf("%d\n", str_length(a)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex51] 음료수 자판기
문제 설명 번호를 넣으면 원하는 음료를 리턴해 주는 함수를 설계하라 scnaf로 입력받은 정수 값(0~3)을 자판기 함수에 넣으면 해당하는 음료 이름을 리턴 한다. 0 ~ 3 범위의 값 이외의 값은 입력되지 않는다. main은 리턴된 음료수를 인쇄해 준다. main 함수 내부와 Vending_Machine 함수의 리턴 형식을 완성하라 #include <stdio.h> Vending_Machine(int num) // 함수 리턴 프로토타입 완성 { static char drink[4][10] = { "cola", "milk", "coffee", "wine" }; return drink[num]; } void main(void) { // 코드 작성 } 입력 설명 정수 값으로 음료의 번호(0 ~ 3)를 입력 받는다. 출력 설명 출력 예시와 같은 형태로 출력한다. 입력 예시 0 출력 예시 cola 정답 코드 #include <stdio.h> char * Vending_Machine(int num) { static char drink[4][10] = { "cola", "milk", "coffee", "wine" }; return drink[num]; } void main(void) { int n; scanf("%d", &n); printf("%s\n", Vending_Machine(n)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex50] 같은 모양 찾기 simple
문제 설명 아래와 같이 모눈종이에 각각의 칸들이 칠해져 있는 그림이 있을 때 모눈종이에서 찾고 싶은 패턴의 모양이 몇 개가 있는지를 검사하려고 한다. 이 때, 찾고자 하는 모눈종이의 크기 M(0≤M≤100)과 패턴의 크기 P(0≤P≤100)은 주어진다. 찾고자 하는 패턴의 모양은 회색과 흰색으로 칠해지고, 패턴은 같은 모양만 찾으면 된다. 또한 회색으로 칠해진 칸은 패턴 매치 검사 시 반복되어 사용될 수 있다. #include <stdio.h> int main(void) { // 여기서부터 작성 return 0; } 입력 설명 첫 번째 줄에는 모눈종이이의 크기 M(0≤M≤100)이 주어진다. 두 번째 줄부터 M 줄까지는 모눈종이에 그린 그림을 칠한 칸은 1로, 칠하지 않은 칸은 0으로 모눈종이의 줄 별로 입력한다. 다음 줄에는 패턴의 크기 P(0≤P≤100)가 주어진다. 다음 줄부터 P개의 줄에 걸쳐 찾고 싶은 패턴의 모양이 주어진다. 모양이 있는 부분만 1 로 입력하고 나머지는 0으로 처리한다. 출력 설명 출력은 찾고 싶은 패턴의 모양이 모눈종이에 그린 그림에 몇 개가 있는지 그 개수를 출력한다. 입력 예시 10 0000000001 1110000000 0000001000 0000101000 1111111111 0000101000 0000001000 0000000000 1110000000 0000000001 3 100 111 100 출력 예시 1 정답 코드 #include <stdio.h> int maa[110][110], b[110][110]; int N,P; int pattern(int k, int m) { int i, j; int sol = 0; for (i = 0; i < N ; i++) { for (j = 0; j < N ; j++) { if (maa[i + k][j + m] == b[i][j]) { sol++; } } } return sol; } int main(void) { int i, j; scanf("%d", &P); for (i = 0; i < P; i++) { for (j = 0; j < P; j++) { scanf("%1d", &maa[i][j]); } } scanf("%d", &N); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { scanf("%1d", &b[i][j]); } } int Num = 0; for (i = 0; i <= P - N; i++) { for (j = 0; j <= P - N; j++) { if (pattern(i, j) == N*N) { Num++; } } } printf("%d ", Num); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex49] 가장 큰 숫자와 가장 큰 숫자가 있는 행과 열 변호 인쇄
문제 설명 a[5][4] 배열을 대상으로 아래 결과를 인쇄하는 코드를 설계하라 배열에서 가장 큰 숫자가 포함된 행과 열번호 및 최대값을 인쇄 같은 최대값이 여러 줄에 있을 경우 가장 낮은 줄 번호를 인쇄 행과 열의 번호는 0번 행부터 시작한다 #include <stdio.h> int a[5][4] = { {10,2,-3,4}, {5,-6,7,-8}, {-9,10,-19,12}, {15,-8,7,-8}, {-3,10,9,17} }; void main(void) { int i, j; // 가장 큰 값이 저장된 행 번호, 열번호, 최대값을 찾아서 인쇄한다 } 출력 설명 4 3 17 출력 예시 4 3 17 정답 코드 #include <stdio.h> int a[5][4] = { {10,2,-3,4}, {5,-6,7,-8}, {-9,10,-19,12}, {15,-8,7,-8}, {-3,10,9,17} }; void main(void) { int i, j; int max = a[0][0]; int max_row = 0; int max_col = 0; for (i = 0; i < 5; i++) { for (j = 0; j < 4; j++) { if (a[i][j] > max) { max = a[i][j]; max_row = i; max_col = j; } } } printf("%d %d %d", max_row, max_col, max); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex48] 4명의 성적을 입력 받아 1등인 학생을 찾으시오
문제 설명 1줄에 정수 4개씩 3줄에 걸쳐 입력 받아 배열에 저장한다. 행과 열 단위의 합계를 인쇄한다. 예를 들어 아래와 같이 입력되면 다음과 같은 결과를 얻을 수 있다 4 3 1 7 7 8 6 2 9 5 2 6 그러면 출력은 첫째 줄에는 각 행의 합계를 공백으로 구분해서 출력하고 둘째 줄에는 각 열의 합계를 공백으로 구분해서 출력한다. 즉, 다음과 같이 출력하면 된다. 15 23 22 20 16 9 15 입력 설명 1줄에 정수 4개가 공백으로 구분되며 3줄에 걸쳐 입력 받는다. 단 정수는 양의 정수이다. 출력 설명 첫째 줄에는 행 단위 합계를 인쇄하고 두 번째 줄에는 열 단위 합계를 인쇄한다. 입력 예시 4 3 1 7 7 8 6 2 9 5 2 6 출력 예시 15 23 22 20 16 9 15 정답 코드 #include <stdio.h> int arr[3 + 2][4 + 2]; void input(void) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { scanf("%d", &arr[i][j]); } } } void solve(void) { int d; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { d = arr[i][j]; arr[i][4] += d; arr[3][j] += d; } } } void output(void) { for (int i = 0; i < 3; i++) { printf("%d ", arr[i][4]); } printf("\n"); for (int j = 0; j < 4; j++) { printf("%d ", arr[3][j]); } } void main(void) { input(); solve(); output(); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex47] 4명의 성적을 입력 받아 1등인 학생을 찾으시오
문제 설명 3과목씩 4명의 점수를 입력 받아 배열에 저장한 후 성적이 1등인 학생이 몇 번째 학생인지 해당 요소번호를 인쇄한다. 요소번호는 0번부터이다. 성적이 같은 경우는 낮은 번호를 출력한다. 입력 설명 줄당 한 명씩 3과목의 점수가 공백으로 구분되며 4줄에 걸쳐 입력된다. 점수는 양의 정수로 0~100 사이다. 출력 설명 1등인 학생이 몇 번째 학생인지 해당 요소번호를 출력한다. 요소번호는 0번부터이다. 입력 예시 80 50 40 30 80 90 60 100 70 90 50 80 출력 예시 2 정답 코드 #include <stdio.h> void main(void) { int s[4][3]; int i, j, sum, max = 0, num = 0; for (i = 0; i < 4; i++) { sum = 0; for (j = 0; j < 3; j++) { scanf(" %d", &s[i][j]); sum += s[i][j]; } if (sum > max) { max = sum; num = i; } } printf("%d\n", num); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex46] 4명의 성적을 입력 받아 합계를 계산하여 인쇄하시오
문제 설명 3과목씩 4명의 점수를 입력 받아 배열에 저장한 후 합계를 인쇄한다. 입력 설명 줄당 한 명씩 3과목의 점수가 공백으로 구분되며 4줄에 걸쳐 입력 받는다. 점수는 양의 정수로 0~100사이이다. 출력 설명 줄당 한 명씩 3과목의 점수와 합계를 4줄 인쇄한다. (인쇄시 점수 1개씩 %4d로 포맷을 맞춰 인쇄하고 점수와 점수사이는 공백으로 구분한다) 입력 예시 80 50 40 30 80 90 60 100 70 90 50 80 출력 예시 80 50 40 170 30 80 90 200 60 100 70 230 90 50 80 220 정답 코드 #include <stdio.h> int s[4][3]; void main(void) { int i, j, sum; for (i = 0; i < 4; i++) { for (j = 0; j < 3; j++) { scanf(" %d", &s[i][j]); } } for (i = 0; i < 4; i++) { for (sum = 0, j = 0; j < 3; j++) { printf("%4d ", s[i][j]); sum += s[i][j]; } printf("%4d\n", sum); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex45] 배열의 회전
문제 설명 a 배열의 행과 열을 바꾸어 b 배열에 저장하는 코드를 설계하라. a와 b 배열의 예는 다음과 같다. a 배열 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 b배열 16 12 8 4 15 11 7 3 14 10 6 2 13 9 5 1 입력 설명 배열의 크기 N 및 N* N 크기의 배열 a를 입력 받는다 N은 (1 <= N <= 10) 범위이다. 출력 설명 a 배열을 문제에서 제시한 것과 같이 회전하여 b 배열에 저장하고, b 배열의 내용을 출력 한다. 입력 예시 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 출력 예시 16 12 8 4 15 11 7 3 14 10 6 2 13 9 5 1 정답 코드 #include <stdio.h> int a[10][10]; int b[10][10]; int N; int main(void) { int i, j; scanf("%d", &N); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { scanf("%d", &a[i][j]); } } for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { b[N - 1 - j][N - 1 - i] = a[i][j]; } } for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d ", b[i][j]); } printf("\n"); } return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex44] 1개의 정수를 추가하고 배열를 인쇄하시오
문제 설명 첫줄에 입력되는 N(1 <= N <= 17)개 만큼 다음줄에 입력되는 정수(음수, 0, 양수 모두 가능)를 입력받아 배열에 저장한다. 단, 입력되는 값은 오름차순으로 정렬된 상태로 주어지며 같은 값이 중복되어 있을수는 있다. 마지막 줄에 추가할 값을 정수로 입력 받는다. 추가될 값이 오름차순이 되도록 배열에 추가한 후 결과를 인쇄한다. 입력 예시 10 10 20 30 40 50 60 70 80 90 100 65 출력 예시 10 20 30 40 50 60 65 70 80 90 100 정답 코드 #include <stdio.h> int n, m; int a[18 + 2]; void input(void) { int i; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &a[i]); } scanf("%d", &m); } void solve(void) { int i; for (i = (n - 1); i >= 0; i--) { a[i + 1] = a[i]; if (a[i] <= m) { a[(i + 1)] = m; break; } } if (i == -1) { a[0] = m; } } void output(void) { int i; for (i = 0; i < (n + 1); i++) { printf("%d ", a[i]); } } void main(void) { input(); solve(); output(); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex43] 두 수의 거리
문제 설명 두 정수를 입력 받아, 두 수의 차이를 절대값으로 인쇄하라. #include <stdio.h> int main(void) { int a, b; scanf("%d %d", &a, &b); // 여기서부터 작성 return 0; } 입력 설명 공백으로 구분하여 두 정수를 입력한다. 출력 설명 두 수의 차이를 절대값으로 출력한다. 입력 예시 15 12 출력 예시 3 정답 코드 #include <stdio.h> int ABS (int x) { return (x < 0) ? -x : x; } int main(void) { int a, b; scanf("%d %d", &a, &b); printf("%d\n", ABS(a-b)); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex42] 정수 역순 인쇄
문제 설명 1개의 양의 정수 n을 입력 받아 n정수값을 역순으로 인쇄한다 입력 설명 첫째 줄에 양의 정수 n이 입력된다 출력 설명 입력된 n 정수값을 역순으로 출력한다 (n이 12345678이면, 출력은 87654321) 입력 예시 12345678 출력 예시 87654321 정답 코드 #include <stdio.h> void Num_Reverse(int num) { int i=0; while(num) { printf("%d", num%10); num/=10; } } void main(void) { int n; scanf("%d", &n ); Num_Reverse(n); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex41] 약수 출력
문제 설명 1개의 정수를 n을 입력 받아 2부터 n까지 각 수들의 약수를 모두 인쇄하시오. (1<n<1000) 입력 설명 첫째 줄에 양의 정수 n이 입력된다 (1<n<1000) 출력 설명 2부터 n까지 각 수들의 약수를 모두 인쇄하시오 입력 예시 10 출력 예시 1 2 1 3 1 2 4 1 5 1 2 3 6 1 7 1 2 4 8 1 3 9 1 2 5 10 정답 코드 # include <stdio.h> int main(void) { int n; scanf("%d", &n); for (int i=2; i<=n; i++) { for (int j=1; j<=i; j++) { if (i%j==0) printf("%d ", j); } printf("\n"); } return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex40] 3의 배수의 합
문제 설명 3부터 값을 증가시키며 3의 배수의 합을 구할 때 합이 1000이 넘지 않는 3의 배수를 인쇄하는 프로그램을 작성하시오. (즉, 3+6+9+12+…+N < 1000 을 만족하는 가장 큰 N을 인쇄) 출력 설명 3+6+9+12+...+N < 1000 을 만족하는 가장 큰 N을 인쇄 출력 예시 75 정답 코드 # include <stdio.h> int main() { int sum = 0; int i; for (i=3; ;i+=3) { sum += i; if (sum > 1000) break; } printf("%d", i-3); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex39] 주사위 던지기2
문제 설명 3개의 주사위를 던졌을 때 나올 수 있는 모든 경우의 수를 인쇄하시오 출력 예시 1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 2 1 1 2 2 1 2 3 1 2 4 1 2 5 1 2 6 1 3 1 1 3 2 1 3 3 1 3 4 1 3 5 1 3 6 1 4 1 1 4 2 1 4 3 1 4 4 1 4 5 1 4 6 1 5 1 1 5 2 1 5 3 1 5 4 1 5 5 1 5 6 1 6 1 1 6 2 1 6 3 1 6 4 1 6 5 1 6 6 2 1 1 2 1 2 2 1 3 2 1 4 2 1 5 2 1 6 2 2 1 2 2 2 2 2 3 2 2 4 2 2 5 2 2 6 2 3 1 2 3 2 2 3 3 2 3 4 2 3 5 2 3 6 2 4 1 2 4 2 2 4 3 2 4 4 2 4 5 2 4 6 2 5 1 2 5 2 2 5 3 2 5 4 2 5 5 2 5 6 2 6 1 2 6 2 2 6 3 2 6 4 2 6 5 2 6 6 3 1 1 3 1 2 3 1 3 3 1 4 3 1 5 3 1 6 3 2 1 3 2 2 3 2 3 3 2 4 3 2 5 3 2 6 3 3 1 3 3 2 3 3 3 3 3 4 3 3 5 3 3 6 3 4 1 3 4 2 3 4 3 3 4 4 3 4 5 3 4 6 3 5 1 3 5 2 3 5 3 3 5 4 3 5 5 3 5 6 3 6 1 3 6 2 3 6 3 3 6 4 3 6 5 3 6 6 4 1 1 4 1 2 4 1 3 4 1 4 4 1 5 4 1 6 4 2 1 4 2 2 4 2 3 4 2 4 4 2 5 4 2 6 4 3 1 4 3 2 4 3 3 4 3 4 4 3 5 4 3 6 4 4 1 4 4 2 4 4 3 4 4 4 4 4 5 4 4 6 4 5 1 4 5 2 4 5 3 4 5 4 4 5 5 4 5 6 4 6 1 4 6 2 4 6 3 4 6 4 4 6 5 4 6 6 5 1 1 5 1 2 5 1 3 5 1 4 5 1 5 5 1 6 5 2 1 5 2 2 5 2 3 5 2 4 5 2 5 5 2 6 5 3 1 5 3 2 5 3 3 5 3 4 5 3 5 5 3 6 5 4 1 5 4 2 5 4 3 5 4 4 5 4 5 5 4 6 5 5 1 5 5 2 5 5 3 5 5 4 5 5 5 5 5 6 5 6 1 5 6 2 5 6 3 5 6 4 5 6 5 5 6 6 6 1 1 6 1 2 6 1 3 6 1 4 6 1 5 6 1 6 6 2 1 6 2 2 6 2 3 6 2 4 6 2 5 6 2 6 6 3 1 6 3 2 6 3 3 6 3 4 6 3 5 6 3 6 6 4 1 6 4 2 6 4 3 6 4 4 6 4 5 6 4 6 6 5 1 6 5 2 6 5 3 6 5 4 6 5 5 6 5 6 6 6 1 6 6 2 6 6 3 6 6 4 6 6 5 6 6 6 정답 코드 #include <stdio.h> int main(void) { for (int i = 1; i <= 6; i++) { for (int j = 1; j <= 6; j++) { for (int h = 1; h <= 6; h++) { printf("%d %d %d\n", i, j, h); } } } return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex38] 마지막 정수 찾기
문제 설명 1개의 정수 n을 입력 받아 1+2+3… +x 의 합계가 n이상이 되면 마지막 더한 수 x를 구하여 인쇄한다. ( 1+2+3… +x >= n 의 조건이며 n은 양의 정수임 ) 입력 설명 첫째 줄에 양의 정수 n이 입력된다 출력 설명 1+2+3… +x >= n을 만족하는 제일 작은 x를 출력한다 입력 예시 2500 출력 예시 71 정답 코드 #include <stdio.h> int Count_Sum(int num) { int i=1, sum=0; while(sum<num) { sum+=i; i++; } return i-1; } void main(void) { int n; scanf("%d", &n); printf( "%d\n", Count_Sum( n ) ); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex37] 반복문을 활용한 별 자판기 - 역삼각별
문제 설명 반복문을 이용하여 다음 모양을 인쇄하는 함수를 설계하고 이름 main에서 호출하라. 단, printf 한 번에 ‘*’ 한 번만 출력하고, for루프를 사용하여 구현하라. 출력 설명 '*' 문자를 출력 예시와 같이 출력한다. 출력 예시 ***** **** *** ** * 정답 코드 #include <stdio.h> void Draw_Start2(void) { int line, star; for (line = 0; line < 5; line++) { for (star = 0; star < 5 - line; star++) { printf("*"); } printf("\n"); } } void main(void) { Draw_Start2(); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex36] 반복문을 활용한 별 자판기 - 사각별
문제 설명 반복문을 이용하여 다음 모양을 인쇄하는 함수를 설계하고 이름 main에서 호출하라. 단, printf 한 번에 ‘*’ 한 번만 출력하고, for루프를 사용하여 구현하라. 출력 설명 '*' 문자를 출력 예시와 같이 출력한다. 출력 예시 ***** ***** ***** 정답 코드 #include <stdio.h> void Draw_Start1(void) { int line, star; for (line = 0; line < 3; line++) { for (star = 0; star < 5; star++) { printf("*"); } printf("\n"); } } void main(void) { Draw_Start1(); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex35] 두 정수의 중간 값을 구하는 함수
문제 설명 정수 2개를 입력 받으면 두 수의 중간 값을 리턴하는 함수 설계 입력 값은 0와 음의 정수, 양의 정수 모두 가능하다 10과 20의 중간은 15 이나 1과 6 사이일 경우 3이나 4나 모두 중간 값이 될 수 있다 따라서 중간 값이 2개가 되는 값들은 입력되지 않는다 또한 두 수가 서로 같은 경우도 입력되지 않는다. 입력 예시 20 10 출력 예시 15 정답 코드 #include <stdio.h> int Search_Middle(int num1, int num2) { while (++num1 < --num2); return num1; } void main(void) { int min = 0, max = 0, temp; scanf("%d %d", &min, &max); if (min > max) { temp = min; min = max; max = temp; } printf("%d\n", Search_Middle(min, max)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex34] 팩토리얼(!)을 구하는 함수
문제 설명 입력 받은 양의 정수의 팩토리얼(!)을 구하는 함수 parameter, return 모두 int 팩토리얼: 3! = 3 * 2 * 1 함수의 리턴타입이 왜 unsigned long long int 일까? 이 경우 몇까지의 팩토리얼 값을 구할 수 있을까? #include <stdio.h> unsigned long long int Factorial(int num) { } void main(void) { int value; scanf("%d", &value); printf("%llu\n", Factorial(value)); } 입력 예시 3 출력 예시 6 정답 코드 #include <stdio.h> unsigned long long int Factorial(int num) { int i; unsigned long long int answer = 1; for (i = 2; i <= num; i++) { answer *= i; } return answer; } void main(void) { int value; scanf("%d", &value); printf("%llu\n", Factorial(value)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex33] 두 수를 입력 받아서 그 사이에 존재하는 소수를 인쇄하는 프로그램
문제 설명 두 수를 입력 받아 그 사이의 소수를 인쇄하는 함수를 설계하라 main에서 두 수를 입력 받은 함수에 전달하여 두 수 사이의 소수를 인쇄한다 다음 사항을 준수하도록 한다 입력 값이 음수이거나 0이면 다시 입력 받을 것 (즉, 양의 정수만 입력 값으로 사용함) 10 다음 200이 올수도 있지만 200다음 10이 올 수도 있으니 어떤 경우든지 처리되도록 함 잘못된 입력에 대한 예외처리는 main에서 할까 소수인쇄 함수에서 할까? 일반적으로 함수는 단순한 일만 하게 만드는 것이 좋음 결국 main에서 잘못된 입력을 처리해 주고 정상인 값들만 함수로 전달하는 것이 좋음 예외처리 및 입력 코드는 아래 코드 참고 소수는 1은 포함이 되지 않지만 그냥 너그러이 용서해 주세요 1도 소수로 보고 인쇄 해주세요 #include <stdio.h> void Print_Prime(int min, int max) { } void main(void) { int a, b; scanf(" %d", &a); scanf(" %d", &b); if ((a <= 0) || (b <= 0)) { printf("Error!!\n"); } else { // 코드 구현 Print_Prime(a, b); } } 입력 예시 1 20 출력 예시 1 2 3 5 7 11 13 17 19 정답 코드 #include <stdio.h> void Print_Prime(int min, int max) { int i, j, k; for (i = min; i <= max; i++) { k = 0; for (j = 2; j < i; j++) { if ((i % j) == 0) { k = 1; break; } } if (k == 0) { printf("%d\n", i); } } } void main(void) { int i, a, b; scanf(" %d", &a); scanf(" %d", &b); if ((a <= 0) || (b <= 0)) { printf("Error!!\n"); } else { if (a > b) { i = a; a = b; b = i; } Print_Prime(a, b); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex32] 소수 인쇄하기
문제 설명 1부터 입력 받은 값 n(n > 1) 까지의 소수를 모두 인쇄하는 함수를 설계하라. 리턴은 없고 int를 받으면 그 사이에 있는 소수는 모두 인쇄하는 함수를 설계한다. 소수(prime number): 1과 자기 자신으로만 나누어지는 수 2부터 (자기-1)까지 값으로 계속 나누어가면서 나머지 0인 값이 나오면 소수가 아니다. 입력 설명 숫자를 한 개 입력 받는다. 출력 설명 값을 출력 예시와 같이 출력한다. 입력 예시 11 출력 예시 2 3 5 7 11 정답 코드 #include <stdio.h> void Print_Prime(int max) { int i, j, k; for (i = 2; i <= max; i++) { k = 0; for (j = 2; j < i; j++) { if ((i % j) == 0) { k = 1; break; } } if (k == 0) { printf("%d ", i); } } } void main(void) { int n; scanf("%d", &n); Print_Prime(n); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex31] 소수 판단
문제 설명 N개만큼 정수 M을 반복 입력 받아 정수 M이 소수라면 YES, 아니면 NO를 인쇄한다. 단 함수를 설계하여 구현 한다. 입력 설명 첫째 줄에 정수 N(1≦ N ≦ 100)이 입력되고 다음 줄부터 N개의 줄에 정수 M(1≦ M ≦ 1,000,000)이 입력된다 출력 설명 소수이면 YES를 아니면 NO를 출력한다 입력 예시 4 13 59 124 1151 출력 예시 YES YES NO YES 정답 코드 int Prime_Check(int m) { int i; for(i=2;i<m;i++) { if(m%i==0) return 0; } return 1; } void main(void) { int N, M; int i; scanf("%d", &N); for(i=0;i<N;i++) { scanf("%d", &M); if( Prime_Check( M )==1 ) printf("YES\n"); else printf("NO\n"); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex30] 입력받은 수 까지 짝수와 3의 배수를 제외한 숫자 인쇄
문제 설명 for loop을 이용하여 다음과 같은 함수를 설계하라. 1부터 넘어온 숫자까지 사이에 존재하는 짝수와 3의 배수를 제외한 숫자를 인쇄한다. 인쇄는 한 줄에 9개의 숫자를 인쇄하며 숫자당 최대 3자리를 차지하도록 한다. 리턴은 없고 함수명은 임의로 하되 입력 받을 수 있는 최대값은 999 까지이다. 값 하나를 인쇄하는 printf는 다음 코드를 사용한다 printf("%3d ", i); 입력 설명 숫자 1개를 입력 받는다. 입력 받을 수 있는 최대값은 999이다. 출력 설명 값을 출력 예시와 같이 출력한다. 입력 예시 121 출력 예시 1 5 7 11 13 17 19 23 25 29 31 35 37 41 43 47 49 53 55 59 61 65 67 71 73 77 79 83 85 89 91 95 97 101 103 107 109 113 115 119 121 정답 코드 #include <stdio.h> void func(int num) { int i; int cnt = 0; for (i = 1; i <= num; i++) { if ((i % 2 != 0) && (i % 3 != 0)) { printf("%3d ", i); cnt++; } if (cnt == 9) { printf("\n"); cnt = 0; } } } void main(void) { int n; scanf("%d", &n); func(n); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex29] 'A'부터 입력 받은 글자 까지 알파벳 인쇄
문제 설명 ‘A’부터 입력받은 글자(영문 알파벳 대문자)까지 알파벳을 인쇄하는 코드를 for 루프로 구현하라. 입력 예시 K 출력 예시 A B C D E F G H I J K 정답 코드 #include <stdio.h> void main(void) { char i, c; scanf("%c", &c); for (i = 'A'; i <= c; i++) { printf("%c\n", i); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex28] 숫자 7부터 n개 정수 인쇄
문제 설명 숫자를 7부터 입력받은 정수 n(n > 0)개 만큼 1씩 증가한 정수를 인쇄하는 코드를 for 루프로 구현하라. 입력 예시 8 출력 예시 7 8 9 10 11 12 13 14 정답 코드 #include <stdio.h> void main(void) { int i; int n; scanf("%d", &n); for(i = 7; i < (n + 7); i++) { printf("%d\n", i); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex27] *을 입력 받은 수 만큼 인쇄하는 코드
문제 설명 *을 입력 받은 정수 n개 만큼 인쇄하는 코드를 for 루프로 구현하라. 단, 루프 1번에 한 개의 * 출력 #include <stdio.h> char Common_Calc(int num); int main(void) { //함수작성 return 0; } char Common_Calc(int num) { //함수작성 } 입력 예시 15 출력 예시 *************** 정답 코드 #include <stdio.h> void main(void) { int i, n; scanf("%d", &n); for (i = 0; i < n; i++) { printf("*"); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex26] 넘어온 정수가 3과 5의 공배수인지 판별하는 Common_Calc 함수를 구현하시오
문제 설명 [함수 형식] char Common_Calc( int num ); [함수 기능] 넘어온 수가 3과 5의 공배수라면 ‘O’, 아니면 ‘X’를 리턴한다. [main 함수] 1개의 정수를 입력 받아 Common_Calc 함수를 호출하여 리턴 된 문자를 인쇄한다. #include <stdio.h> char Common_Calc(int num); int main(void) { //함수작성 return 0; } char Common_Calc(int num) { //함수작성 } 입력 설명 첫 줄에 정수 a가 입력된다. (a는 int 정수 범위 이내) 출력 설명 입력된 정수가 3과 5의 공배수이면 ‘O’(영문자 대문자)를 아니면 ‘X’ (영문자 대문자)를 인쇄한다. 입력 예시 15 출력 예시 O 정답 코드 #include <stdio.h> char Common_Calc(int num); int main(void) { int input; scanf("%d", &input); printf("%c", Common_Calc(input)); return 0; } char Common_Calc(int num) { //if(!(num%3) && !(num%5)) return 'O'; if(!(num%15)) return 'O'; return 'X'; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex25] 넘어온 정수의 절대값을 리턴 하는 Abs_Calc 함수를 구현하시오
문제 설명 [함수 형식] int Abs_Calc(int num); [함수 기능] 넘어온 정수의 절대값을 리턴한다. [main 함수] 1개의 정수를 입력 받아 Abs_Calc 함수를 호출하여 리턴 된 절대값을 인쇄한다 #include <stdio.h> int Abs_Calc(int num); int main(void) { //함수작성 return 0; } int Abs_Calc(int num) { //함수작성 } 입력 설명 첫 줄에 정수 a가 입력된다. (a는 int 정수 범위 이내) 출력 설명 입력된 정수의 절대값을 인쇄한다. 입력 예시 -5 출력 예시 5 정답 코드 #include <stdio.h> int Abs_Calc(int num); int main(void) { int x; scanf("%d", &x); printf("%d", Abs_Calc(x)); return 0; } int Abs_Calc(int num) { if(num>=0) return num; return -num; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex24] 두 개의 정수 중 큰 수를 판별하는 Max_Calc 함수를 구현하시오
문제 설명 [함수 형식] int Max_Calc(int a, int b); [함수 기능] 넘어온 두 정수 중 큰 수를 판별하여 큰 수를 리턴한다. 같은 값일 경우 그 값을 리턴한다 [main 함수] 2개의 정수를 입력받아 Max_Calc함수를 호출하여 리턴 된 큰 수를 인쇄한다. #include <stdio.h> int Max_Calc(int a, int b); int main(void) { //함수작성 return 0; } int Max_Calc(int a, int b) { //함수작성 } 입력 설명 첫 줄에 두 개의 정수 a, b가 공백으로 구분되어 입력된다. (a, b 모두 int 정수 범위 이내) 출력 설명 입력된 두 수중 큰 수를 인쇄한다. 입력 예시 5 10 출력 예시 10 정답 코드 #include <stdio.h> int Max_Calc(int a, int b) { if(a>=b) return a; return b; } void main(void) { int a,b; scanf("%d %d",&a,&b); printf("%d\n",Max_Calc(a,b)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex23] 성적 계산 함수
문제 설명 다음 조건에 맞는 성적처리 함수를 설계하시오. parameter는 int이고 함수명은 func, return 타입은 char로 한다. 성적기준은 90~100(‘A’), 80~89(‘B’), 70~79(‘C’), 60~69(‘D’), 60미만(‘F’)이다. 성적을 입력하면 학점(문자 A, B, C, D, F중 하나)을 리턴하는 함수를 설계한다. 단, 지정된 범위의 값이 아니면(음수나 100보다 큰 값) 반드시 문자 ‘X’를 리턴하여 출력한다. #include <stdio.h> // 함수 func 설계 void main(void) { int score; scanf("%d", &score); printf("%c\n", func(score)); } 입력 설명 성적 점수인 정수 하나를 입력받는다. (음수, 양수, 0 모두 가능한 정수) 출력 설명 입력 값에 따른 성적(A, B, C, D, F중 하나)을 출력하고 0~100범위의 수가 아니면 X를 출력한다. 입력 예시 92 출력 예시 A 정답 코드 #include <stdio.h> char func(int s) { if ((s < 0) || (s > 100)) return 'X'; switch (s / 10) { case 0 : case 1 : case 2 : case 3 : case 4 : case 5 : return 'F'; case 6 : return 'D'; case 7 : return 'C'; case 8 : return 'B'; case 9 : case 10: return 'A'; } } void main(void) { int score; scanf("%d", &score); printf("%c\n", func(score)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex22] 4 ~ 10 사이 값을 찾는 함수
문제 설명 숫자가 4 ~ 10 사이 값이면 1 아니면 0을 리턴하는 함수를 설계하라. #include <stdio.h> int f1(int num) { } void main(void) { int num; scanf("%d", &num); printf("%d\n", f1(num)); } 입력 예시 4 출력 예시 1 정답 코드 #include <stdio.h> int f1(int num) { return (num >= 4) && (num <= 10); } void main(void) { int num; scanf("%d", &num); printf("%d\n", f1(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex21] 3의 배수 또는 5의 배수 찾는 함수
문제 설명 숫자가 3 또는 5의 배수이면 1 아니면 0을 리턴하는 함수를 설계하라. #include <stdio.h> int f1(int num) { } void main(void) { int num; scanf("%d", &num); printf("%d\n", f1(num)); } 입력 예시 6 출력 예시 1 정답 코드 #include <stdio.h> int f1(int num) { return !(num % 3) || !(num % 5); } void main(void) { int num; scanf("%d", &num); printf("%d\n", f1(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex20] 2,3,5의 배수 판단하기
문제 설명 2의 배수면 2, 3의 배수면 3, 5의 배수면 5를 2,3,5의 배수가 아니면 0을 리턴하는 함수를 작성하라. 단, 공통배수는 입력되지 않는 것으로 본다 #include <stdio.h> int compare(int num) { } void main(void) { int num; scanf("%d", &num); printf("%d\n", compare(num)); } 입력 예시 33 출력 예시 3 정답 코드 #include <stdio.h> #if 1 int compare(int num) { if(num % 2 == 0) return 2; if(num % 3 == 0) return 3; if(num % 5 == 0) return 5; return 0; } #endif #if 0 int compare(int num) { int r = 0; if (num % 2 == 0) r = 2; else if (num % 3 == 0) r = 3; else if (num % 5 == 0) r = 5; return r; } #endif #if 0 int compare(int num) { int r = 0; if ((num % 2) == 0) r = 2; else if ((num % 3) == 0) r = 3; else if ((num % 5) == 0) r = 5; return r; } #endif void main(void) { int num; scanf("%d", &num); printf("%d\n", compare(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex19] 홀짝을 맞춰라 - 변경
문제 설명 양의 정수를 넣으면 짝수인지 홀수 인지를 맞추는 함수를 설계하라 이 함수는 리턴으로 짝수이면 0, 홀수이면 1을 리턴한다 #include <stdio.h> int Check_Odd_Even(int num) { } void main(void) { int num; scanf("%d", &num); printf("%d\n", Check_Odd_Even(num)); } 입력 예시 3 출력 예시 1 정답 코드 #include <stdio.h> int Check_Odd_Even(int num) { return num % 2; } void main(void) { int num; scanf("%d", &num); printf("%d\n", Check_Odd_Even(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex18] 홀짝을 맞춰라
문제 설명 양의 정수를 넣으면 짝수인지 홀수 인지를 맞추는 함수를 설계하라 이 함수는 리턴으로 짝수이면 2, 홀수이면 1을 리턴한다 #include <stdio.h> int Check_Odd_Even(int num) { } void main(void) { int num; scanf("%d", &num); printf("%d\n", Check_Odd_Even(num)); } 입력 예시 3 출력 예시 1 정답 코드 #include <stdio.h> #if 1 int Check_Odd_Even(int num) { if (num % 2 == 0) return 2; else return 1; } #endif #if 0 int Check_Odd_Even(int num) { if (num % 2) return 1; return 2; } #endif #if 0 int Check_Odd_Even(int num) { int r; if (num % 2) r = 1; else r = 2; return r; } #endif #if 0 int Check_Odd_Even(int num) { int r = 2; if (num % 2) r = 1; return r; } #endif #if 0 int Check_Odd_Even(int num) { return 2 - num % 2; } #endif void main(void) { int num; scanf("%d", &num); printf("%d\n", Check_Odd_Even(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex17] ASCII 숫자 문자를 정수 숫자로 반환하는 함수
문제 설명 ASCII 숫자(‘1’)를 넣으면 정수(1)로 바꿔주는 함수를 설계하라. 문자는 ‘0’ ~ ‘9’ 사이를 입력하는 것으로 한다. #include <stdio.h> int Change_Char_to_Int(char num) { } void main(void) { char a; scanf("%c", &a); printf("%d\n", Change_Char_to_Int(a)); } 입력 예시 3 출력 예시 3 정답 코드 #include <stdio.h> int Change_Char_to_Int(char num) { return num - '0'; } void main(void) { char a; scanf("%c", &a); printf("%d\n", Change_Char_to_Int(a)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex16] 대문자를 소문자로 바꾸는 함수 작성
문제 설명 대문자를 넣으면 소문자로 바꿔주는 함수를 설계하라. 문자는 ‘A’ ~ ‘Z’ 사이를 입력하는 것으로 한다. #include <stdio.h> char Change_Case(char upper) { } void main(void) { char a; scanf("%c" , &a ); printf("%c => %c\n", a, Change_Case(a)); } 입력 예시 A 출력 예시 A => a 정답 코드 #include <stdio.h> char Change_Case(char upper) { return upper + ('a' - 'A'); } void main(void) { char a; scanf("%c", &a); printf("%c => %c\n", a, Change_Case(a)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex15] float 값을 넣으면 가장 가까운 정수 값을 찾아서 넘겨주는 함수 작성
문제 설명 float 값을 넣으면 가장 가까운 정수 값을 찾아서 넘겨주는 함수를 설계하라 3.56는 4, 3.12는 3으로 반올림하여 가까운 정수를 리턴하되 음수 값은 입력하지 않는 것으로 한다 #include <stdio.h> int find_int(float value); void main(void) { float num; scanf("%f", &num); printf("%d\n", find_int(num)); } int find_int(float value) { } 입력 예시 3.56 출력 예시 4 정답 코드 #include <stdio.h> int find_int(float value); void main(void) { float num; scanf("%f", &num); printf("%d\n", find_int(num)); } int find_int(float value) { float bias = 0.5f; value += bias; return (int)value; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex14] 10진수 자리수 분리하기
문제 설명 4자리의 숫자를 입력받아 1000자리 100자리 10자리 1의 자리 값을 각각 인쇄하라 단, 입력은 1000 ~ 9999 사이의 값이며 이외의 숫자는 입력되지 않는다 입력 설명 4자리 숫자 한 개를 입력 받는다. 숫자 N은 1000~9999사이의 값이다. 입력 예시 1234 출력 예시 1000자리=1, 100자리=2, 10자리=3, 1자리=4 정답 코드 #include <stdio.h> int main() { int N, a, b, c, d; scanf("%d", &N); if ((N >= 1000) && (N <= 9999)) { a = N / 1000; b = (N / 100) % 10; c = (N / 10) % 10; d = N % 10; printf("1000자리=%d, 100자리=%d, 10자리=%d, 1자리=%d\n", a, b, c, d); } return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex13] 반지름을 입력하면 원의 넓이를 구하는 함수 작성
문제 설명 다음 compute_circle_area 함수를 완성하라. pi는 3.14로 설정한다. #include <stdio.h> float compute_circle_area(float radious); void main(void) { float r; scanf("%f", &r); printf("%f\n", compute_circle_area(r)); } float compute_circle_area(float radious) { float pi = 3.14f; // 코드 작성 } 입력 예시 3.2 출력 예시 32.153603 정답 코드 #include <stdio.h> float compute_circle_area(float radious); void main(void) { float r; scanf("%f", &r); printf("%f\n", compute_circle_area(r)); } float compute_circle_area(float radious) { float pi = 3.14f; radious = radious * radious * pi; return radious; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex12] /, % 연산자의 활용 => 10진수 자리수 분리
문제 설명 4자리 정수의 각 자리 값을 추출하는 다음 코드를 완성하라 #include <stdio.h> void main(void) { int a = 2345; int a4, a3, a2, a1; a4 = a3 = a2 = a1 = printf("1000자리=%d, 100자리=%d, 10자리=%d, 1자리=%d\n", a4, a3, a2, a1); } 출력 예시 1000자리=2, 100자리=3, 10자리=4, 1자리=5 정답 코드 #include <stdio.h> void main(void) { int a = 2345; int a4, a3, a2, a1; a4 = a / 1000 % 10; a3 = a / 100 % 10; a2 = a / 10 % 10; a1 = a / 1 % 10; printf("1000자리=%d, 100자리=%d, 10자리=%d, 1자리=%d\n", a4, a3, a2, a1); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex11] int 변수로 함수 실행하기
문제 설명 #include <stdio.h> int func(int a, int b) { return a+b; } void main(void) { int a = (int)func; printf("%d\n", func(3,4)); printf("%d\n", ); } 정답 코드 #include <stdio.h> int func(int a, int b) { return a+b; } typedef int(*FP)(int, int); void main(void) { int a = (int)func; printf("%d\n", func(3,4) ); printf("%d\n", ((FP)a)(3,4)); // printf("%d\n", ((int (*)(int, int))a)(3, 4)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex10] Type casting 연습 3
문제 설명 #include <stdio.h> void func(void *p) { printf("%s\n", ); } void main(void) { char * p = "Willtek"; func(&p); } 정답 코드 #include <stdio.h> void func(void *p) { printf("%s\n", (*(char**)p)); } void main(void) { char * p = "Willtek"; func(&p); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex09] Type casting 연습 2
문제 설명 #include<stdio.h> void func(void * p) { int i; for(i=0; i<3; i++) { printf("%f\n", ); } } void main(void) { double d[3] = {3.14, 5.125, -7.42}; void *p = d; func(&p); } 정답 코드 #include<stdio.h> void func(void * p) { int i; for(i=0; i<3; i++) { printf("%f\n", (*(double**)p)[i]); } } void main(void) { double d[3] = {3.14, 5.125, -7.42}; void *p = d; func(&p); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex08] Type casting 연습 1 (오류 무시)
문제 설명 #include <stdio.h> void func(int x) { printf("%f\n", ); printf("%f\n", ); printf("%f\n", ); } void main(void) { double d[3] = {3.14, 5.125, -7.42}; func((int)d); } 정답 코드 #include <stdio.h> void func(int x) { /* printf("%f\n", ((double*)x)[0]); printf("%f\n", ((double*)x)[1]); printf("%f\n", ((double*)x)[2]);*/ for(i=0; i<3; i++) { printf("%f\n", ((double*)x)[i]); } } void main(void) { double d[3] = {3.14, 5.125, -7.42}; func((int)d); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex07] 함수 Lookup table (코드 수정)
문제 설명 교재의 코드를 그대로 사용하면 안됨(채점을 위하여 get_key 함수 변경됨) 아래 코드 복사하여 fa 배열만 선언할 것 #include <stdio.h> #include <stdlib.h> int add(int a, int b) { return a+b; } int sub(int a, int b) { return a-b; } int mul(int a, int b) { return a*b; } int get_key(void) { static int r = 0; int ret = r; r = (r + 1) % 3; return ret; } fa[3] = {add, sub, mul}; int op(int a, int b) { return fa[get_key()](a,b); } void main(void) { printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); } 출력 예시 7 -1 12 7 -1 12 7 정답 코드 #include <stdio.h> #include <stdlib.h> int add(int a, int b) { return a+b; } int sub(int a, int b) { return a-b; } int mul(int a, int b) { return a*b; } int get_key(void) { static int r = 0; int ret = r; r = (r + 1) % 3; return ret; } int (*fa[3])(int a, int b) = {add, sub, mul}; int op(int a, int b) { return fa[get_key()](a,b); } void main(void) { printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); printf("%d\n", op(3, 4)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex06] 함함수를 함수에 전달하자
문제 설명 #include <stdio.h> int add(int a, int b) { return a+b; } int sub(int a, int b) { return a-b; } void func( ) { printf("%d\n", p(3,4)); } void main(void) { func(add); func(sub); } 출력 예시 7 -1 정답 코드 #include <stdio.h> int add(int a, int b) { return a+b; } int sub(int a, int b) { return a-b; } void func(int (*p)(int a, int b)) { printf("%d\n", p(3,4)); } void main(void) { func(add); func(sub); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex05] 함수 등가포인터의 실행
문제 설명 #include <stdio.h> int add(int a, int b) { return a+b; } void f1(void) { printf("func\n"); } int * f2(void) { static int a[4] = {1,2,3,4}; return a; } void main(void) { // p, q, r 선언 // p, q, r에 대응 함수 대입 printf("%d\n", add(3,4)); f1(); printf("%d\n", f2()[2]); // 위와 동일한 결과가 나오도록 p, q, r로 실행 } 출력 예시 7 func 3 7 func 3 정답 코드 #include <stdio.h> int add(int a, int b) { return a+b; } void f1(void) { printf("func\n"); } int * f2(void) { static int a[4] = {1,2,3,4}; return a; } void main(void) { // p, q, r 선언 int (*p)(int a, int b); void (*q)(void); int * (*r)(void); // p, q, r에 대응 함수 대입 p = add; q = f1; r = f2; printf("%d\n", add(3,4)); f1(); printf("%d\n", f2()[2]); // 위와 동일한 결과가 나오도록 p, q, r로 실행 printf("%d\n", p(3,4)); q(); printf("%d\n", r()[2]); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex04] 2차원 배열의 리턴
문제 설명 #include <stdio.h> func(void) { static int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; return a; } void main(void) { printf("%d\n", func() ); } 출력 예시 7 정답 코드 #include <stdio.h> int (*func(void))[4] { static int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; return a; } void main(void) { printf("%d\n", func()[1][2]); } /* typedef */ #if 0 #include <stdio.h> typedef int(*ARRP)[4]; ARRP func(void) { static int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; return a; } void main(void) { printf("%d\n", func()[1][2] ); } #endif 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex03] 2차원 배열의 전달
문제 설명 #include <stdio.h> void draw_pixel(int y, int x, int value, p ) { p[y][x] = value; } void main(void) { int a[2][3] = {1,2,3,4,5,6}; printf("%d\n", a[1][2]); draw_pixel(1, 2, 10, a); printf("%d\n", a[1][2]); } 출력 예시 6 10 정답 코드 #include <stdio.h> void draw_pixel(int y, int x, int value, int (*p)[3]) { p[y][x] = value; } void main(void) { int a[2][3] = {1,2,3,4,5,6}; printf("%d\n", a[1][2]); draw_pixel(1, 2, 10, a); printf("%d\n", a[1][2]); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex02] 구조체 주소의 함수 전달
문제 설명 #include <stdio.h> struct math { int id; char name[20]; int score; }; void cheat(struct math * test); void main(void) { struct math final={1, "Kim", 50}; cheat(&final); printf("%d\n", final.score); } // 함수에서 score를 100으로 수정하는 코드를 작성하라 // 단, -> 연산자는 사용할 수 없다 void cheat(struct math * test) { = 100; } 출력 설명 50이 100으로 수정되어 인쇄 출력 예시 100 정답 코드 #include <stdio.h> struct math { int id; char name[20]; int score; }; void cheat(struct math * test); void main(void) { struct math final={1, "Kim", 50}; cheat(&final); final.score = 100; printf("%d\n", final.score); } void cheat(struct math * test) // test = &final => *test = final { (*test).score= 100; test[0].score = 100; test->score = 100; // 구조체(공용체) 주소 } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex02] 포인터 배열
문제 설명 배열 a를 이용하여 x[2]를 30으로 만드는 코드를 만드시오 배열 a를 이용하여 x[2]를 30으로 만드는 코드를 만드시오 #include <stdio.h> int x[4] = {1,2,3,4}; void main(void) { int *a[4] = {x+3, x+2, x+1, x}; printf("%d\n", x[2]); = 30; printf("%d\n", x[2]); } 출력 예시 3 30 정답 코드 #include <stdio.h> int x[4] = {1,2,3,4}; void main(void) { int *a[4] = {x+3, x+2, x+1, x}; printf("%d\n", x[2]); //a[0][-1] = 30; //a[1][0] = 30; //a[2][1] = 30; a[3][2] = 30; printf("%d\n", x[2]); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex78] 공용체 활용 예 : 엔디안 모드 변경
문제 설명 Little Big 엔디안 모드를 변경하는 함수를 설계하라 int Change_Endian(int a); a 값을 받으면 엔디안 모드를 바꿔서 리턴 한다 #include <stdio.h> union uni { int a; char b[4]; }; int Change_Endian(int data) { char tmp; union uni x; x.a = data; // 코드 작성 return x.a; } void main(void) { int a = 0x12345678; printf("0x%.8x => 0x%.8x\n", a, Change_Endian(a)); } 출력 예시 0x12345678 => 0x78563412 정답 코드 #include <stdio.h> union uni { int a; char b[4]; }; int Change_Endian(int data) { char tmp; union uni x; x.a = data; // 코드 작성 tmp = x.b[0]; x.b[0] = x.b[3]; x.b[3] = tmp; tmp = x.b[1]; x.b[1] = x.b[2]; x.b[2] = tmp; return x.a; } void main(void) { int a = 0x12345678; printf("0x%.8x => 0x%.8x\n", a, Change_Endian(a)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex77] 1개의 정수를 추가하고 배열를 인쇄하시오
문제 설명 첫줄에 입력되는 N(1 <= N <= 17)개 만큼 다음줄에 입력되는 정수(음수, 0, 양수 모두 가능)를 입력받아 배열에 저장한다. 단, 입력되는 값은 오름차순으로 정렬된 상태로 주어지며 같은 값이 중복되어 있을수는 있다. 마지막 줄에 추가할 값을 정수로 입력 받는다. 추가될 값이 오름차순이 되도록 배열에 추가한 후 결과를 인쇄한다. #include <stdio.h> int main(void) { return 0; } 입력 예시 10 10 20 30 40 50 60 70 80 90 100 65 출력 예시 10 20 30 40 50 60 65 70 80 90 100 정답 코드 #include <stdio.h> int N; int A[17 + 1]; int B; void InputData(void) { scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d", &A[i]); } scanf("%d", &B); } void Solve(void) { int i; for (i = N - 1; i >= 0; i--) { if (A[i] <= B) { A[i + 1] = B; break; } else { A[i + 1] = A[i]; } } if (i == -1) { A[0] = B; } } void OutputData(void) { for (int i = 0; i < N + 1; i++) { printf("%d ", A[i]); } } int main(void) { InputData(); Solve(); OutputData(); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex76] 최대값
문제 설명 9개의 서로 다른 자연수가 주어질 때 이들 중 최대값을 찾고 그 최대값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면 이들 중 최대값은 85이고 이 값은 8번째 수이다. #include <stdio.h> int main(void) { return 0; } 입력 설명 첫 째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 출력 설명 첫째 줄에 최대값을 출력하고 둘째 줄에 최대값이 몇 번째 수인지를 출력한다. 입력 예시 3 29 38 12 57 74 40 85 61 출력 예시 85 8 정답 코드 #include <stdio.h> int A[9]; void InputData(void) { for (int i = 0; i < 9; i++) { scanf("%d", &A[i]); } } int Solve(void) { int maxidx = 0; for (int i = 1; i < 9; i++) { if (A[maxidx] < A[i]) maxidx = i; } return maxidx; } int main(void) { InputData(); int ans = Solve(); printf("%d\n%d\n", A[ans], ans + 1); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex75] 사람 찾기
문제 설명 찾는 사람이 있는 자리 번호를 모두 인쇄하는 코드를 설계하라 첫 줄에 정수 n(1<=n<=10), 다음 줄부터 n명 이름이 공백으로 분리되어 입력된다 단, 입력되는 이름은 공백이 없는 것으로 가정한다 마지막 줄에 줄에 찾고자 하는 사람의 이름이 입력된다 N명 사람들 중에서 찾는 사람을 모두 찾아 그 자리 번호를 한 줄에 하나씩 인쇄하라 단, 자리 번호는 처음 사람이 1번부터 시작하며 찾는 사람은 반드시 1명 이상 존재한다 문자열 비교는 기존에 설계했던 문자열 비교 프로그램을 참고한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 설명 이름은 최대 20자 이하임 입력 예시 5 kim lee park kim song kim 출력 예시 1 4 정답 코드 #include <stdio.h> char a[10][21]; char b[21]; int str_cmp(int n) { int i = 0; for (;;) { if (a[n][i] != b[i]) return 0; if (a[n][i] == '\0' && b[i] == '\0') return 1; i++; } #if 0 while (a[n][i] != '\0' || b[i] != '\0') { if (a[n][i] != b[i]) return 0; i++; } return 1; #endif } void main(void) { int i; int n; scanf("%d", &n); for (i = 0; i < n; i++) { scanf(" %s", &a[i][0]); } scanf(" %s", &b[0]); // scanf(" %s", b); for (i = 0; i < n; i++) { if(str_cmp(i) == 1) printf("%d\n", i + 1); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex74] 다른 모양의 이차원 배열 Transpose
문제 설명 3x4 배열 a 의 값들을 b 배열(4x3)에 옮겨 저장하라 #include <stdio.h> int a[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; int b[4][3]; void transpose2(void) { // 코드 구현 } void main(void) { int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { printf("%d ", a[i][j]); } printf("\n"); } transpose2(); for (i = 0; i < 4; i++) { for (j = 0; j < 3; j++) { printf("%d ", b[i][j]); } printf("\n"); } } 출력 예시 1 2 3 4 5 6 7 8 9 10 11 12 12 8 4 11 7 3 10 6 2 9 5 1 정답 코드 #include <stdio.h> int a[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; int b[4][3]; void transpose2(void) { // 코드 구현 int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { b[4 - 1 - j][3 - 1 - i] = a[i][j]; } } } void main(void) { int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { printf("%d ", a[i][j]); } printf("\n"); } transpose2(); for (i = 0; i < 4; i++) { for (j = 0; j < 3; j++) { printf("%d ", b[i][j]); } printf("\n"); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex73] 이차원 배열 Transpose
문제 설명 4x4 배열의 값들을 출력 예시와 같이 b 배열(4x4)에 옮겨 저장하라 #include <stdio.h> int a[4][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13, 14, 15, 16} }; int b[4][4]; void transpose1(void) { // 코드 구현 } void main(void) { int i, j; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { printf("%d ", a[i][j]); } printf("\n"); } transpose1(); for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { printf("%d ", b[i][j]); } printf("\n"); } } 출력 예시 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 16 12 8 4 15 11 7 3 14 10 6 2 13 9 5 1 정답 코드 #include <stdio.h> int a[4][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13, 14, 15, 16} }; int b[4][4]; void transpose1(void) { // 코드 구현 int i, j; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { b[4 - 1 - j][4 - 1 - i] = a[i][j]; } } } void main(void) { int i, j; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { printf("%d ", a[i][j]); } printf("\n"); } transpose1(); for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { printf("%d ", b[i][j]); } printf("\n"); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex72] 합이 가장 큰 행과 열 찾기
문제 설명 2차원 배열에서 합이 가장 큰 행과 열의 번호를 각각 인쇄하라 #include <stdio.h> void main(void) { // 코드 작성 } 입력 설명 첫 줄에 정수 N(2<=N<=5)이 다음 줄부터 N개의 정수가 N줄에 걸쳐서 입력된다 입력 예시 5 3 -5 12 3 -21 -2 11 2 -7 -11 21 -21 -34 -93 -11 9 14 39 -98 -1 -2 -2 -2 -2 -2 출력 예시 2 1 정답 코드 #include <stdio.h> int N; int a[5][5]; void input(void) { int i, j; scanf("%d", &N); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { scanf("%d", &a[i][j]); } } } void main(void) { int i, j; int sum = 0, max_sum = 0; int max_r, max_c; input(); // 코드 구현 for (i = 0; i < N; i++) { sum = 0; for (j = 0; j < N; j++) { sum += a[i][j]; } if (i == 0) { max_sum = sum; max_r = 0; } else if (sum > max_sum) { max_sum = sum; max_r = i; } } for (j = 0; j < N; j++) { sum = 0; for (i = 0; i < N; i++) { sum += a[i][j]; } if (j == 0) { max_sum = sum; max_c = 0; } else if (sum > max_sum) { max_sum = sum; max_c = j; } } printf("%d %d", max_r + 1, max_c + 1); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex71] 가장 작은 값의 행과 열 번호 찾기
문제 설명 2차원 배열로 입력 받아 가장 값이 작은 행과 열 번호를 인쇄하라 행, 열 번호를 공백으로 분리하여 인쇄하라 단, 행과 열의 번호는 1부터 시작한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 1 3 5 7 9 3 5 8 9 10 2 8 7 6 3 -1 -2 -9 -10 -11 11 22 33 67 90 출력 예시 4 5 정답 코드 #include <stdio.h> int a[5][5]; void input(void) { int i, j; for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { scanf("%d", &a[i][j]); } } } void main(void) { int i, j; int min = 0x7fffffff; int r, c; input(); // 코드 구현 for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { if (min > a[i][j]) { min = a[i][j]; r = i + 1; c = j + 1; } } } printf("%d %d", r, c); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex70] 2차원 배열로 정수 입력 받아서 가장 큰 값 인쇄
문제 설명 2차원 배열을 입력 받아서 가장 값이 큰 값을 인쇄하라 #include <stdio.h> int a[5][5]; void input(void) { int i, j; for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { scanf("%d", &a[i][j]); } } } void main(void) { int i, j; input(); // 코드 구현 } 입력 설명 5줄에 걸쳐서 공백으로 분리된 정수가 5개씩 입력된다 출력 설명 이 들 중 가장 값이 큰 정수를 인쇄하라 입력 예시 1 3 5 7 9 3 5 8 9 10 2 8 7 6 3 -1 -2 -9 -10 -11 11 22 33 67 90 출력 예시 90 정답 코드 #include <stdio.h> int a[5][5]; void input(void) { int i, j; for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { scanf("%d", &a[i][j]); } } } void main(void) { int i, j; int max; input(); // 코드 구현 max = a[0][0];//최댓값 찾기 위해서는 최솟값으로 설정(0x80000000 혹은 첫요소값) for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { if (max < a[i][j]) max = a[i][j]; } } printf("%d\n", max); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex69] 문자열 비교
문제 설명 문자열 2개를 입력 받아 대소를 판단하는 코드를 설계하라 문자열의 대소 비교 규정 : 글자들을 순서대로 비교하면서 대소를 판단한다 대소 판단 예 : (1) KIM == KIM (2) Kim > KIM (3) abcd > abc (4) abx > abcdex 앞 문자열이 크면 “BIG”, 앞 문자열이 작으면 “SMALL”, 같으면 “SAME”을 출력한다 단, 입력되는 두 개의 문자열은 영문자 최대 10글자의 공백이 없는 문자열이다 #include <stdio.h> void main(void) { char a[11]; char b[11]; scanf(" %s", a); scanf(" %s", b); // 코드 구현 } 입력 예시 KIM KIM 출력 예시 SAME 정답 코드 #include <stdio.h> void main(void) { char a[11]; char b[11]; int i = 0; scanf(" %s", a); scanf(" %s", b); // 코드 구현 while (a[i] != 0 || b[i] != 0) { if (a[i] > b[i]) { printf("BIG\n"); return; } if (a[i] < b[i]) { printf("SMALL\n"); return; } i++; } printf("SAME\n"); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex68] 성적처리용 수퍼 컴퓨터
문제 설명 성적처리 프로그램을 배열을 이용하여 함수로 설계하라 Parameter는 int이고 함수명과 return 타입은 임의로 지정하라 성적 기준 : 100~91 -> A, 90~81 -> B, 80~71 -> C, 70~61 -> D, 60이하 -> F 성적을 입력하면 학점을 리턴하는 함수를 설계하라 (문자 A,B,C,D,F 중 하나) 단, 지정된 범위의 값(0~100)이 아니면 반드시 문자 X를 리턴 하라 이 프로그램을 배열을 이용하여 최적의 프로그램으로 구현하라 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 92 출력 예시 A 정답 코드 #include <stdio.h> char s[] = "FFFFFFDCBA"; char grade(int score) { if (score < 0 || score > 100) return 'X'; return s[(score - 1) / 10]; } void main(void) { int score; scanf("%d", &score); printf("%c\n", grade(score)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex67] 암호화 프로그램
문제 설명 다음과 같이 암호표를 만들었다 암호화 프로그램을 설계하라 규정 : A~Z 대문자를 넣으면 다음과 같은 규칙으로 알파벳이 변경되어 나온다 ABCDEFGHIJKLMNOPQRSTUVWXYZ QWERTYUIOPLKJHGFDSAZXCVBNM scanf로 글자를 입력 받아서 암호화된 문자를 인쇄하도록 한다 단, 대문자 A~Z 이외의 글자를 입력하면 종료한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 W I L L T E K 5 출력 예시 V O K K Z T L 정답 코드 #include <stdio.h> char sec[] = "QWERTYUIOPLKJHGFDSAZXCVBNM"; void main(void) { char ch; for (;;) { scanf(" %c", &ch); if ((ch < 'A') || (ch > 'Z')) break; else printf("%c\n", sec[ch - 'A']); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex66] 키 순서대로 집합
문제 설명 입력 받은 20개의 정수들을 작은 값에서 큰 값으로 정렬하라 값을 입력 받아 20개의 배열 요소에 저장을 한다 입력 값은 음수, 양수 상관 없다 단, 20개 정수는 한 줄에 공백으로 분리되어 입력 된다 a[0]에는 가장 작은 값, a[19]에는 가장 큰 값이 저장되도록 정렬(sorting) 한다 정렬된 20개의 데이터를 인쇄한다 가장 작은 값부터 인쇄가 되게 한다 어떻게 배열에 있는 값 들을 정렬 할 수 있을까? a[0]를 a[1] ~ a[19]과 비교하면서 a[0]가 더 크면 자리를 바꾼다 이렇게 하면 a[0]에 가장 작은 값이 들어오게 되고 이것을 a[1] ~ a[19]에 대하여 반복한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 -38 291 92 0 239 4879287 281 -274 2989 4892 88 -1 -1 24 2982 78974983 97994 -5839 398593 398593 출력 예시 -5839 -274 -38 -1 -1 0 24 88 92 239 281 291 2982 2989 4892 97994 398593 398593 4879287 78974983 정답 코드 #include <stdio.h> void main(void) { int i, j, num; int a[20]; for (i = 0; i < 20; i++) { scanf("%d", &num); a[i] = num; } for (i = 0; i < 20 - 1; i++) { for (j = i + 1; j < 20; j++) { if (a[i] > a[j]) { num = a[i]; a[i] = a[j]; a[j] = num; } } } for (i = 0; i < 20; i++) { printf("%d ", a[i]); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex65] 밤을 분류하여 담는 바구니
문제 설명 알밤을 종류별로 분류하여 각각의 바구니에 담고자 한다 공백으로 분리된 100 이하의 양의 정수 m, n(m < n)을 입력 받는다 m ~ n 범위의 수 중에서 다음 조건의 알밤들을 저장 한다. (주의) n도 포함 된다 공주 알밤 : 3의 배수, 수원 알밤 : 5의 배수, 쭉정이 : 3 또는 5의 배수가 아닌 수 단, 3과 5의 공배수이면 공주 알밤이며 개수 제한 없이 모든 값을 다 저장해야 한다 먼저 공주 알밤 수와 값들을 인쇄하고 다음에 수원 알밤 수와 값들을 인쇄한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 1 20 출력 예시 6 3 6 9 12 15 18 3 5 10 20 정답 코드 #include <stdio.h> int a[100 + 2]; int b[100 + 2]; void main(void) { int i, m, n; int cnt1 = 0, cnt2 = 0; scanf("%d %d", &m, &n); for (i = m; i <= n; i++) { if ((i % 3) == 0) { a[cnt1] = i; cnt1++; } else if ((i % 5) == 0) { b[cnt2] = i; cnt2++; } } printf("%d\n", cnt1); for (i = 0; i < cnt1; i++) { printf("%d ", a[i]); } if (cnt1) printf("\n"); printf("%d\n", cnt2); for (i = 0; i < cnt2; i++) { printf("%d ", b[i]); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex64] 귤 판매
문제 설명 귤 판매 : 최대 10개의 귤 중에서 크기가 큰 귤만 판매하고자 한다 첫 줄에 10이하 양의 정수 n, 다음 줄에 공백으로 분리된 n개의 정수를 받는다 이 n개의 정수 중 팔 수 있는 귤(값이 10 이상)을 선별하여 개수와 값 들을 인쇄하라 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 5 8 10 25 4 30 출력 예시 3 10 25 30 정답 코드 #include <stdio.h> int a[10]; int b[10]; void main(void) { int i, n, cnt = 0; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d", &a[i]); if (a[i] >= 10) { b[cnt] = a[i]; cnt++; } } printf("%d\n", cnt); for (i = 0; i < cnt; i++) { printf("%d ", b[i]); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex63] 알밤만 담는 바구니
문제 설명 최대 10개를 담을 수 있는 알밤 바구니에 알밤들을 담으려 한다 공백으로 분리된 정수 m, n을 입력 받는다 m이 n보다 크거나 m이 음수거나 n이 음수일 경우는 “Error”를 출력하고 종료한다 m ~ n 범위의 수 중에서 다음 조건의 알밤을 저장 한다. (주의) n도 포함 된다 알밤은 3과 5의 공통 배수(15의 배수로 찾지 말고)이고 그 외는 다 쭉정이로 판단한다 바구니는 배열 10개 짜리를 설계하고 알밤을 발견할 때마다 값을 추가한다 단, 알밤은 최대 10개까지만 담을 수 있으며 10개를 담으면 바구니에 저장을 종료해야 한다 바구니에 담긴 알밤 수를 인쇄하고 다음 줄에 공백으로 분리하여 값들을 인쇄한다 단, 알밤이 10개보다 적을 수도 있으며 이 경우 저장된 알밤 값들만 인쇄되어야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 1 50 출력 예시 3 15 30 45 정답 코드 #include <stdio.h> int a[10]; void main(void) { int i, m, n, cnt = 0; scanf("%d %d", &m, &n); if (m > n || m < 0 || n < 0) { printf("Error\n"); return; } for (i = m; i <= n; i++) { if (((i % 3) == 0) && ((i % 5) == 0)) { a[cnt] = i; cnt++; if (cnt == 10) break; } } printf("%d\n", cnt); for (i = 0; i < cnt; i++) { printf("%d ", a[i]); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex62] 대문자의 개수
문제 설명 연속으로 입력된 10글자 중에서 대문자의 개수를 출력하라 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 abCDeFGHiz 출력 예시 5 정답 코드 #include <stdio.h> char a[11]; void main(void) { int i, cnt = 0; scanf("%s", a); for (i = 0; i < 10; i++) { if ('A' <= a[i] && a[i] <= 'Z') cnt++; } printf("%d\n", cnt); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex61] 행운권 추첨
문제 설명 다음 조건에 맞는 행운권 추첨 프로그램을 설계하라 첫 줄에 공백으로 분리된 정수 5개가 입력되고 다음 줄에 정수 1개가 입력 된다 두 번째 줄에서 입력 받은 정수가 5개의 입력 받은 정수들 중 있으면 “BINGO”를 인쇄한다 5개의 정수에 포함되어 있지 않으면 “FAIL”을 인쇄한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 3 7 -4 9 8 9 출력 예시 BINGO 정답 코드 #include <stdio.h> int a[5]; void main(void) { int i, num; for (i = 0; i < 5; i++) { scanf("%d", &a[i]); } scanf("%d", &num); for (i = 0; i < 5; i++) { if (a[i] == num) break; } if (i < 5) printf("BINGO\n"); else printf("FAIL\n"); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex60] 암기왕
문제 설명 암기왕 프로그램을 설계하라 scanf로 정수 5개를 입력 받는다 for 루프 활용 5개를 다 입력 받으면 입력 받은 5개의 수를 모두 인쇄한다 for 루프 활용 #include <stdio.h> void main(void) { int a[5]; // 코드 구현 } 입력 예시 3 7 -4 9 8 출력 예시 3 7 -4 9 8 정답 코드 #include <stdio.h> void main(void) { int a[5]; // 코드 구현 int i; for (i = 0; i < 5; i++) { scanf("%d", &a[i]); } for (i = 0; i < 5; i++) { printf("%d\n", a[i]); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex59] 피타고라스 수
문제 설명 피타고라스는 각 변의 길이가 a, b, c인 직각삼각형에서 a2+b2=c2가 성립함을 발견하고서 유레카를 외치며 목욕탕을 뛰쳐나왔다. (후에 아르키메데스가 이를 따라 했다는 얘기가 있음) 자연수 n이 주어지면, 1≤a≤b≤c≤n을 만족하면서 a2+b2=c2 또한 성립하는 a, b, c가 얼마나 있는지 계산하는 프로그램을 작성하자. 당연히 a, b, c는 모두 정수여야 한다. 예를 들어, n이 15인 경우 아래와 같은 4가지의 (a, b, c)가 존재한다. (3, 4, 5), (5, 12, 13), (6, 8, 10), (9, 12, 15) #include <stdio.h> int Solve(int n) { //여기서 부터 작성 } int main(void) { int n; scanf("%d", &n); printf("%d\n", Solve(n)); return 0; } 입력 설명 첫 번째 줄에 300 이하의 자연수 n이 입력된다. 출력 설명 첫 번째 줄에 가능한 피타고라스 수의 개수를 출력한다 입력 예시 15 출력 예시 4 정답 코드 #include <stdio.h> int Solve(int n) { int cnt = 0; for (int c = 2; c <= n; c++) { for (int b = 1; b < c; b++) { for (int a = 1; a <= b; a++) { if (a*a + b * b == c * c) cnt++; } } } return cnt; } int main(void) { int n; scanf("%d", &n); printf("%d\n", Solve(n)); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex58] 진약수의 개수
문제 설명 2개의 정수 N, M을 입력 받아 N부터 M까지 차례로 증가하면서 각 정수들의 진약수를 구하여 진약수의 개수가 가장 많은 정수를 찾아 인쇄한다. 진약수란 자신을 제외한 약수들을 말한다. 예로 6의 약수는 1, 2, 3, 6인데 자신을 제외한 진약수는 1, 2, 3인 3개이다. 단 함수를 설계하여 구현 한다. #include <stdio.h> int Solve(int n, int m) { //여기서 부터 작성 } int main(void) { int N, M; scanf("%d %d", &N, &M); printf("%d\n", Solve(N, M)); return 0; } 입력 설명 순서대로 N과 M을 입력 받는다 ( 1≦ N, M ≦ 10,000 ) 출력 설명 N부터 M까지 수중에서 진약수의 개수가 가장 많은 정수를 출력한다. 동일한 값이 여러 개일 경우 가장 작은 값을 출력한다. 입력 예시 1 10 출력 예시 6 정답 코드 #include <stdio.h> int Solve(int n, int m) { int num = 0, maxv = 0; for (int i = n; i <= m; i++) { int cnt = 0; for (int j = 1; j < i; j++) { if (i%j == 0) cnt++; } if (cnt > maxv) { maxv = cnt; num = i; } } return num; } int main(void) { int N, M; scanf("%d %d", &N, &M); printf("%d\n", Solve(N, M)); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex57] 누계 연산
문제 설명 3보다 큰 양수 n을 입력 받아 1 + (12) + … + (12…n) 의 누계를 인쇄하는 프로그램을 작성하시오. 예를 들어, 5입력 시 1 + 2 + 6 + 24+ 120 = 153을 인쇄한다 #include <stdio.h> int Solve(int n) { //여기서 부터 작성 } int main(void) { int n; scanf("%d", &n); printf("%d\n", Solve(n)); return 0; } 입력 설명 첫째 줄에 양의 정수 n (1<= n <= 10)이 입력된다 출력 설명 누계 연산 결과를 출력한다 입력 예시 5 출력 예시 153 정답 코드 #include <stdio.h> int Solve(int n) { int sum = 0; for (int i = 1; i <= n; i++) { int temp = 1; for (int j = 1; j <= i; j++) { temp *= j; } sum += temp; } return sum; } int main(void) { int n; scanf("%d", &n); printf("%d\n", Solve(n)); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex56] 마지막 정수 찾기
문제 설명 1개의 정수 n을 입력 받아 1+2+3… +x 의 합계가 n이상이 되면 마지막 더한 수 x를 구하여 인쇄한다. ( 1+2+3… +x >= n 의 조건이며 n은 양의 정수임 ) #include <stdio.h> int Solve(int n) { //여기서 부터 작성 } int main(void) { int n; scanf("%d", &n); printf("%d\n", Solve(n)); return 0; } 입력 설명 첫째 줄에 양의 정수 n(1<=n<=10억)이 입력된다 출력 설명 1+2+3… +x >= n을 만족하는 제일 작은 x를 출력한다 입력 예시 2500 출력 예시 71 정답 코드 #include <stdio.h> /* int Solve(int n) { int sum = 0, i; for (i = 1; sum < n; i++) { sum += i; } return i - 1; } */ int Solve(int n) { int sum = 0; int v = 1; for(;;) { sum += v; if(sum >= n) return v; v++; } } int main(void) { int n; scanf("%d", &n); printf("%d\n", Solve(n)); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex55] 원하는 자리값 알아내기
문제 설명 첫 줄에 양의 정수 하나(n)를 입력받는다. 다음 줄에 추출하고 싶은 자리 번호(d)를 하나 입력 받는다. 단, 항상 d는 n의 자리수보다 작은 값이다. 입력받은 n의 d번째 자리의 값을 인쇄하는 코드를 설계하라. d가 0이면 1의 자리, d가 1이면 10의 자리, d가 2이면 100의 자리를 추출하면 된다. #include <stdio.h> int Solve(int n, int d) { //여기서 부터 작성 } int main(void) { int n, d; scanf("%d", &n); scanf("%d", &d); printf("%d\n", Solve(n, d)); return 0; } 입력 예시 7825612 2 출력 예시 6 정답 코드 #include <stdio.h> int pow(int x) { int r = 1; for (int i = 0; i < x; i++) { r *= 10; } return r; } int Solve(int n, int d) { return n / pow(d) % 10; } int main(void) { int n, d; scanf("%d", &n); scanf("%d", &d); printf("%d\n", Solve(n, d)); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex54] 중간값 찾기
문제 설명 두 수의 중간 값을 찾는 함수를 설계하라 정수 2개를 입력 받아 두 수의 중간 값을 리턴하는 함수를 설계한다 scanf로 입력 받으며 음의 정수나 양의 정수나 모두 가능하다 또한 입력된 2개의 정수는 앞에 것과 뒤의 것 중 어느 것이 큰지는 확신할 수 없다 1과 6이 입력되면 중간 값이 3, 4가 다 가능하므로 이러한 값들은 입력되지 않는다 또한, 두 값이 같은 값이 입력되는 경우도 없는 것으로 한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 10 20 출력 예시 15 정답 코드 #include <stdio.h> int Search_Middle(int num1, int num2) { for(; num1 != num2; num1++, num2--); return num1; } void main(void) { int min = 0, max = 0, temp; scanf("%d %d", &min, &max); if (min > max) { temp = min; min = max; max = temp; } printf("%d\n", Search_Middle(min, max)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex53] Factorial - for 이용
문제 설명 팩토리얼을 구하는 함수를 설계하라 입력 받은 양의 정수의 팩토리얼(!)을 구하는 함수 parameter는 int, return은 unsigned long long int 팩토리얼: 3! = 3 * 2 * 1 for 문으로 설계하라 #include <stdio.h> unsigned long long int Factorial(int num) { // for 이용 코드 작성 } void main(void) { int value; scanf("%d", &value); printf("%llu\n", Factorial(value)); } 입력 예시 3 출력 예시 6 정답 코드 #include <stdio.h> unsigned long long int Factorial(int num) { // for 이용 코드 작성 int i; unsigned long long int answer = 1; for (i = 2; i <= num; i++) { answer *= i; } return answer; } void main(void) { int value; scanf("%d", &value); printf("%llu\n", Factorial(value)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex52] X가 입력될 때까지 입력 받기
문제 설명 조건에 맞는 입력이 들어올 때 까지 입력 받기 글자를 입력 받아서 대문자 “X”가 들어오면 while을 탈출한 후 “EXIT”를 인쇄하라 단, 다른 글자가 입력되면 “ERROR”를 인쇄하고 다시 입력을 받아야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 3 x X 출력 예시 ERROR ERROR EXIT 정답 코드 #include <stdio.h> void main(void) { char x; for (;;) { scanf(" %c", &x); if (x == 'X') { printf("EXIT\n"); break; } printf("ERROR\n"); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex51] 받은 수부터 0까지 3의 배수를 인쇄하는 함수
문제 설명 수를 받으면 그 수부터 0 까지 수 중에 3의 배수를 모두 인쇄하라 parameter는 int, return은 없음, 단, 받은 수부터 0까지 역순으로 인쇄한다 scanf로 양의 정수 하나를 입력 받아서 함수에 전달한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 10 출력 예시 9 6 3 0 정답 코드 #include <stdio.h> void Multiple_3(int num) { while (num >= 0) { if ((num % 3) == 0) printf("%d\n", num); num--; } } void main(void) { int n; scanf("%d", &n); Multiple_3(n); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex50] 1부터 입력 값까지 소수를 모두 인쇄하는 함수
문제 설명 1부터 입력 받은 값 사이의 소수를 모두 인쇄하는 함수를 설계하라 리턴은 없고 입력 받은 정수까지 모든 소수를 공백으로 분리하여 인쇄하는 함수 소수(素數, prime number): 1과 자기 자신으로만 나누어지는 수 main에서 scanf로 양의 정수 하나를 입력 받아 함수에 전달한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 11 출력 예시 2 3 5 7 11 정답 코드 #include <stdio.h> void Print_Prime(int max) { int i, j, k; for (i = 2; i <= max; i++) { k = 0; for (j = 2; j < i; j++) { if ((i % j) == 0) { k = 1; break; } } if (k == 0) { printf("%d ", i); } } } void main(void) { int n; scanf("%d", &n); Print_Prime(n); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex49] 짝수와 3의 배수를 제외한 숫자 인쇄
문제 설명 for loop를 이용하여 다음과 같은 함수를 설계하라 1부터 넘어온 숫자까지 값 중에서 짝수와 3의 배수를 제외한 숫자를 모두 인쇄한다 인쇄는 한 줄에 9개의 숫자를 인쇄하며 숫자당 최대 3자리를 차지하도록 한다 숫자 인쇄는 다음 코드를 활용한다. printf(“%3d “, i); // 숫자의 인쇄는 아래 코드를 이용한다 // printf("%3d ", i); #include <stdio.h> void func(int num) { // 코드 구현 } void main(void) { int n; scanf("%d", &n); func(n); } 입력 예시 121 출력 예시 1 5 7 11 13 17 19 23 25 29 31 35 37 41 43 47 49 53 55 59 61 65 67 71 73 77 79 83 85 89 91 95 97 101 103 107 109 113 115 119 121 정답 코드 #include <stdio.h> void func(int num) { // 코드 구현 int i; int cnt = 0; for (i = 1; i <= num; i++) { if ((i % 2 != 0) && (i % 3 != 0)) { printf("%3d ", i); cnt++; } if (cnt == 9) { printf("\n"); cnt = 0; } } } void main(void) { int n; scanf("%d", &n); func(n); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex48] j == 4 일 때 완전히 루프를 탈출하려면?
문제 설명 j == 4일 때 완전히 바깥 루프까지 빠져 나오려면? break문은 가장 가까이에 있는 for loop를 빠져 나온다 코드를 변형하여 다중 루프를 탈출하기 위한 코드를 구현하여 보자 #include <stdio.h> void main(void) { int i, j; for (i = 0; i < 20; i++) { for (j = 0; j < 10; i++, j++) { if (j == 4) break; printf("%d %d\n", i, j); } if (i % 3) continue; } } 출력 예시 0 0 1 1 2 2 3 3 정답 코드 #include <stdio.h> void main(void) { int i, j, flag = 0; for (i = 0; i < 20; i++) { for (j = 0; j < 10; i++, j++) { if (j == 4) { flag = 1; break; } printf("%d %d\n", i, j); } if (flag != 0) break; if (i % 3) continue; } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex47] 구구단 인쇄
문제 설명 2단부터 9단 까지 구구단을 인쇄하는 프로그램을 설계하라 2단 부터 9단까지 아래 형식으로 인쇄하되 각 단은 구분기호를 추가한다 각 단의 구분은 printf(“=======================\n”); 를 사용하라 // 각 단의 구분은 아래 코드를 이용한다 // printf("=======================\n"); #include <stdio.h> void main(void) { // 코드 작성 } 출력 예시 2단 2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10 2 * 6 = 12 2 * 7 = 14 2 * 8 = 16 2 * 9 = 18 ======================= 3단 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15 3 * 6 = 18 3 * 7 = 21 3 * 8 = 24 3 * 9 = 27 ======================= 4단 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36 ======================= 5단 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45 ======================= 6단 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 6 * 7 = 42 6 * 8 = 48 6 * 9 = 54 ======================= 7단 7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 7 * 8 = 56 7 * 9 = 63 ======================= 8단 8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 8 * 9 = 72 ======================= 9단 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81 ======================= 정답 코드 // 각 단의 구분은 아래 코드를 이용한다 // printf("=======================\n"); // 코드 작성 #include <stdio.h> void main(void) { int i, j; for (i = 2; i <= 9; i++) { printf("%d단\n", i); for (j = 1; j <= 9; j++) { printf("%d * %d = %d\n", i, j, i*j); } printf("=======================\n"); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex46] 별 자판기 - 트리별
문제 설명 출력 예시 모양의 별을 인쇄하는 코드를 이중 for루프로 구현하라 단, printf 한번에 * 또는 공백 또는 줄 바꿈 문자 하나씩만 인쇄해야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 출력 예시 * *** ***** ******* ********* 정답 코드 #include <stdio.h> void Draw_Start5(void) { int line, blank, star; for (line = 0; line < 5; line++) { for (blank = 0; blank < 5 - line - 1; blank++) { printf(" "); } for (star = 0; star < line * 2 + 1; star++) { printf("*"); } printf("\n"); } } void main(void) { Draw_Start5(); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex45] 별 자판기 - 반대 역삼각별
문제 설명 출력 예시 모양의 별을 인쇄하는 코드를 이중 for루프로 구현하라 단, printf 한번에 * 또는 공백 또는 줄 바꿈 문자 하나씩만 인쇄해야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 출력 예시 ***** **** *** ** * 정답 코드 #include <stdio.h> void Draw_Start4(void) { int line, blank, star; for (line = 0; line < 5; line++) { for (blank = 0; blank < line; blank++) { printf(" "); } for (star = 0; star < 5 - line; star++) { printf("*"); } printf("\n"); } } void main(void) { Draw_Start4(); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex44] 별 자판기 - 반대 삼각별
문제 설명 출력 예시 모양의 별을 인쇄하는 코드를 이중 for루프로 구현하라 단, printf 한번에 * 또는 공백 또는 줄 바꿈 문자 하나씩만 인쇄해야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 출력 예시 * ** *** **** ***** 정답 코드 #include <stdio.h> void Draw_Start3(void) { int line, blank, star; for (line = 0; line < 5; line++) { for (blank = 0; blank < 5 - line -1; blank++) { printf(" "); } for (star = 0; star < line + 1; star++) { printf("*"); } printf("\n"); } } void main(void) { Draw_Start3(); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex43] 별 자판기 - 역삼각별
문제 설명 출력 예시 모양의 별을 인쇄하는 코드를 이중 for루프로 구현하라 단, printf 한번에 * 또는 공백 또는 줄 바꿈 문자 하나씩만 인쇄해야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 출력 예시 ***** **** *** ** * 정답 코드 #include <stdio.h> void Draw_Start2(void) { int line, star; for (line = 0; line < 5; line++) { for (star = 0; star < 5 - line; star++) { printf("*"); } printf("\n"); } } void main(void) { Draw_Start2(); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex42] 별 자판기 - 삼각별
문제 설명 출력 예시 모양의 별을 인쇄하는 코드를 이중 for루프로 구현하라 단, printf 한번에 * 또는 공백 또는 줄 바꿈 문자 하나씩만 인쇄해야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 출력 예시 * ** *** **** ***** 정답 코드 #include <stdio.h> void Draw_Start1(void) { int line, star; for (line = 0; line < 5; line++) { for (star = 0; star <= line; star++) { printf("*"); } printf("\n"); } } void main(void) { Draw_Start1(); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex41] 정수의 자리수의 합 구하기
문제 설명 입력 받은 정수 N(N >= 0)의 각 자리수의 합을 구하여 인쇄하라 scanf로 최대 10자리의 정수를 하나 입력 받아 각 자리수의 합을 인쇄하라 만약 12345가 입력되었다면 각 자리의 합인 15가 인쇄되어야 한다 만약 0이 입력되었다면 각 자리의 합은 0이 되어야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 12345 출력 예시 15 정답 코드 #include <stdio.h> void main(void) { int N, sum = 0; scanf("%d", &N); while (N > 0) { sum += N % 10; N /= 10; } printf("%d", sum); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex40] 정수의 자리수 구하기
문제 설명 입력 받은 정수 N(N > 0)의 자리수를 인쇄하는 코드를 설계하라 scanf로 최대 10자리의 정수를 하나 입력 받아 자리수를 인쇄하라 만약 12345가 입력되었다면 5자리 수이므로 5를 인쇄한다 단, 01234와 같이 0으로 시작하는 숫자는 입력되지 않는 것으로 본다 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 12345 출력 예시 5 정답 코드 #include <stdio.h> void main(void) { int N, cnt = 0; scanf("%d", &N); while (N > 0) { N /= 10; cnt++; } printf("%d", cnt); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex39] 3,6,9 게임
문제 설명 다음에서 요구하는 3,6,9 게임 프로그램을 설계하라 정수 N을 scanf로 입력 받아서 1부터 N까지 다음과 같이 인쇄하라 3의 배수와 숫자에 3이 들어가는 경우는 모두 값 대신 %를 인쇄한다 3, 6, 9, 12, 13, … 23 등은 모두 숫자대신 %를 인쇄한다 N에 도달하면 N대신 “SUCCESS”를 인쇄하라 #include <stdio.h> void main(void) { // 코드 작성 } 입력 설명 N <= 99 입력 예시 12 출력 예시 1 2 % 4 5 % 7 8 % 10 11 SUCCESS 정답 코드 #include <stdio.h> void main(void) { int i, N; scanf("%d", &N); for (i = 1; i < N; i++) { if (((i % 3) == 0) || ((i % 10) == 3) || ((i / 10) == 3)) { printf("%%\n"); } else { printf("%d\n", i); } } printf("SUCCESS\n"); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex38] ‘D’부터 입력 받은 글자 사이를 2개씩 건너 띄면서 인쇄하라
문제 설명 ‘D’부터 입력 받은 글자 사이를 2개씩 건너 띄면서 인쇄하라 #include <stdio.h> void main(void) { // 코드 작성 } 입력 설명 입력 받은 알파벳 'D' 이상 'Z' 이하임 입력 예시 H 출력 예시 D F H 정답 코드 #include <stdio.h> void main(void) { char i, c; scanf("%c", &c); for (i = 'D'; i <= c; i += 2) { printf("%c\n", i); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex37] ‘A’부터 입력 받은 알파벳까지 알파벳을 인쇄
문제 설명 ‘A’부터 입력 받은 까지 연속된 알파벳을 인쇄하라 #include <stdio.h> void main(void) { // 코드 작성 } 입력 설명 입력 받은 알파벳 'A' 이상 'Z' 이하임 입력 예시 G 출력 예시 A B C D E F G 정답 코드 #include <stdio.h> void main(void) { char i, c; scanf("%c", &c); for (i = 'A'; i <= c; i++) { printf("%c\n", i); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex36] 숫자를 7 부터 입력 받은 개수 만큼 연속 인쇄하는 코드
문제 설명 숫자를 7 부터 입력 받은 개수 만큼 연속된 수를 인쇄하라 #include <stdio.h> void main(void) { // 코드 작성 } 입력 예시 5 출력 예시 7 8 9 10 11 정답 코드 #include <stdio.h> void main(void) { int i; int n; scanf("%d", &n); for (i = 7; i < (n + 7); i++) { printf("%d\n", i); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex35] *을 입력 받은 수 만큼 인쇄하는 코드
문제 설명 입력 받은 수 만큼 *을 인쇄하라(단, for 루프 1번에 * 한 개 인쇄) #include <stdio.h> void main(void) { // 코드 작성 } 입력 설명 입력 받은 수는 1 이상 30 이하임 입력 예시 9 출력 예시 ********* 정답 코드 #include <stdio.h> void main(void) { int i, n; scanf("%d", &n); for (i = 0; i < n; i++) { printf("*"); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex34] 0부터 20까지의 수에서 3의 배수를 인쇄하는 코드
문제 설명 0부터 20까지의 수에서 3의 배수만 인쇄하는 프로그램을 설계하라 0과 20도 반복문 조건 체크 대상에 포함되어야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 출력 예시 0 3 6 9 12 15 18 정답 코드 #if 0 #include <stdio.h> void main(void) { int i; for (i = 0; i <= 20; i++) { if ((i % 3) == 0) printf("%d\n", i); } } #endif #include <stdio.h> void main(void) { int i; for (i = 0; i <= 20; i += 3) { printf("%d\n", i); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex33] 0 부터 20 까지의 수에서 짝수를 인쇄하는 코드
문제 설명 0부터 20까지의 수에서 짝수만 인쇄하는 프로그램을 설계하라 0과 20도 인쇄에 포함되어야 한다 #include <stdio.h> void main(void) { // 코드 작성 } 출력 예시 0 2 4 6 8 10 12 14 16 18 20 정답 코드 #if 0 #include <stdio.h> void main(void) { int i; for (i = 0; i <= 20; i++) { if ((i % 2) == 0) printf("%d\n", i); } } #endif #include <stdio.h> void main(void) { int i; for (i = 0; i <= 20; i += 2) { printf("%d\n", i); } } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex32] 케이크 자르기
문제 설명 아래와 같이 둥근 케이크를 2번의 칼질로 4조각으로 나누려고 한다. 케이크의 둘레에 시계방향으로 1~100까지 일정한 간격으로 번호가 부여되어 있다. 칼로 자르려고 하는 부분은 2개의 정수로 표현한다. 칼로 자르려는 부분이 2군데 주어질 때 칼로 잘리는 부분이 교차하는지 유무를 판단하는 프로그램을 작성하시오. 아래 예는 12 53과 99 45를 자른 예를 나타낸다. #include <stdio.h> int Solve(int A, int B, int C, int D) { // 여기서부터 작성 } int main(void) { int a, b, c, d, cross; // 입력받는 부분 scanf("%d %d", &a, &b); scanf("%d %d", &c, &d); cross = Solve(a, b, c, d); // 출력하는 부분 if (cross == 1) printf("cross"); else printf("not cross"); return 0; } 입력 설명 첫 번째 줄에는 첫 번째 현의 정보를 나타내는 두 정수가 입력된다. 두 번째 줄에는 두 번째 현의 정보를 나타내는 두 정수가 입력된다. 출력 설명 주어진 두 잘린 부분이 교차한다면 "cross", 교차하지 않는다면 "not cross"를 출력한다. 입력 예시 12 53 99 45 출력 예시 cross 부가정보 [입력 예시 2] 23 77 79 83 [출력 예시 2] not cross 정답 코드 #include <stdio.h> int Solve(int A, int B, int C, int D) { if (A > B) { int tmp = A; A = B; B = tmp; } if (C > D) { int tmp = C; C = D; D = tmp; } if (((A > C) && (D > A) && (D < B)) || ((A < C) && (B > C) && (B < D))) { return 1; } return 0; } int main(void) { int a, b, c, d, cross; // 입력받는 부분 scanf("%d %d", &a, &b); scanf("%d %d", &c, &d); cross = Solve(a, b, c, d); // 출력하는 부분 if (cross == 1) printf("cross"); else printf("not cross"); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex31] 시간차 구하기
문제 설명 HH:MM:SS(시:분:초)의 형태로 표시하는 2개의 시간이 주어졌을 때, 시간차를 구하는 프로그램을 작성한다. 2개의 시간은 최대 24시간 차이가 난다고 가정한다. #include <stdio.h> int main(void) { int h1, m1, s1, h2, m2, s2; int h, m, s; // 입력받는 부분 scanf("%d:%d:%d", &h1, &m1, &s1); scanf("%d:%d:%d", &h2, &m2, &s2); // 여기서부터 작성 // 출력하는 부분 printf("%02d:%02d:%02d", h, m, s); return 0; } 입력 설명 입력은 두 개의 시간이 입력된다. 시간이 입력되는 형태는 다음과 같다. "HH:MM:SS" HH는 시, MM은 분, SS는 초를 뜻한다. 만약 시나 분, 초가 한 자리 숫자일 경우 앞에 0을 붙이게 된다. (0≤HH≤23, 0≤MM, SS≤59) 앞에 입력된 시간보다 뒤의 입력된 시간이 더 늦은 시간이라고 가정한다 출력 설명 입력된 2개의 시간에 대한 시간차를 HH:MM:SS의 형태로 출력한다. 입력 예시 20:00:00 04:00:00 출력 예시 08:00:00 정답 코드 #include <stdio.h> int main(void) { int h1, m1, s1, h2, m2, s2; int h, m, s; int ss, es; // 입력받는 부분 scanf("%d:%d:%d", &h1, &m1, &s1); scanf("%d:%d:%d", &h2, &m2, &s2); // 여기서부터 작성 ss = (h1 * 60 + m1) * 60 + s1; es = (h2 * 60 + m2) * 60 + s2; if (es > ss) ss = es - ss; else ss = 3600 * 24 - ss + es; h = ss / (60 * 60); m = ss % (60 * 60) / 60; s = ss % 60; // 출력하는 부분 printf("%02d:%02d:%02d", h, m, s); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex30] 두 수의 거리
문제 설명 두 정수를 입력 받아, 두 수의 차이를 절대값으로 인쇄하라. #include <stdio.h> int Solve(int A, int B) { //여기서 부터 작성 } int main(void) { int A, B; int sol; scanf("%d %d", &A, &B); sol = Solve(A, B); printf("%d\n", sol); return 0; } 입력 설명 공백으로 구분하여 두 정수를 입력한다. 출력 설명 두 수의 차이를 절대값으로 출력한다. 입력 예시 15 12 출력 예시 3 정답 코드 #include <stdio.h> int Solve(int A, int B) { //여기서 부터 작성 int diff; if (A > B) { diff = A - B; } else { diff = B - A; } return diff; } int main(void) { int A, B; int sol; scanf("%d %d", &A, &B); sol = Solve(A, B); printf("%d\n", sol); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex29] 성적 계산 함수
문제 설명 다음과 같은 조건을 만족하는 성적처리 함수를 설계하라 함수명은 임의로 정하고 parameter는 int이고 return은 char로 지정한다 성적 기준은 다음과 같다 100~91 => A, 90~81 => B, 80~71 => C, 70~61 => D, 60이하 => F 성적을 입력하면 학점을 리턴 한다 (문자 A,B,C,D,F 중 하나) 단, 입력된 값이 0 ~ 100을 벗어나면 문자 ‘X’를 리턴 한다 #include <stdio.h> char func(int score) { // 코드 작성 } void main(void) { int score; scanf("%d", &score); printf("%c\n", func(score)); } 입력 예시 90 출력 예시 B 정답 코드 #include <stdio.h> /* char func(int s) { if ((s < 0) || (s > 100)) { return 'X'; } switch ((s - 1) / 10) { case 0: case 1: case 2: case 3: case 4: case 5: return 'F'; case 6: return 'D'; case 7: return 'C'; case 8: return 'B'; case 9: case 10: return 'A'; } } */ char func(int s) { char * r = "FFFFFFDCBAA"; if ((s < 0) || (s > 100)) { return 'X'; } return r[(s -1) / 10]; } void main(void) { int score; scanf("%d", &score); printf("%c\n", func(score)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex28] 실수 값에 제일 가까운 정수 값 구하기
문제 설명 입력된 실수 값에 제일 가까운 정수 값 구하기 음수일 때도 정확히 가장 가까운 정수 값이 나올 수 있도록 작성한다 (예) 3.64는 4에 가까운 정수이고 -3.64이면 -4에 가까운 정수이다 #include <stdio.h> int func(float v) { // 코드 작성 } void main(void) { float a; scanf("%f", &a); printf("%d\n", func(a)); } 입력 예시 3.64 출력 예시 4 정답 코드 #include <stdio.h> int func(float v) { // 코드 작성 float bias = 0.5f; return (int)(v + ((v >= 0) ? (bias) : (-bias))); } void main(void) { float a; scanf("%f", &a); printf("%d\n", func(a)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex27] L, E, W 찾기
문제 설명 입력된 글자가 ‘L’, ‘E’, ‘W’이면 ‘*’ 리턴, 그 외 글자는 그대로 리턴 #include <stdio.h> char func(char c) { // 코드 작성 } void main(void) { char c; scanf("%c", &c); printf("%c\n", func(c)); } 입력 예시 L 출력 예시 * 정답 코드 #include <stdio.h> char func(char c) { // 코드 작성 if ((c == 'L') || (c == 'E') || (c == 'W')) return '*'; return c; } void main(void) { char c; scanf("%c", &c); printf("%c\n", func(c)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex26] 대문자 소문자 변경
문제 설명 입력된 글자를 대문자는 소문자로 소문자는 대문자로 바꿔 리턴 그 외의 글자는 ‘0’을 리턴한다. #include <stdio.h> char func(char c) { // 코드 작성 } void main(void) { char c; scanf("%c", &c); printf("%c\n", func(c)); } 입력 예시 F 출력 예시 f 정답 코드 #include <stdio.h> char func(char c) { // 코드 작성 if ((c >= 'A') && (c <= 'Z')) return c + ('a' - 'A'); if ((c >= 'a') && (c <= 'z')) return c - ('a' - 'A'); return '0'; } void main(void) { char c; scanf("%c", &c); printf("%c\n", func(c)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex25] 소문자 f ~ z 찾기
문제 설명 입력된 문자가 소문자이면서 f ~ z 사이 문자면 1 아니면 0 리턴 입력은 반드시 대문자 또는 소문자 알파벳만 넣을 수 있다고 보장 할 수 없다 따라서 대문자도 소문자도 아니면 그냥 0을 리턴 하도록 한다 ‘f’와 ‘z’ 포함임. 즉, ‘f’나 ‘z’이면 1을 리턴해야 함 #include <stdio.h> int func(char c) { // 코드 작성 } void main(void) { char c; scanf("%c", &c); printf("%d\n", func(c)); } 입력 예시 g 출력 예시 1 정답 코드 #include <stdio.h> int func(char c) { // 코드 작성 return (c >= 'f') && (c <= 'z'); } void main(void) { char c; scanf("%c", &c); printf("%d\n", func(c)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex24] 대문자 또는 소문자 찾기
문제 설명 글자가 대문자 또는 소문자면 1 아니면 0을 리턴하는 함수 설계 #include <stdio.h> int f1(char c) { // 구현 } void main(void) { char c; scanf("%c", &c); printf("%d\n", f1(c)); } 입력 예시 C 출력 예시 1 정답 코드 #include <stdio.h> int f1(char c) { // 구현 return ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')); } void main(void) { char c; scanf("%c", &c); printf("%d\n", f1(c)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex23] 4~10 사이 숫자 찾기
문제 설명 숫자가 4 ~ 10 사이 값이면 1 아니면 0을 리턴하는 함수 설계 4와 10은 미포함임, 즉, 4나 10이면 0을 리턴해야 함 #include <stdio.h> int f1(int num) { // 코드 구현 } void main(void) { int num; scanf("%d", &num); printf("%d\n", f1(num)); } 입력 예시 5 출력 예시 1 정답 코드 #include <stdio.h> int f1(int num) { // 코드 구현 return (num > 4) && (num < 10); } void main(void) { int num; scanf("%d", &num); printf("%d\n", f1(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex22] 3의 배수 또는 5의 배수 찾기
문제 설명 숫자가 3 또는 5의 배수이면 1 아니면 0을 리턴하는 함수 설계 #include <stdio.h> int f1(int num) { // 코드 구현 } void main(void) { int num; scanf("%d", &num); printf("%d\n", f1(num)); } 입력 예시 15 출력 예시 1 정답 코드 #include <stdio.h> int f1(int num) { // 코드 구현 return !(num % 3) || !(num % 5); } void main(void) { int num; scanf("%d", &num); printf("%d\n", f1(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex21] 3의 배수 값인지 확인하는 함수
문제 설명 입력 값이 3의 배수면 1, 아니면 0을 리턴하는 함수를 설계하라 #include <stdio.h> int multiple_of_3(int num) { // 코드 구현 } void main(void) { int num; scanf("%d", &num); printf("%d\n", multiple_of_3(num)); } 입력 예시 3 출력 예시 1 정답 코드 #include <stdio.h> int multiple_of_3(int num) { // 코드 구현 return num % 3 == 0; } void main(void) { int num; scanf("%d", &num); printf("%d\n", multiple_of_3(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex20] 2, 3, 5의 배수 판단하기
문제 설명 입력 받은 값이 2,3,5의 배수인지를 판단하는 함수를 설계하라 2의 배수면 2, 3의 배수면 3, 5의 배수면 5를 2,3,5 배수가 아니면 0을 리턴 단, 2,3 공배수면 2리턴, 3,5 공배수면 3리턴, 2,5 공배수면 2리턴, 2,3,5 공배수면 2리턴 #include <stdio.h> int compare(int num) { // 코드 구현 } void main(void) { int num; scanf("%d", &num); printf("%d\n", compare(num)); } 입력 예시 33 출력 예시 3 정답 코드 #include <stdio.h> int compare(int num) { // 코드 구현 if (num % 2 == 0) return 2; if (num % 3 == 0) return 3; if (num % 5 == 0) return 5; return 0; } void main(void) { int num; scanf("%d", &num); printf("%d\n", compare(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex19] 홀짝을 맞춰라 2
문제 설명 예제 5-3에서 짝수면 0, 홀수면 1을 리턴하도록 함수를 재설계하라 #include <stdio.h> int Check_Odd_Even(int num) { // 코드 구현 } void main(void) { int num; scanf("%d", &num); printf("%d\n", Check_Odd_Even(num)); } 입력 예시 3 출력 예시 1 정답 코드 #include <stdio.h> int Check_Odd_Even(int num) { // 코드 구현 return num % 2; } void main(void) { int num; scanf("%d", &num); printf("%d\n", Check_Odd_Even(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex18] 홀짝을 맞춰라 1
문제 설명 입력 받은 수의 홀수, 짝수 여부를 리턴하는 함수를 설계하라 정수를 받아서 짝수면 2, 홀수면 1을 리턴하는 함수를 설계하라 #include <stdio.h> int Check_Odd_Even(int num) { // 코드 구현 } void main(void) { int num; scanf("%d", &num); printf("%d\n", Check_Odd_Even(num)); } 입력 예시 3 출력 예시 1 정답 코드 #include <stdio.h> int Check_Odd_Even(int num) { // 코드 구현 if (num % 2 == 0) return 2; else return 1; } void main(void) { int num; scanf("%d", &num); printf("%d\n", Check_Odd_Even(num)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex17] 짝수의 개수
문제 설명 4자리 양의 정수의 각 자리수의 값이 짝수인 개수를 구하는 함수를 설계 하시오. 예를들어, 2345면 각 자리수의 값이 2, 3, 4, 5 이고 이 중에 2, 4가 짝수 이므로 2가 리턴되면 된다. 짝수는 2로 나누어 떨어지는 수이다. #include <stdio.h> int Solve(int A) { //여기서 부터 작성 } int main(void) { int A; int sol; scanf("%d", &A); sol = Solve(A); printf("%d", sol); return 0; } 입력 설명 4자리 양의 정수가 입력 출력 설명 4자리 양의 정수의 각 자리수 값이 짝수인 개수를 출력 입력 예시 2345 출력 예시 2 정답 코드 #include <stdio.h> int Solve(int A) { //여기서 부터 작성 int a, b, c, d; int cnt = 4; a = A / 1000; A %= 1000; b = A / 100; A %= 100; c = A / 10; d = A % 10; cnt -= a % 2 + b % 2 + c % 2 + d % 2; return cnt; } int main(void) { int A; int sol; scanf("%d", &A); sol = Solve(A); printf("%d", sol); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex16] 3개의 정수 중 홀수의 개수를 리턴하는 함수 설계
문제 설명 세 개의 양의 정수 A, B, C를 입력 받아 홀수의 개수를 리턴하는 함수를 설계 하시오. 세 개 모두 홀수이면 3을, 두 개면 2를, 한 개면 1을, 없으면 0을 리턴한다. #include <stdio.h> int Solve(int A, int B, int C) { int cnt = 0; // 여기서부터 작성 return cnt; } int main(void) { int A, B, C; int sol; scanf("%d %d %d", &A, &B, &C); sol = Solve(A, B, C); printf("%d", sol); return 0; } 입력 설명 세 개의 양의 정수 A, B, C가 입력된다. 출력 설명 조건에 맞게 3, 2, 1, 0중 하나를 인쇄한다. 입력 예시 7 5 9 출력 예시 3 정답 코드 #include <stdio.h> int Solve(int A, int B, int C) { int cnt = 0; // 여기서부터 작성 cnt = A % 2 + B % 2 + C % 2; return cnt; } int main(void) { int A, B, C; int sol; scanf("%d %d %d", &A, &B, &C); sol = Solve(A, B, C); printf("%d", sol); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex15] ASCII 숫자 문자를 정수 숫자로 반환하는 함수
문제 설명 ASCII 숫자(‘1’)를 넣으면 정수(1)로 바꿔주는 함수를 설계하라 문자는 ‘0’ ~ ‘9’ 사이로 입력되며 주어진 템플릿 코드를 사용하여 함수를 설계한다 #include <stdio.h> int Change_Char_to_Int(char num) { // 코드 작성 } void main(void) { char a; scanf("%c", &a); printf("%d\n", Change_Char_to_Int(a)); } 입력 예시 1 출력 예시 1 정답 코드 #include <stdio.h> int Change_Char_to_Int(char num) { // 코드 작성 return num - '0';//return num - 0x30; } void main(void) { char a; scanf("%c", &a); printf("%d\n", Change_Char_to_Int(a)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex14] 대문자를 소문자로 전환하는 함수 설계
문제 설명 대문자를 넣으면 소문자로 바꿔주는 함수를 설계하라 문자는 ‘A’ ~ ‘Z’ 사이로 입력되며 주어진 템플릿 코드를 사용하여 함수를 설계한다 #include <stdio.h> char Change_Case(char upper) { // 코드 작성 } void main(void) { char a; scanf("%c" , &a ); printf("%c => %c\n", a, Change_Case(a)); } 입력 예시 A 출력 예시 A => a 정답 코드 #include <stdio.h> char Change_Case(char upper) { // 코드 작성 return upper + ('a' - 'A'); // return upper + 0x20; } void main(void) { char a; scanf("%c" , &a ); printf("%c => %c\n", a, Change_Case(a)); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex13] 차량 5부제 코드 생성
문제 설명 차량번호(4자리 정수)를 받아서 5부제 코드를 리턴하는 함수 설계 양의 정수만 입력되며 차량번호 끝자리로 판단하여 1 ~ 5 까지로 부여된다 끝자리 0, 5 -> 1 리턴 1, 6 -> 2 리턴 2, 7 -> 3 리턴 3, 8 -> 4 리턴 4, 9 -> 5 리턴 #include <stdio.h> int make_group(int car); void main(void) { int car; scanf("%d", &car); printf("%d\n", make_group(car)); } int make_group(int car) { // 코드 작성 } 입력 예시 1234 출력 예시 5 정답 코드 #include <stdio.h> int make_group(int car); void main(void) { int car; scanf("%d", &car); printf("%d\n", make_group(car)); } int make_group(int car) { // 코드 작성 return (car % 5) + 1; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex12] float 값의 가장 가까운 정수 값을 넘겨주는 함수
문제 설명 양의 실수(float)를 입력 받아 가까운 정수를 리턴하는 함수 설계 #include <stdio.h> int find_int(float value); void main(void) { int r; float num; scanf("%f", &num); r = find_int(num); printf("%d\n", r); } int find_int(float value) { // 코드 작성 } 입력 예시 2.3 출력 예시 2 정답 코드 #include <stdio.h> int find_int(float value); void main(void) { int r; float num; scanf("%f", &num); r = find_int(num); printf("%d\n", r); } int find_int(float value) { // 코드 작성 return (int)(value + 0.5f); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex11] 반지름을 입력하면 원의 넓이를 구하는 함수
문제 설명 반지름(float)를 입력 받아서 원의 넓이 구하기 함수 설계 #include <stdio.h> float compute_circle_area(float radius); void main(void) { float r; scanf("%f", &r); printf("%f\n", compute_circle_area(r)); } float compute_circle_area(float radius) { float pi = 3.14f; // 코드 작성 } 입력 예시 3.0 출력 예시 28.260000 정답 코드 #include <stdio.h> float compute_circle_area(float radious); void main(void) { float r; scanf("%f", &r); printf("%f\n", compute_circle_area(r)); } float compute_circle_area(float radious) { float pi = 3.14f; // 코드 작성 radious = pi * radious * radious; return radious; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex10] 함수의 분석 연습
문제 설명 에러가 없도록 다음 함수들을 선언하라 #include <stdio.h> // 사용할 함수들의 선언 void main(void) { printf("sqr=%d\n", sqr(3)); printf("area=%d\n", area(3, 5)); printf("arc=%f\n", compute_circle_arc(4.1f)); } int sqr(int x) { return x * x; } int area(int x, int y) { return x * y; } float compute_circle_arc(float radious) { float pi = 3.141592f; radious = 2 * radious * pi; return radious; } 출력 예시 sqr=9 area=15 arc=25.761053 정답 코드 #include <stdio.h> // 사용할 함수들의 선언 int sqr(int x); int area(int x, int y); float compute_circle_arc(float radious); void main(void) { printf("sqr=%d\n", sqr(3)); printf("area=%d\n", area(3, 5)); printf("arc=%f\n", compute_circle_arc(4.1f)); } int sqr(int x) { return x * x; } int area(int x, int y) { return x * y; } float compute_circle_arc(float radious) { float pi = 3.141592f; radious = 2 * radious * pi; return radious; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex09] 함수의 선언
문제 설명 프로그램을 오류가 발생하지 않도록 함수를 선언하라 #include <stdio.h> // 여기에 함수 선언 void main(void) { weight(50); } void weight(int w) { printf("Weight = %d Kg\n", w); } 출력 예시 Weight = 50 Kg 정답 코드 #include <stdio.h> // 여기에 함수 선언 void weight(int w); void main(void) { weight(50); } void weight(int w) { printf("Weight = %d Kg\n", w); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex08] 100원 미만을 반올림 하는 코드를 구현
문제 설명 입력받은 4자리 이상 정수에서 100원 미만을 반올림 하는 코드를 구현하시오 즉, 50원 이상이면 올림처리하고 49원 이하이면 내림처리를 한다 예를들어, 1249원이면 100원 미만이 49원이므로 1200원이 된다. 4350원이면 100원 미만이 50원이므로 4400원이 된다 #include <stdio.h> int main(void) { int A; scanf("%d", &A); printf("%d\n", A); return 0; } 입력 설명 4자리 이상의 정수 입력 출력 설명 100원 미만을 반올림 처리한 결과를 출력 입력 예시 1249 출력 예시 1200 정답 코드 #include <stdio.h> int main(void) { int A; scanf("%d", &A); A = (A + 50) / 100 * 100; printf("%d\n", A); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex07] 100자리 값을 0으로 만들기
문제 설명 3~9자리 정수를 입력받아 100자리 값을 0으로 만드는 코드를 구현하라 예를들어 1234가 입력되면 100자리 2를 0으로 만들어서 1034가 되게 하시오 #include <stdio.h> int main(void) { int A; scanf("%d", &A); // 코드 작성 printf("%d\n", A); return 0; } 입력 설명 3~9자리 정수 입력 출력 설명 100자리 값을 0으로 만들어서 출력 입력 예시 1234 출력 예시 1034 정답 코드 #include <stdio.h> int main(void) { int A; scanf("%d", &A); A = A - (A / 100 % 10 * 100); printf("%d\n", A); return 0; } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex06] 정수 3개 합과 평균 구하기
문제 설명 공백으로 분리된 정수 3개를 입력 받아 합과 평균을 인쇄하라 #include<stdio.h> void main(void) { int a, b, c, sum; float avg; // 코드 작성 printf("%d, %f\n", sum, avg); } 입력 예시 10 20 30 출력 예시 60, 20.000000 정답 코드 #include<stdio.h> void main(void) { int a, b, c, sum; float avg; // 코드 작성 scanf("%d %d %d", &a, &b, &c); sum = a + b + c; avg = sum / 3.0f; printf("%d, %f\n", sum, avg); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex05] 16진수의 자리수 분리
문제 설명 4자리 16진수 수를 입력 받아 각 자리 값을 인쇄하라 #include<stdio.h> void main(void) { unsigned int x; unsigned int x4, x3, x2, x1; scanf("%x", &x); // 코드 작성 printf("%X, %X, %X, %X", x4, x3, x2, x1); } 입력 예시 AB9D 출력 예시 A, B, 9, D 정답 코드 #include<stdio.h> void main(void) { unsigned int x; unsigned int x4, x3, x2, x1; scanf("%x", &x); // 코드 작성 x4 = (x / (16 * 16 * 16)); x3 = ((x % (16 * 16 * 16)) / (16 * 16)); x2 = ((x % (16 * 16)) / 16); x1 = (x % 16); printf("%X, %X, %X, %X", x4, x3, x2, x1); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex04] 가격 절사 판매
문제 설명 변수 p에 저장된 값을 1000원 미만을 절사하는 코드를 구현하라 #include <stdio.h> void main(void) { int p = 123456; p = printf("%d\n", p); } 출력 예시 123000 정답 코드 #include <stdio.h> void main(void) { int p = 123456; p = p - (p % 1000); printf("%d\n", p); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex03] /, % 연산자의 활용 => 10진수 자리수 분리
문제 설명 4자리 정수의 각 자리 값을 추출하여 a4, a3, a2, a1에 저장하라 #include <stdio.h> void main(void) { int a = 2345; int a4, a3, a2, a1; a4 = a3 = a2 = a1 = printf("1000자리=%d, 100자리=%d, 10자리=%d, 1자리=%d\n", a4, a3, a2, a1); } 출력 예시 1000자리=2, 100자리=3, 10자리=4, 1자리=5 정답 코드 #include <stdio.h> void main(void) { int a = 2345; int a4, a3, a2, a1; // 1의 자리부터 코딩 a4 = (a / 1000); a3 = (a / 100) % 10; a2 = (a / 10) % 10; a1 = a % 10; printf("1000자리=%d, 100자리=%d, 10자리=%d, 1자리=%d\n", a4, a3, a2, a1); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex02] 다양한 입력 및 출력 연습
문제 설명 다음 코드에 들어갈 입력 및 인쇄 코드를 설계하라 입력 예시와 같이 입력 시 출력 예시와 같이 인쇄가 되어야 한다 [주의] printf 사용시 출력 예시와 완전히 동일하도록 공백, ‘,’ 등의 인쇄에 주의하여야 한다 #include <stdio.h> void main(void) { char name[31]; int age; float height; char blood_type; char nationality[11]; // 코드 작성 } 입력 예시 Hong Gil Dong 100 182.9 A KOR 출력 예시 Hong Gil Dong, 100, 182.899994 A, KOR 정답 코드 #include <stdio.h> void main(void) { char name[31]; int age; float height; char blood_type; char nationality[11]; // 코드 작성 gets(name); scanf("%d %f %c %s", &age, &height, &blood_type, nationality); printf("%s, %d, %f\n", name, age, height); printf("%c, %s", blood_type, nationality); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex01] printf 함수 연습
문제 설명 printf 함수를 이용하여 출력 예시와 같이 인쇄되도록 코드를 설계하라 #include <stdio.h> void main(void) { } 출력 예시 Hello C World! Welcome!! 정답 코드 #include <stdio.h> void main(void) { printf("Hello C World!\n"); printf("Welcome!!\n"); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
[ex01] 포인터 배열
문제 설명 배열 a를 이용하여 x[2]를 30으로 만드는 코드를 만드시오 #include <stdio.h> int x[4] = {1,2,3,4}; void main(void) { int *a[4] = {x+3, x+2, x+1, x}; printf("%d\n", x[2]); = 30; printf("%d\n", x[2]); } 출력 예시 3 30 정답 #include <stdio.h> int x[4] = {1,2,3,4}; void main(void) { int *a[4] = {x+3, x+2, x+1, x}; printf("%d\n", x[2]); //a[0][-1] = 30; //a[1][0] = 30; //a[2][1] = 30; a[3][2] = 30; printf("%d\n", x[2]); } 메모 printf 내부의 \n 습관화 필요
Study
· 2025-03-18
<
>
Touch background to close