星野アイ.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 task
💖 星野アイ (◍•ᴗ•◍)♡ ✧*。
C task
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
<
>
Touch background to close