hong.com
Final
2025-08-06
2025-08-07
2025-08-08
2025-08-11
2025-08-12
2025-08-13
2025-08-14
2025-08-18
2025-08-19
Project
C Language
game instructions
FFT
game instructions
Study
C Language
ARM System Programming
C Programming - Challenges
C programming
Linux
Day1
Day2
Day3
Day4
Day5
Day6
Day7
Day8
SKIN_Project copy
SKIN_Project
perceptron
System Verilog
Day1
Day2
Day3
VLSI Circuits Design
Day1
Subsubcategory 1
Subsubcategory 2
example
Home
Contact
Copyright ยฉ 2024 |
Yankos
Home
>
Study
> C Language
๐ ๆ้ใขใค (โโขแดโขโ)โก โง*ใ
C Language
[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
[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
[ex46] #8 ์ธํฐ๋ฝํธ ๊ธฐ๋ฐ ๋ฉ๋ก๋ ์ฌ์ ๋ฐ ์ค์๊ฐ PWM LED ์ ์ด ์ค์ต
๋ฌธ์ ์ค๋ช ํ์ด๋จธ ์ธํฐ๋ฝํธ๋ฅผ ํ์ฉํ์ฌ ๋ฉ๋ก๋(song1)๋ฅผ ์์ฐจ ์ฌ์ํ๊ณ , UART ์์ ์ธํฐ๋ฝํธ๋ฅผ ํตํด LED ๋ฐ๊ธฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ์ดํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. TIM2 ์ธํฐ๋ฝํธ๋ฅผ ํตํด ์ํ ํ ๊ฐ์ ์ฐ์ฃผ๊ฐ ๋๋๋ฉด ๋ค์ ์ํ๋ฅผ ์๋ ์ฌ์ TIM3์ ์ฃผํ์ ๋ฐ์์ฉ ํ์ด๋จธ๋ก ๋ถ์ ์ ์ถ๋ ฅ์ ์ฌ์ฉ๋จ USART1 ์ธํฐ๋ฝํธ๋ก ์์ ํ ์ซ์(1~9)๋ PWM ๋ํฐ๋น๋ก ์ค์ ๋์ด LED ๋ฐ๊ธฐ๋ฅผ ์กฐ์ ํ๊ณ , 0์ PWM ์ถ๋ ฅ์ ์ค๋จํจ ๋ ์ธํฐ๋ฝํธ๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ฉฐ, ๋ฉ๋ก๋ ์ฌ์๊ณผ LED ์ ์ด๋ฅผ ๋์์ ์ํํจ ์ ๋ต ์ฝ๋ //stm32f10x_it.c volatile int Uart1_Rx_In = 0; volatile int Uart1_Rx_Data = 0; void USART1_IRQHandler(void) { Uart1_Rx_Data = (unsigned char)USART1->DR; Uart1_Send_Byte(Uart1_Rx_Data); Uart1_Rx_In = 1; NVIC_ClearPendingIRQ(37); } volatile int note_end = 0; void TIM2_IRQHandler(void) { Macro_Clear_Bit(TIM2->SR, 0); NVIC_ClearPendingIRQ(28); note_end = 1; } //main.c #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); SCB->VTOR = 0x08003000; SCB->SHCSR = 0; } #define BASE (500) //msec enum key{C1, C1_, D1, D1_, E1, F1, F1_, G1, G1_, A1, A1_, B1, C2, C2_, D2, D2_, E2, F2, F2_, G2, G2_, A2, A2_, B2}; enum note{N16=BASE/4, N8=BASE/2, N4=BASE, N2=BASE*2, N1=BASE*4}; const int song1[][2] = { {G1,N4},{G1,N4},{E1,N8},{F1,N8},{G1,N4},{A1,N4},{A1,N4},{G1,N2},{G1,N4},{C2,N4},{E2,N4},{D2,N8},{C2,N8},{D2,N2} }; static void Buzzer_Beep(unsigned char tone, int duration) { const static unsigned short tone_value[] = {261,277,293,311,329,349,369,391,415,440,466,493,523,554,587,622,659,698,739,783,830,880,932,987}; TIM3_Out_Freq_Generation(tone_value[tone]); TIM2_Delay(duration); } extern volatile int Uart1_Rx_In; extern volatile int Uart1_Rx_Data; extern volatile int note_end; void Main(void) { Sys_Init(); TIM4_Out_Init(); TIM3_Out_Init(); Uart1_RX_Interrupt_Enable(1); static int timer_run = 0; volatile int i = 0; Buzzer_Beep(song1[i][0], song1[i][1]); for(;;) { if (Uart1_Rx_In) { Uart1_Rx_Data = Uart1_Rx_Data - '0'; if (Uart1_Rx_Data == 0) { TIM4_Out_Stop(); timer_run = 0; } else { if (timer_run == 0) { TIM4_Out_PWM_Generation(1000, Uart1_Rx_Data); timer_run = 1; } else { TIM4_Change_Duty(Uart1_Rx_Data); } } Uart1_Rx_In = 0; } if (note_end) { TIM3_Out_Stop(); i++; if (i >= sizeof(song1)/sizeof(song1[0])) { i = 0; } Buzzer_Beep(song1[i][0], song1[i][1]); note_end = 0; } } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex45] #7 ๋ฉ๋ก๋ ๋ฐ๋ณต ์ฌ์ ๋ฐ UART ๊ธฐ๋ฐ LED PWM ์ ์ด ์ค์ต
๋ฌธ์ ์ค๋ช ๋ถ์ ๋ฅผ ํตํด ๋ฏธ๋ฆฌ ์ ์๋ ๋ฉ๋ก๋(song1)๋ฅผ ๋ฐ๋ณต ์ฌ์ํ๊ณ , UART ์์ ์ธํฐ๋ฝํธ๋ฅผ ํตํด LED ๋ฐ๊ธฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ์ดํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. main ๋ฃจํ์์๋ TIM3๊ณผ TIM2๋ฅผ ์ด์ฉํ์ฌ ์๊ณ ์ฃผํ์ ๋ฐ ์ง์์๊ฐ์ ๋ฐ๋ผ ๋ฉ๋ก๋๋ฅผ ์ฌ์ USART1 ์ธํฐ๋ฝํธ์์ UART๋ก ์์ ๋ ๊ฐ(1~9)์ TIM4์ PWM ๋ํฐ๋น๋ก ์ ์ฉ๋์ด LED ๋ฐ๊ธฐ๋ฅผ ์กฐ์ UART๋ก 0์ด ์ ๋ ฅ๋๋ฉด PWM ์ถ๋ ฅ์ ์ค๋จํ์ฌ LED๋ฅผ ๋ ๋ฉ๋ก๋ ์ฌ์๊ณผ LED ์ ์ด๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ ์ ๋ต ์ฝ๋ //stm32f10x_it.c void USART1_IRQHandler(void) { unsigned char c = (unsigned char)USART1->DR; Uart1_Send_Byte(c); TIM4_Out_Init(); static int timer_run = 0; int n = c - '0'; if (n == 0) { TIM4_Out_Stop(); timer_run = 0; } else { if (timer_run == 0) { TIM4_Out_PWM_Generation(1000, n); timer_run = 1; } else { TIM4_Change_Duty(n); } } NVIC_ClearPendingIRQ(37); } //main.c #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); SCB->VTOR = 0x08003000; SCB->SHCSR = 0; } #define BASE (500) //msec static void Buzzer_Beep(unsigned char tone, int duration) { const static unsigned short tone_value[] = {261,277,293,311,329,349,369,391,415,440,466,493,523,554,587,622,659,698,739,783,830,880,932,987}; TIM3_Out_Freq_Generation(tone_value[tone]); TIM2_Delay(duration); TIM3_Out_Stop(); } void Main(void) { Sys_Init(); // NVIC USART1 Pending clear NVIC_ClearPendingIRQ(37); // USART1 RX interrupt enable Macro_Set_Bit(USART1->CR1, 5); // NVIC USART1 interrupt enable NVIC_EnableIRQ(37); int i; enum key{C1, C1_, D1, D1_, E1, F1, F1_, G1, G1_, A1, A1_, B1, C2, C2_, D2, D2_, E2, F2, F2_, G2, G2_, A2, A2_, B2}; enum note{N16=BASE/4, N8=BASE/2, N4=BASE, N2=BASE*2, N1=BASE*4}; const int song1[][2] = { {G1,N4},{G1,N4},{E1,N8},{F1,N8},{G1,N4},{A1,N4},{A1,N4},{G1,N2},{G1,N4},{C2,N4},{E2,N4},{D2,N8},{C2,N8},{D2,N2} }; //const char * note_name[] = {"C1", "C1#", "D1", "D1#", "E1", "F1", "F1#", "G1", "G1#", "A1", "A1#", "B1", "C2", "C2#", "D2", "D2#", "E2", "F2", "F2#", "G2", "G2#", "A2", "A2#", "B2"}; TIM3_Out_Init(); Uart1_Printf("\nSong Play\n"); for(;;) { for(i=0; i<(sizeof(song1)/sizeof(song1[0])); i++) { //Uart1_Printf("%s ", note_name[song1[i][0]]); Buzzer_Beep(song1[i][0], song1[i][1]); } } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex44] #6 PWM ๊ธฐ๋ฐ LED ๋ฐ๊ธฐ ์ ์ด ๋ฐ ๋ฉ๋ก๋ ์ฐ์ฃผ ํตํฉ ์ค์ต
๋ฌธ์ ์ค๋ช PWM์ ์ด์ฉํด LED ๋ฐ๊ธฐ๋ฅผ ์ ์ดํ๊ณ , ๋์์ ๋ฏธ๋ฆฌ ์ ์๋ ์๊ณ ๋ฐฐ์ด(song1)์ ๋ฐ๋ผ ๋ถ์ ๋ก ์์ ์ ์ฐ์ฃผํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. TIM4๋ PWM ์ถ๋ ฅ์ ์์ฑํ๋ฉฐ, UART๋ก ์ ๋ ฅ๋ ๊ฐ(1~9)์ ๋ฐ๋ผ ๋ํฐ๋น๋ฅผ ์กฐ์ ํด LED ๋ฐ๊ธฐ๋ฅผ ๋ณ๊ฒฝ ์ ๋ ฅ๊ฐ 0์ด ๋ค์ด์ค๋ฉด PWM ์ถ๋ ฅ์ ์ค๋จํ์ฌ LED๋ฅผ ๋ TIM3๊ณผ TIM2๋ฅผ ์ด์ฉํด ์๊ณ ์ฃผํ์์ ์ํ ๊ธธ์ด์ ๋ฐ๋ผ ๋ฉ๋ก๋๋ฅผ ๋ฐ๋ณต ์ฌ์ ์ฐ์ฃผ๋๋ ์์ UART๋ฅผ ํตํด ์๊ณ ์ด๋ฆ์ผ๋ก ์ถ๋ ฅ๋จ ์ ๋ต ์ฝ๋ #include "device_driver.h" #define BASE (500) static void Buzzer_Beep(unsigned char tone, int duration) { const static unsigned short tone_value[] = { 261,277,293,311,329,349,369,391,415,440,466,493, 523,554,587,622,659,698,739,783,830,880,932,987 }; TIM3_Out_Freq_Generation(tone_value[tone]); TIM2_Delay(duration - 20); TIM3_Out_Stop(); TIM2_Delay(20); } static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); } void Main(void) { Sys_Init(); TIM4_Out_Init(); TIM4_Out_Freq_Generation(1000, 0); TIM3_Out_Init(); Uart1_Printf("HomeWork (Verilog 6)\n"); char x; int i = 0; int state = 0; enum key { C1, C1_, D1, D1_, E1, F1, F1_, G1, G1_, A1, A1_, B1, C2, C2_, D2, D2_, E2, F2, F2_, G2, G2_, A2, A2_, B2 }; enum note { N16 = BASE/4, N8 = BASE/2, N4 = BASE, N2 = BASE*2, N1 = BASE*4 }; const int song1[][2] = { {G1,N4},{G1,N4},{E1,N8},{F1,N8},{G1,N4}, {A1,N4},{A1,N4},{G1,N2},{G1,N4},{C2,N4}, {E2,N4},{D2,N8},{C2,N8},{D2,N2} }; const char * note_name[] = { "C1", "C1#", "D1", "D1#", "E1", "F1", "F1#", "G1", "G1#", "A1", "A1#", "B1", "C2", "C2#", "D2", "D2#", "E2", "F2", "F2#", "G2", "G2#", "A2", "A2#", "B2" }; for(;;) { if(i == sizeof(song1)/ sizeof(song1[0])){ i = 0; } if(state == 0) { x = Uart1_Get_Pressed(); if (x != 0) { Uart1_Printf("Input: %d\n", x - '0'); if (x == '0') { TIM4->CCR3 = TIM4->ARR; } else { TIM4_Change_Duty_Rate(x - '0'); } } } Uart1_Printf("%s ", note_name[song1[i][0]]); Buzzer_Beep(song1[i][0], song1[i][1]); i++; } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex43] #5 UART ์ ๋ ฅ ๊ธฐ๋ฐ PWM LED ๋ฐ๊ธฐ ์ ์ด ์ค์ต
๋ฌธ์ ์ค๋ช TIM4 ํ์ด๋จธ๋ฅผ ์ด์ฉํ์ฌ PWM ์ ํธ๋ฅผ ์์ฑํ๊ณ , UART๋ก ์ ๋ ฅ๋ ์ซ์(0~9)์ ๋ฐ๋ผ LED ๋ฐ๊ธฐ๋ฅผ ์ ์ดํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. TIM4 ์ฑ๋์ ์ฌ์ฉํ์ฌ PWM ํํ ์ถ๋ ฅ ์ ๋ ฅ๊ฐ 1~9๋ ๋ํฐ๋น๋ก ์ ์ฉ๋์ด LED ๋ฐ๊ธฐ๋ฅผ ๋ณ๊ฒฝ ์ ๋ ฅ๊ฐ 0์ PWM ์ถ๋ ฅ์ ์ ์ง์์ผ LED๋ฅผ ๋ UART ์ ๋ ฅ์ ํตํด ์ฌ์ฉ์์ ์ํธ์์ฉํ๋ฉฐ, ํ์ฌ ์ ๋ ฅ๊ฐ์ UART๋ก ๋ค์ ์ถ๋ ฅํจ ์ ๋ต ์ฝ๋ // timer.c #define TIM4_FREQ (1000000) // 1MHz #define TIM4_TICK (1000000/TIM4_FREQ) // usec #define TIME4_PLS_OF_1ms (1000/TIM4_TICK) void TIM4_Out_Init(void) { Macro_Set_Bit(RCC->APB1ENR, 2); // tim4 Macro_Set_Bit(RCC->APB2ENR, 3); // b port Macro_Write_Block(GPIOB->CRH, 0xF, 0xE, 0); //1110 open drain Macro_Write_Block(TIM4->CCMR2, 0xFF, 0x68, 0); TIM4->CCER = (0<<9)|(1<<8); } void TIM4_Out_PWM_Generation(unsigned int freq, unsigned int duty) { // Down Counter, Repeat Mode TIM4->CR1 = (1<<4)|(0<<3); // Timer ์ฃผํ์๊ฐ TIM4_FREQ๊ฐ ๋๋๋ก PSC ์ค์ TIM4->PSC = (unsigned int)((TIMXCLK / (double)TIM4_FREQ) + 0.5) - 1; // 1KHz // ์์ฒญํ ์ฃผํ์๊ฐ ๋๋๋ก ARR ์ค์ TIM4->ARR = (int)((double)TIM4_FREQ/freq + 0.5) - 1; // Duty Rate 50%๊ฐ ๋๋๋ก CCR3 ์ค์ TIM4->CCR3 = (int)(TIM4->ARR * (duty / 10.)); // Manual Update(UG ๋ฐ์) Macro_Set_Bit(TIM4->EGR, 0); // Timer Start Macro_Set_Bit(TIM4->CR1, 0); } void TIM4_Out_Stop(void) { Macro_Clear_Bit(TIM4->CR1, 0); } void TIM4_Change_Duty(unsigned int duty) { TIM4->CCR3 = (int)(TIM4->ARR * (duty / 10.)); } // main.c #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); } void Main(void) { Sys_Init(); TIM4_Out_Init(); char x; int timer_run = 0; TIM4_Out_PWM_Generation(1000, 0); for(;;) { x = Uart1_Get_Pressed(); if (x != 0) { int n = x - '0'; Uart1_Printf("%d", n); if (n == 0) { TIM4_Out_Stop(); timer_run = 0; } else { if (timer_run == 0) { TIM4_Out_PWM_Generation(1000, n); timer_run = 1; } else { TIM4_Change_Duty(n); } } } } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex42] #4 ๋์ผ ํ์ด๋จธ ๊ธฐ๋ฐ LED ๊น๋นก์ ์ ์ด ๋ฐ UART ์ฃผ๊ธฐ ์ถ๋ ฅ ์ค์ต
๋ฌธ์ ์ค๋ช UART๋ก ์ ๋ ฅ๋ ์ซ์(1~9)๋ฅผ ์ด์ฉํ์ฌ LED ๊น๋นก์ ์๋๋ฅผ ์กฐ์ ํ๊ณ , ์ผ์ ์ฃผ๊ธฐ๋ก UART๋ฅผ ํตํด ์ (.)์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ์ซ์ 1~9 ์ ๋ ฅ ์ TIM4 ํ์ด๋จธ์ ์ฃผ๊ธฐ๋ฅผ ์กฐ์ ํ์ฌ LED ๊น๋นก์ ์๋ ๋ณ๊ฒฝ ์ซ์ 0 ์ ๋ ฅ ์ LED ๊น๋นก์์ ๋ฉ์ถค TIM2๋ฅผ ์ด์ฉํด ์ผ์ ์ฃผ๊ธฐ๋ก UART์ ์ (.) ์ถ๋ ฅ ๋ ํ์ด๋จธ๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ฉฐ, ๊น๋นก์๊ณผ ์ถ๋ ฅ์ด ๋์์ ์ด๋ฃจ์ด์ง ์ ๋ต ์ฝ๋ void Main(void) { Sys_Init(); char x; int n; int timer_run = 0; int led = 0; TIM4_Repeat(10); TIM2_Repeat(100); for(;;) { x = Uart1_Get_Pressed(); if(x != 0) { n = x - '0'; Uart1_Printf("%d", n); // 0? timer_run = 0; if (n==0) { timer_run = 0; } // 1~9? TIM4_Change_Value(n * 10); timer_run = 1 else { TIM4_Change_Value(n * 10); timer_run = 1; } } if(TIM4_Check_Timeout() && timer_run == 1) { //LED๋ฐ์ LED_Display(led ^= 1); } if(TIM2_Check_Timeout()) { Uart1_Printf("."); } } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex41] #3 UART ์ซ์ ์ ๋ ฅ ๋ฐ ๋ฌธ์์ด โ ์ ์ ๋ณํ ํจ์ ์ค์ต
๋ฌธ์ ์ค๋ช UART๋ฅผ ํตํด ์ต๋ 4์๋ฆฌ๊น์ง์ ์ซ์ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ๊ณ , ์ด๋ฅผ ์ ์๋ก ๋ณํํ์ฌ ๋ฐํํ๋ ํจ์๋ฅผ ์์ฑํ๋ผ. ์ ๋ ฅ ๋ฌธ์๋ ํ ๊ธ์์ฉ UART ์์ ๋ ์ง์คํฐ์์ ์ฝ์ ์์ ๋ ๋ฌธ์๋ ์ฆ์ ์์ฝ(๋๋๋ ค ์ถ๋ ฅ) ์ฒ๋ฆฌ ์ ๋ ฅ์ด \r (Enter)์ผ ๊ฒฝ์ฐ ์ฆ์ ์ ๋ ฅ ์ข ๋ฃ ํ ์ ์ ๋ฐํ ์ซ์ ์ด์ธ ๋ฌธ์๋ ์ฒ๋ฆฌํ์ง ์์ผ๋ฉฐ, ์ต๋ 4์๋ฆฌ๊น์ง๋ง ์ ๋ ฅ ๊ฐ๋ฅ ์ ๋ต ์ฝ๋ int Uart_Get_Int_Num(void) { char s[10]; int i; int num = 0; for (i=0;i<4;i++) { while (!Macro_Check_Bit_Set(USART1->SR, 5)); s[i] = USART1->DR; while (!Macro_Check_Bit_Set(USART1->SR, 7)); USART1->DR = s[i]; if (s[i] == '\r') { return num; } num = num * 10 + (s[i] - '0'); } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex40] #2 ์ธํฐ๋ฝ ๋ฐฉ์์ ๋ฒํผ ์ ๋ ฅ ๊ธฐ๋ฐ LED ํ ๊ธ ์ค์ต
๋ฌธ์ ์ค๋ช PA3 ํ์ ์ฐ๊ฒฐ๋ ๋ฒํผ ์ ๋ ฅ์ ๊ฐ์งํ์ฌ, ๋ฒํผ์ด ๋๋ฆด ๋๋ง๋ค PA2์ ์ฐ๊ฒฐ๋ LED์ ์ํ๋ฅผ ๋ฐ์ ์ํค๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ๋ฒํผ ์ ๋ ฅ์ ํ์ ์ค์ ๋ PA3 ํ์ ํตํด ์ฝ์ LED๋ PA2 ํ์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ, ๋ฒํผ์ด ๋๋ฆด ๋๋ง๋ค ํ ๊ธ๋จ ๋๋ฐ์ด์ฑ ํจ๊ณผ๋ฅผ ์ํด ์ธํฐ๋ฝ(interlock) ๋ฐฉ์ ์ฌ์ฉ ์ ๋ต ์ฝ๋ #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); } void Main(void) { Sys_Init(); Uart_Printf("PA3 Switch Input Toggling for LED on PA2\n"); Macro_Write_Block(GPIOA->CRL, 0xF, 0x8, 12); Macro_Write_Block(GPIOA->CRL, 0xF, 0x6, 8); Macro_Set_Bit(GPIOA->ODR, 3); int interlock = 0; for (;;) { if ((interlock == 0) && Macro_Check_Bit_Clear(GPIOA->IDR, 3)) { Macro_Invert_Bit(GPIOA->ODR, 2); interlock = 1; } else if ((interlock == 1) && Macro_Check_Bit_Set(GPIOA->IDR, 3)) { interlock = 0; } } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex39] #1 CMSIS ์ง์ ์ ๊ทผ์ ํตํ GPIOA LED ์ ๋ฉธ ์ค์ต
๋ฌธ์ ์ค๋ช CMSIS ๊ธฐ๋ฐ ๋ ์ง์คํฐ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ GPIOA ํ์ ์ง์ ์ ์ดํ๋ LED ์ ๋ฉธ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. RCC ๋ ์ง์คํฐ๋ฅผ ์ด์ฉํด ํฌํธ A ํด๋ญ์ ํ์ฑํ GPIOA์ CRL, ODR ๋ ์ง์คํฐ๋ฅผ ์ง์ ์ค์ ํ์ฌ LED ON/OFF ๊ตฌํ LED ์ํ๋ฅผ ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ํ ๊ธํ์ฌ ๊น๋นก์ด๋๋ก ํจ ์ ๋ต ์ฝ๋ #include "device_driver.h" void Main(void) { volatile int i; Uart_Init(115200); Uart_Printf("CMSIS Based Register Define\n"); // ์ด ๋ถ๋ถ์ ์์ ํ์ง ๋ง ๊ฒ RCC->APB2ENR |= (1<<2); // LED Pin์ ์ถ๋ ฅ์ผ๋ก ์ค์ GPIOA->CRL = 0x600; for(;;) { // LED ๋ชจ๋ ON GPIOA->ODR = 0x0; for(i=0; i<0x40000; i++); // LED ๋ชจ๋ OFF GPIOA->ODR = 0x4; for(i=0; i<0x40000; i++); } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex38] SYSTEM_SERVICE
๋ฌธ์ ์ค๋ช .global _SVC_Handler .type _SVC_Handler, %function _SVC_Handler: .extern SVC_FUNC @ SVC ํธ๋ค๋ฌ ์ค๊ณ ์ ๋ต ์ฝ๋ .global _SVC_Handler .type _SVC_Handler, %function _SVC_Handler: .extern SVC_FUNC PUSH {r4, lr} MRS r4, PSP LDR lr, [r4, #0x18] LDR lr, [lr, #-2] AND lr, lr, #0xFF LDR r12, =SVC_FUNC LDR r12, [r12, lr, lsl #2] BLX r12 STR r0, [r4] STR r1, [r4, #4] POP {r4, pc} ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex37] FAULT_HANDLER
๋ฌธ์ ์ค๋ช .syntax unified .thumb .text .extern MemManage_Handler .extern BusFault_Handler .extern UsageFault_Handler .global _HardFault_Handler .type _HardFault_Handler, %function _HardFault_Handler: @ ์ฝ๋ ์์ฑ .global _MemManage_Handler .type _MemManage_Handler, %function _MemManage_Handler: @ ์ฝ๋ ์์ฑ .global _BusFault_Handler .type _BusFault_Handler, %function _BusFault_Handler: @ ์ฝ๋ ์์ฑ .global _UsageFault_Handler .type _UsageFault_Handler, %function _UsageFault_Handler: @ ์ฝ๋ ์์ฑ .end ์ ๋ต ์ฝ๋ .syntax unified .thumb .text .extern HardFault_Handler .extern MemManage_Handler .extern BusFault_Handler .extern UsageFault_Handler .global _HardFault_Handler .type _HardFault_Handler, %function _HardFault_Handler: MOV R0, SP MOV R1, LR MRS R2, PSP B HardFault_Handler .global _MemManage_Handler .type _MemManage_Handler, %function _MemManage_Handler: MOV R0, SP MOV R1, LR MRS R2, PSP B MemManage_Handler .global _BusFault_Handler .type _BusFault_Handler, %function _BusFault_Handler: MOV R0, SP MOV R1, LR MRS R2, PSP B BusFault_Handler .global _UsageFault_Handler .type _UsageFault_Handler, %function _UsageFault_Handler: MOV R0, SP MOV R1, LR MRS R2, PSP B UsageFault_Handler .end ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex36] BASIC_HANDLER
๋ฌธ์ ์ค๋ช void Invalid_ISR(void) { /* ์ฝ๋ ์ค๊ณ */ Uart1_Printf("Invalid_Exception: %d!\n", ); Uart1_Printf("Invalid_ISR: %d!\n", ); for(;;); } void MemManage_Handler(void) { Uart1_Printf("Memory Management Fault\n"); /* ์ฝ๋ ์ค๊ณ */ for(;;); } void BusFault_Handler(void) { Uart1_Printf("Bus Fault\n"); /* ์ฝ๋ ์ค๊ณ */ for(;;); } void UsageFault_Handler(void) { Uart1_Printf("Usage Fault\n"); /* ์ฝ๋ ์ค๊ณ */ for(;;); } void HardFault_Handler(void) { Uart1_Printf("Hard Fault\n"); /* ์ฝ๋ ์ค๊ณ */ for(;;); } ์ ๋ต ์ฝ๋ void Invalid_ISR(void) { Uart1_Printf("Invalid_Exception: %d!\n", Macro_Extract_Area(SCB->ICSR, 0x1ff, 0)); Uart1_Printf("Invalid_ISR: %d!\n", Macro_Extract_Area(SCB->ICSR, 0x1ff, 0) - 16); for(;;); } void MemManage_Handler(void) { Uart1_Printf("Memory Management Fault\n"); Uart1_Printf("SHCSR: 0x%.8X\n", SCB->SHCSR); Uart1_Printf("ICSR: 0x%.8X\n", SCB->ICSR); Uart1_Printf("CFSR: 0x%.8X\n", SCB->CFSR); Uart1_Printf("MMFAR: 0x%.8X\n", SCB->MMFAR); for(;;); } void BusFault_Handler(void) { Uart1_Printf("Bus Fault\n"); Uart1_Printf("SHCSR: 0x%.8X\n", SCB->SHCSR); Uart1_Printf("ICSR: 0x%.8X\n", SCB->ICSR); Uart1_Printf("CFSR: 0x%.8X\n", SCB->CFSR); Uart1_Printf("BFAR: 0x%.8X\n", SCB->BFAR); for(;;); } void UsageFault_Handler(void) { Uart1_Printf("Usage Fault\n"); Uart1_Printf("SHCSR: 0x%.8X\n", SCB->SHCSR); Uart1_Printf("ICSR: 0x%.8X\n", SCB->ICSR); Uart1_Printf("CFSR: 0x%.8X\n", SCB->CFSR); for(;;); } void HardFault_Handler(void) { Uart1_Printf("Hard Fault\n"); Uart1_Printf("SHCSR: 0x%.8X\n", SCB->SHCSR); Uart1_Printf("ICSR: 0x%.8X\n", SCB->ICSR); Uart1_Printf("HFSR: 0x%.8X\n", SCB->HFSR); Uart1_Printf("CFSR: 0x%.8X\n", SCB->CFSR); Uart1_Printf("BFAR: 0x%.8X\n", SCB->BFAR); Uart1_Printf("MMFAR: 0x%.8X\n", SCB->MMFAR); for(;;); } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex35] AAPCS_C์ธก ์ ์ญ๋ณ์ ๊ณต์ ํจ์ 2
๋ฌธ์ ์ค๋ช @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ void Asm_Var_Access(void); @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern a .extern p .extern x .global Asm_Var_Access .type Asm_Var_Access, %function Asm_Var_Access: ์ ๋ต ์ฝ๋ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ void Asm_Var_Access(void); @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern a .extern p .extern x .global Asm_Var_Access .type Asm_Var_Access, %function Asm_Var_Access: ldr r0, =a ldr r1, [r0] add r1, r1, #1 str r1, [r0] ldr r0, =p ldr r0, [r0] ldr r1, [r0] add r1, r1, #1 str r1, [r0] mov r2, #4 ldr r0, =x 1: ldr r1, [r0] add r1, r1, #1 str r1, [r0], #4 subs r2, r2, #1 bgt 1b bx lr ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex34] AAPCS_C์ธก ์ ์ญ๋ณ์ ๊ณต์ ํจ์ 1
๋ฌธ์ ์ค๋ช @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ void Asm_Var_Signed_Char(void); @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern sc .global Asm_Var_Signed_Char .type Asm_Var_Signed_Char, %function Asm_Var_Signed_Char: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ void Asm_Var_Unsigned_Short(void); @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern us .global Asm_Var_Unsigned_Short .type Asm_Var_Unsigned_Short, %function Asm_Var_Unsigned_Short: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ void Asm_Var_Signed_Short(void); @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern ss .global Asm_Var_Signed_Short .type Asm_Var_Signed_Short, %function Asm_Var_Signed_Short: ์ ๋ต ์ฝ๋ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ void Asm_Var_Signed_Char(void); @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern sc .global Asm_Var_Signed_Char .type Asm_Var_Signed_Char, %function Asm_Var_Signed_Char: ldr r1, =sc ldrsb r0, [r1] add r0, r0, #1 strb r0, [r1] bx lr @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ void Asm_Var_Unsigned_Short(void); @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern us .global Asm_Var_Unsigned_Short .type Asm_Var_Unsigned_Short, %function Asm_Var_Unsigned_Short: ldr r1, =us ldrh r0, [r1] add r0, r0, #1 strh r0, [r1] bx lr @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ void Asm_Var_Signed_Short(void); @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern ss .global Asm_Var_Signed_Short .type Asm_Var_Signed_Short, %function Asm_Var_Signed_Short: ldr r1, =ss ldrsh r0, [r1] add r0, r0, #1 strh r0, [r1] bx lr ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex33] AAPCS_Asm_Add_Sqr ํจ์
๋ฌธ์ ์ค๋ช @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ int Asm_Add_Sqr(int a, int b); @ Sqr์ ํธ์ถํ๋ฉด r0-r3,r12๋ ๋ณํ ๊ฐ๋ฅ์ฑ์ด ์์ @ ํ๊ดด ์ฐ๋ ค๊ฐ ์๋ ๋ณ์๋ ๋ํผ์ํด @ leaf function์ด ์๋๋ฏ๋ก lr์ ์ ์ฅํ๋ค @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern Sqr .global Asm_Add_Sqr .type Asm_Add_Sqr, %function Asm_Add_Sqr: @ int Asm_Add_Sqr(int a, int b); @ { @ return (Sqr(a)+Sqr(b)); @ } @ C์ ํจ์์ธ Sqr()์ ์ด์ฉ ์ ๋ต ์ฝ๋ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ int Asm_Add_Sqr(int a, int b); @ Sqr์ ํธ์ถํ๋ฉด r0-r3,r12๋ ๋ณํ ๊ฐ๋ฅ์ฑ์ด ์์ @ ํ๊ดด ์ฐ๋ ค๊ฐ ์๋ ๋ณ์๋ ๋ํผ์ํด @ leaf function์ด ์๋๋ฏ๋ก lr์ ์ ์ฅํ๋ค @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .extern Sqr .global Asm_Add_Sqr .type Asm_Add_Sqr, %function Asm_Add_Sqr: @ int Asm_Add_Sqr(int a, int b); @ { @ return (Sqr(a)+Sqr(b)); @ } @ C์ ํจ์์ธ Sqr()์ ์ด์ฉ push {r4-r6, lr} mov r4, r1 bl Sqr mov r5, r0 mov r0, r4 bl Sqr add r0, r0, r5 pop {r4-r6, pc} ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex32] BOOT_CODE
๋ฌธ์ ์ค๋ช .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .extern __RO_LIMIT__ .extern __RW_base__ .extern __ZI_base__ .extern __ZI_LIMIT__ ldr r0, =__RO_LIMIT__ ldr r1, =__RW_base__ ldr r3, =__ZI_base__ cmp r0, r1 beq 2f 1: @ RW ๋ณต์ฌ ์ฝ๋ ์์ฑ 2: ldr r1, =__ZI_LIMIT__ mov r2, #0x0 3: @ BSS ์ด๊ธฐํ ์ฝ๋ ์์ฑ .extern Main bl Main b . .end ์ ๋ต ์ฝ๋ .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .extern __RO_LIMIT__ .extern __RW_BASE__ .extern __ZI_BASE__ .extern __ZI_LIMIT__ ldr r0, =__RO_LIMIT__ ldr r1, =__RW_BASE__ ldr r3, =__ZI_BASE__ cmp r0, r1 beq 2f 1: cmp r1, r3 ittt lo ldrlo r2, [r0], #4 strlo r2, [r1], #4 blo 1b 2: ldr r1, =__ZI_LIMIT__ mov r2, #0x0 3: cmp r3, r1 itt lo strlo r2, [r3], #4 blo 3b .extern Main bl Main b . .end ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex31] ASM_TOGGLING - 5ํ
๋ฌธ์ ์ค๋ช .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .equ GPIOB_CRH, 0x40010C04 .equ GPIOB_ODR, 0x40010C0C .equ APB2ENR, 0x40021018 @ ์ด๋ถ๋ถ์ ์์ ํ์ง ๋ง ๊ฒ @ LDR r0, =APB2ENR LDR r1, =0x8 STR r1, [r0] @ ์ด๊ธฐ LED ๋ชจ๋ OFF @ LDR r0, =GPIOB_CRH LDR r1, [r0] BIC r1, r1, #0xFF<<0 ORR r1, r1, #0x66<<0 STR r1, [r0] LDR r0, =GPIOB_ODR LDR r1, [r0] ORR r1, r1, #0x3<<8 STR r1, [r0] @ ์ฌ๊ธฐ๋ถํฐ ์ฝ๋ ์์ฑ @ b . .end ์ ๋ต ์ฝ๋ .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .equ GPIOB_CRH, 0x40010C04 .equ GPIOB_ODR, 0x40010C0C .equ APB2ENR, 0x40021018 LDR r0, =APB2ENR LDR r1, =0x8 STR r1, [r0] LDR r0, =GPIOB_CRH LDR r1, [r0] BIC r1, r1, #0xFF<<0 ORR r1, r1, #0x66<<0 STR r1, [r0] LDR r0, =GPIOB_ODR LDR r1, [r0] ORR r1, r1, #0x3<<8 STR r1, [r0] MOV r4, #10 1: LDR r3, =0xFFFFF 2: SUBS r3, r3, #1 BHI 2b LDR r1, [r0] EOR r1, r1, #0x3<<8 STR r1, [r0] SUBS r4, r4, #1 BHI 1b b . .end ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex30] ASM_TOGGLING
๋ฌธ์ ์ค๋ช .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .equ GPIOB_CRH, 0x40010C04 .equ GPIOB_ODR, 0x40010C0C .equ APB2ENR, 0x40021018 @ ์ด๋ถ๋ถ์ ์์ ํ์ง ๋ง ๊ฒ @ LDR r0, =APB2ENR LDR r1, =0x8 STR r1, [r0] @ ์ด๊ธฐ LED ๋ชจ๋ OFF @ LDR r0, =GPIOB_CRH LDR r1, [r0] BIC r1, r1, #0xFF<<0 ORR r1, r1, #0x66<<0 STR r1, [r0] LDR r0, =GPIOB_ODR LDR r1, [r0] ORR r1, r1, #0x3<<8 STR r1, [r0] @ ์ฌ๊ธฐ๋ถํฐ ์ฝ๋ ์์ฑ @ b . .end ์ ๋ต ์ฝ๋ .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .equ GPIOB_CRH, 0x40010C04 .equ GPIOB_ODR, 0x40010C0C .equ APB2ENR, 0x40021018 LDR r0, =APB2ENR LDR r1, =0x8 STR r1, [r0] LDR r0, =GPIOB_CRH LDR r1, [r0] BIC r1, r1, #0xFF<<0 ORR r1, r1, #0x66<<0 STR r1, [r0] LDR r0, =GPIOB_ODR LDR r1, [r0] ORR r1, r1, #0x3<<8 STR r1, [r0] 1: LDR r3, =0xFFFFF 2: SUBS r3, r3, #1 BHI 2b LDR r1, [r0] EOR r1, r1, #0x3<<8 STR r1, [r0] B 1b .end ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex29] ASM_BIT_OP
๋ฌธ์ ์ค๋ช .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .equ GPIOB_CRH, 0x40010C04 .equ GPIOB_ODR, 0x40010C0C .equ APB2ENR, 0x40021018 @ ์ด๋ถ๋ถ์ ์์ ํ์ง ๋ง ๊ฒ @ LDR r0, =APB2ENR LDR r1, =0x8 STR r1, [r0] @ ์ฌ๊ธฐ๋ถํฐ ์ฝ๋ ์์ฑ @ b . .end ์ ๋ต ์ฝ๋ .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .equ GPIOB_CRH, 0x40010C04 .equ GPIOB_ODR, 0x40010C0C .equ APB2ENR, 0x40021018 LDR r0, =APB2ENR LDR r1, =0x8 STR r1, [r0] LDR r0, =GPIOB_CRH LDR r1, [r0] BIC r1, r1, #0xFF<<0 ORR r1, r1, #0x66<<0 STR r1, [r0] LDR r0, =GPIOB_ODR LDR r1, [r0] BIC r1, r1, #0x3<<8 ORR r1, r1, #0x2<<8 STR r1, [r0] b . .end ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex28] ASM_LED_ON
๋ฌธ์ ์ค๋ช .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .equ GPIOB_CRH, 0x40010C04 .equ GPIOB_ODR, 0x40010C0C .equ APB2ENR, 0x40021018 @ ์ด๋ถ๋ถ์ ์์ ํ์ง ๋ง ๊ฒ @ LDR r0, =APB2ENR LDR r1, =0x8 STR r1, [r0] @ ์ฌ๊ธฐ๋ถํฐ ์ฝ๋ ์์ฑ @ b . .end ์ ๋ต ์ฝ๋ .syntax unified .thumb .text .word 0x20005000 .word __start .global __start .type __start, %function __start: .equ GPIOB_CRH, 0x40010C04 .equ GPIOB_ODR, 0x40010C0C .equ APB2ENR, 0x40021018 LDR r0, =APB2ENR LDR r1, =0x8 STR r1, [r0] LDR r0, =GPIOB_CRH LDR r1, =0x66 STR r1, [r0] LDR r0, =GPIOB_ODR LDR r1, =0x0100 STR r1, [r0] b . .end ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex27] ๋ก๋ด ์ด๋ ์๊ฐ ์ธก์
๋ฌธ์ ์ค๋ช ๋ค์ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ๋ง์กฑํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ [์๊ตฌ ์ฌํญ] ๋ก๋ด์ด ์ด๋์ ์์ํ ๋ KEY0๊ฐ ๋๋ฆฌ๊ณ ๋ชฉ์ ์ง์ ๋๋ฌํ๋ฉด KEY1์ด ๋๋ฆฐ๋ค๊ณ ๊ฐ์ ํ์ KEY0๋ฅผ ๋๋ฅด๊ณ KEY1์ ๋๋ฅด๋ฉด ๊ทธ ๊ฐ๊ฒฉ ์๊ฐ์ UART๋ก ์ธ์ํ๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋ผ ๋ค๋ง, KEY0๋ฅผ ๋๋ฅธ ์ํ์์ ๋ค์ KEY0๋ฅผ ๋๋ฅด๋๊ฑด ๋ฌด์ํ๋ค. ์ฆ KEY0๋ฅผ ๋๋ฆฐ ๋ค ๊ทธ ๋๋ถํฐ KEY0๊ฐ ์ฌ๋ฌ๋ฒ ๋๋ ค๋ KEY1์ด ๋๋ฆด๋ ๊น์ง ์๊ฐ๋ง ์ธก์ ๋๋ฉด ๋๋ค ์๊ฐ์ 100msec ๋จ์(์ฆ, 0.1์ด ๋จ์๋ก ์ธก์ ํ๋ฉฐ ๋ฐ์ฌ๋ฆผํ๊ฑฐ๋ ๋ฒ๋ฆผํ๋ ๊ฒ์ ๋ฌด๋ฐฉํ๋ค)๋ก ์ธก์ ํ๋ค. (์๋ฅผ ๋ค์ด ์ค์ ์๊ฐ์ด 3.45์ด ์ผ ๊ฒฝ์ฐ ์ธ์ ๊ฒฐ๊ณผ๊ฐ 3.4 ๋๋ 3.5 ์ด๋ค ๊ฐ์ด๋ ๋ค ์๊ด์๋ค) ์ต๋ ์ธก์ ๊ฐ๋ฅ ์๊ฐ์ ๊ฑฐ์ ๋ฌด์ ํ์ผ๋ก ๋ณธ๋ค ๋ก์ง์๋ ๋ผ์ด์ ธ๋ฅผ KEY0์ KEY1์ ์ฐ๊ฒฐํ์ฌ ์ค์์น ๋๋ฆฐ ์ฌ์ด ์๊ฐ์ ํ์ธํ ์ ์๋๋ก ์ฐ๊ฒฐํ๋ค. [์ ์ถ ์๋ น] ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฐ๋์ ๋์ ํ์ธ์ ๋ฐ์ํ ๊ฐ์ฌ ์ง์์ ์ํ์ฌ ์ฝ๋๋ฅผ ์ ๋ก๋ํด์ผ ํจ ์์๋ก ์ฝ๋ ์ ์ถ์ ํด๋น ๋ฌธํญ 0์ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ฃผ์ ๋ฐ๋ ๋ค๋ฅธ ํ์ผ์ ์๋ ์์ ๋ ์ ๊ณต ๋๋ ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ๋ณต์ฌํ์ฌ ์ ์ถํ ํ์ ์์ (์) LED_Display ํจ์ ๋ฑ ์์ฑ ๋๋ ๊ธฐ์กด ์ฝ๋ ๋ณ๊ฒฝํ ํ์ผ์ ๋ด์ฉ(์ด ๋ฌธ์ ์ ๊ด๋ จํ ์ฝ๋ ๋ถ๋ถ๋ง)์ ๋ชจ๋ ๋ณต์ฌํ์ฌ ์ ์ถํด์ผ ํ๋ค. ์ ์ถ์์๋ main.c ๋ด์ฉ์ ์ ์ผ ์์ ๋๊ณ ๊ทธ ์๋์ ๋ค๋ฅธ ํ์ผ์ ์ฝ๋๋ฅผ ์ ์ถํ๋ main.c ์ด์ธ ํ์ผ์ ๋ฐ๋์ ํ์ผ๋ช ์ ์ฝ๋ ์์ ์ ๊ณ ๋ณต์ฌํ์ฌ ์ ์ถํ ๊ฒ ์ ๋ต ์ฝ๋ #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); SCB->VTOR = 0x08003000; SCB->SHCSR = 0; } extern volatile int Key_Value; extern volatile int TIM4_Expired; # if 1 void Main(void) { Sys_Init(); Key_ISR_Enable(1); int state = 0; double t = 0; for(;;) { if ((state == 0) && (Key_Value == 1)) { TIM4_Repeat_Interrupt_Enable(1, 100); state = 1; } if ((state == 1) && TIM4_Expired) { t += 0.1; TIM4_Expired = 0; } if ((state == 1) && (Key_Value == 2)) { TIM4_Stop(); Uart1_Printf("%.1f\n", t); state = 0; Key_Value = 0; break; } } } # endif ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex26] ํ์์
๋ฌธ์ ์ค๋ช ๋ค์ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ๋ง์กฑํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ [์๊ตฌ ์ฌํญ] 3์ด ๋์์ KEY0๊ฐ ๋๋ฆฐ ํ์๋ฅผ ๊ตฌํ์ฌ UART๋ก ์ธ์ํ๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋ผ. Chattering ๋ฌธ์ ๋ ๊ณ ๋ คํ ํ์๊ฐ ์์ผ๋ฉฐ ํ๋ก๊ทธ๋จ์ด ์์๋ ํ ์ฒ์ KEY0๊ฐ ๋๋ฆฐ ์์ ๋ถํฐ 3์ด ์ธก์ ์ ์์ํ๋ฉฐ 3์ด๊ฐ ์ข ๋ฃ๋๋ฉด ๊ทธ๋๊น์ง ๋๋ฆฐ KEY0 ํ์๋ฅผ ์ธ์ํ๋ค. ๋จ, KEY0๊ฐ ํ๋ฒ ๋๋ฆฌ๋ฉด ํ๋ฒ๋ง Count ๋์ด์ผ ํ๋ค. ์ฆ, ์ค๋ ๋๋ฆฌ๊ณ ์์ด๋ ํ๋ฒ์ผ๋ก ์ธ์ ๋์ด์ผ ํ๋ค. ์ธํฐ๋ฝํธ ์ฌ์ฉ ์ฌ๋ถ๋ ๋ฌด๋ฐฉํ๋ฉฐ ๋์ ๊ฒ์ฌ๋ฅผ ๋ฐ์ ํ ์ฝ๋๋ฅผ Bash ์ธ์ด๋ก ์ ์ถํ๋ค. [์ ์ถ ์๋ น] ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฐ๋์ ๋์ ํ์ธ์ ๋ฐ์ํ ๊ฐ์ฌ ์ง์์ ์ํ์ฌ ์ฝ๋๋ฅผ ์ ๋ก๋ํด์ผ ํจ ์์๋ก ์ฝ๋ ์ ์ถ์ ํด๋น ๋ฌธํญ 0์ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ฃผ์ ๋ฐ๋ ๋ค๋ฅธ ํ์ผ์ ์๋ ์์ ๋ ์ ๊ณต ๋๋ ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ๋ณต์ฌํ์ฌ ์ ์ถํ ํ์ ์์ (์) LED_Display ํจ์ ๋ฑ ์์ฑ ๋๋ ๊ธฐ์กด ์ฝ๋ ๋ณ๊ฒฝํ ํ์ผ์ ๋ด์ฉ(์ด ๋ฌธ์ ์ ๊ด๋ จํ ์ฝ๋ ๋ถ๋ถ๋ง)์ ๋ชจ๋ ๋ณต์ฌํ์ฌ ์ ์ถํด์ผ ํ๋ค. ์ ์ถ์์๋ main.c ๋ด์ฉ์ ์ ์ผ ์์ ๋๊ณ ๊ทธ ์๋์ ๋ค๋ฅธ ํ์ผ์ ์ฝ๋๋ฅผ ์ ์ถํ๋ main.c ์ด์ธ ํ์ผ์ ๋ฐ๋์ ํ์ผ๋ช ์ ์ฝ๋ ์์ ์ ๊ณ ๋ณต์ฌํ์ฌ ์ ์ถํ ๊ฒ ์ ๋ต ์ฝ๋ // main.c #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); SCB->VTOR = 0x08003000; SCB->SHCSR = 0; } extern volatile int Key_Value; extern volatile int TIM4_Expired; void Main(void) { Sys_Init(); Key_ISR_Enable(1); int cnt = 0; int state = 0; int pls_state = 0; for(;;) { if (Key_Value) { if (state == 0) { TIM4_Repeat_Interrupt_Enable(1, 1000); state = 1; cnt = 1; } else { cnt++; } Key_Value = 0; } if (TIM4_Expired) { pls_state++; if (pls_state >= 3) { TIM4_Stop(); state = 0; Uart1_Printf("%d\n", cnt); pls_state = 0; } TIM4_Expired = 0; } } } // stm32f10x_it.c volatile int Key_Value = 0; void EXTI9_5_IRQHandler(void) { Key_Value = Macro_Extract_Area(EXTI->PR, 0x1, 6); EXTI->PR = 0x1<<6; NVIC_ClearPendingIRQ(23); } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex25] 3๋จ ๋ฐ๊ธฐ ์กฐ์ ๋จํ
๋ฌธ์ ์ค๋ช ๋ค์ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ๋ง์กฑํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ [์๊ตฌ ์ฌํญ] ์ฝ๋๊ฐ ์คํ๋๋ฉด PA3์ duty 50%, 1khz ํ์ค๊ฐ ๊ณ์ ์ถ๋ ฅ๋๋ค. KEY0๋ฅผ ๋๋ฅด๋ฉด duty 20%๋ก ๋๊ณ KEY1์ ๋๋ฅด๋ฉด duty 80%๋ก ๋๋ค. ๋จ, duty 20% ์ํ์์ ๋ค์ KEY0๋ฅผ ๋๋ฅด๋ฉด duty๋ 50%๋ก ๋ณต๊ทํด์ผํ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก duty 80% ์ํ์์ ๋ค์ KEY1์ ๋๋ฅด๋ฉด duty 50%๋ก ๋ณต๊ทํด์ผํ๋ค. ๋ก์ง์๋ ๋ผ์ด์ ์ PA3์ ์ฐ๊ฒฐํ์ฌ ํํ์ ํ์ธํ๋ค. (์ฃผ์) ํ์ํ ์ฃผ๋ณ์ฅ์น ํด๋ก์ ์์์ Enableํด์ผํ๋ค. [์ ์ถ ์๋ น] ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฐ๋์ ๋์ ํ์ธ์ ๋ฐ์ํ ๊ฐ์ฌ ์ง์์ ์ํ์ฌ ์ฝ๋๋ฅผ ์ ๋ก๋ํด์ผ ํจ ์์๋ก ์ฝ๋ ์ ์ถ์ ํด๋น ๋ฌธํญ 0์ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ฃผ์ ๋ฐ๋ ๋ค๋ฅธ ํ์ผ์ ์๋ ์์ ๋ ์ ๊ณต ๋๋ ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ๋ณต์ฌํ์ฌ ์ ์ถํ ํ์ ์์ (์) LED_Display ํจ์ ๋ฑ ์์ฑ ๋๋ ๊ธฐ์กด ์ฝ๋ ๋ณ๊ฒฝํ ํ์ผ์ ๋ด์ฉ(์ด ๋ฌธ์ ์ ๊ด๋ จํ ์ฝ๋ ๋ถ๋ถ๋ง)์ ๋ชจ๋ ๋ณต์ฌํ์ฌ ์ ์ถํด์ผ ํ๋ค. ์ ์ถ์์๋ main.c ๋ด์ฉ์ ์ ์ผ ์์ ๋๊ณ ๊ทธ ์๋์ ๋ค๋ฅธ ํ์ผ์ ์ฝ๋๋ฅผ ์ ์ถํ๋ main.c ์ด์ธ ํ์ผ์ ๋ฐ๋์ ํ์ผ๋ช ์ ์ฝ๋ ์์ ์ ๊ณ ๋ณต์ฌํ์ฌ ์ ์ถํ ๊ฒ ์ ๋ต ์ฝ๋ #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); SCB->VTOR = 0x08003000; SCB->SHCSR = 0; } extern volatile int Key_Value; void Main(void) { Sys_Init(); TIM2_Out_Init(); Key_ISR_Enable(1); TIM2_Out_PWM_Generation(1000, 5); int state_key0 = 0; int state_key1 = 0; for(;;) { if (Key_Value) { if (Key_Value == 1) { if (state_key0 == 0) { TIM2_Change_Duty(2); state_key0 = 1; } else { TIM2_Change_Duty(5); state_key0 = 0; } state_key1 = 0; } if (Key_Value == 2) { if (state_key1 == 0) { TIM2_Change_Duty(8); state_key1 = 1; } else { TIM2_Change_Duty(5); state_key1 = 0; } state_key0 = 0; } Key_Value = 0; } } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex24] ๋์งํธ ํผ์๋ ธ
๋ฌธ์ ์ค๋ช ๋ค์ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ๋ง์กฑํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ [์๊ตฌ ์ฌํญ] PC ํฐ๋ฏธ๋ ํ๋ก๊ทธ๋จ์์ ํค๋ณด๋๋ก 1,2,3,4,5,6,7,8 ์ ๋๋ฅด๋ฉด ๋ ๋ถํฐ ๋์ ๋๊น์ง ์์ 4๋ถ ์ํ๋ก ์ฐ์ฃผํ๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋ผ 1์ ๋ 2๋ ๋ 3์ ๋ฏธ โฆ 8์ ๋์ ๋๊ฐ 4๋ถ ์ํ ๊ธธ์ด(500msec) ์ฐ์ฃผ๋์ด์ผ ํ๋ค. ํ๋์ ์์ด ์ฐ์ฃผ๋๋ ๋์ ํค๋ณด๋ ์ ๋ ฅ์ด ์๋ ๊ฒฝ์ฐ ๋ฌด์ํ๋ฉด ๋๋ค. ์ธํฐ๋ฝํธ ์ฌ์ฉ ์ฌ๋ถ๋ ๋ฌด๊ดํ๋ฉฐ ์ฌ๋ฌ ํ์ผ์ ์ฝ๋๋ฅผ ์์ฑํ ๊ฒฝ์ฐ ์์ฑํ ์ฝ๋ ๋ชจ๋ ๋ณต์ฌํ์ฌ Bash ์ธ์ด๋ก ์ ์ถํด์ผ ํ๋ค. [์ ์ถ ์๋ น] ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฐ๋์ ๋์ ํ์ธ์ ๋ฐ์ํ ๊ฐ์ฌ ์ง์์ ์ํ์ฌ ์ฝ๋๋ฅผ ์ ๋ก๋ํด์ผ ํจ ์์๋ก ์ฝ๋ ์ ์ถ์ ํด๋น ๋ฌธํญ 0์ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ฃผ์ ๋ฐ๋ ๋ค๋ฅธ ํ์ผ์ ์๋ ์์ ๋ ์ ๊ณต ๋๋ ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ๋ณต์ฌํ์ฌ ์ ์ถํ ํ์ ์์ (์) LED_Display ํจ์ ๋ฑ ์์ฑ ๋๋ ๊ธฐ์กด ์ฝ๋ ๋ณ๊ฒฝํ ํ์ผ์ ๋ด์ฉ(์ด ๋ฌธ์ ์ ๊ด๋ จํ ์ฝ๋ ๋ถ๋ถ๋ง)์ ๋ชจ๋ ๋ณต์ฌํ์ฌ ์ ์ถํด์ผ ํ๋ค. ์ ์ถ์์๋ main.c ๋ด์ฉ์ ์ ์ผ ์์ ๋๊ณ ๊ทธ ์๋์ ๋ค๋ฅธ ํ์ผ์ ์ฝ๋๋ฅผ ์ ์ถํ๋ main.c ์ด์ธ ํ์ผ์ ๋ฐ๋์ ํ์ผ๋ช ์ ์ฝ๋ ์์ ์ ๊ณ ๋ณต์ฌํ์ฌ ์ ์ถํ ๊ฒ ์ ๋ต ์ฝ๋ # if 1 // main.c #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); } #define BASE (500) // 4๋ถ ์ํ = 500ms static void Play_Tone(unsigned short freq) { TIM3_Out_Freq_Generation(freq); // PWM ์ถ๋ ฅ ์์ TIM2_Delay(BASE); // 500ms ์ ์ง TIM3_Out_Stop(); } volatile char dummy; void Flush_UART_Buffer(void) { while (Macro_Check_Bit_Set(USART1->SR, 5)) { dummy = USART1->DR; } } void Main(void) { const unsigned short tone_value[] = {261, 293, 329, 349, 392, 440, 493, 523}; char input; Sys_Init(); TIM3_Out_Init(); Uart1_Printf("[8323] C9\n"); while (1) { input = Uart1_Get_Char(); // ์ ๋ ฅ ๋๊ธฐ if (input >= '1' && input <= '8') { int index = input - '1'; Play_Tone(tone_value[index]); Flush_UART_Buffer(); } } } # endif # if 1 // timer.c #define TIM3_FREQ 8000000 #define TIM3_TICK (1000000 / TIM3_FREQ) #define TIME3_PLS_OF_1ms (1000 / TIM3_TICK) #define TIM2_TICK 20 #define TIM2_FREQ (1000000 / TIM2_TICK) #define TIME2_PLS_OF_1ms (1000 / TIM2_TICK) void TIM3_Out_Init(void) { Macro_Set_Bit(RCC->APB1ENR, 1); // TIM3 enable Macro_Set_Bit(RCC->APB2ENR, 3); // GPIOB enable Macro_Write_Block(GPIOB->CRL, 0xf, 0xb, 0); // PB0: Alternate function output Macro_Write_Block(TIM3->CCMR2, 0x7, 0x6, 4); // PWM mode 1 TIM3->CCER = (0 << 9) | (1 << 8); // Output enable } void TIM3_Out_Freq_Generation(unsigned short freq) { TIM3->PSC = (unsigned int)((TIMXCLK / (double)TIM3_FREQ) + 0.5) - 1; TIM3->ARR = (unsigned int)((double)TIM3_FREQ / freq) - 1; TIM3->CCR3 = TIM3->ARR / 2; Macro_Set_Bit(TIM3->EGR, 0); TIM3->CR1 = (1 << 4) | (0 << 3) | (0 << 1) | (1 << 0); } void TIM3_Out_Stop(void) { Macro_Clear_Bit(TIM3->CR1, 0); Macro_Clear_Bit(TIM3->DIER, 0); } void TIM2_Delay(int time_ms) { Macro_Set_Bit(RCC->APB1ENR, 0); TIM2->PSC = (unsigned int)((TIMXCLK / (double)TIM2_FREQ) + 0.5) - 1; TIM2->ARR = TIME2_PLS_OF_1ms * time_ms; Macro_Set_Bit(TIM2->EGR, 0); Macro_Clear_Bit(TIM2->SR, 0); Macro_Set_Bit(TIM2->DIER, 0); Macro_Set_Bit(TIM2->CR1, 0); while (Macro_Check_Bit_Clear(TIM2->SR, 0)); Macro_Clear_Bit(TIM2->CR1, 0); Macro_Clear_Bit(TIM2->DIER, 0); } # endif ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex23] UART Echo-Back ํ๋ฉด์ LED ๊น๋ฐ์ด๊ธฐ
๋ฌธ์ ์ค๋ช ๋ค์ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ๋ง์กฑํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ [์๊ตฌ ์ฌํญ] UART1์ ํตํ์ฌ PC๋ก๋ถํฐ ์ ๋ ฅ ๋ฐ์ ๊ธ์๋ฅผ ๋ค์ PC๋ก ์ ์กํ๋ค. ํ์ด๋จธ๋ฅผ ์ด์ฉํ์ฌ LED0๋ฅผ 1์ด ON, 1์ด OFF๋ฅผ ๊ณ์ ๋ฐ๋ณตํ๋๋ก ํ๋ค. ํด๋ง ๋ฐ ์ธํฐ๋ฝํธ ์ฌ์ฉ์ฌ๋ถ๋ ๋ฌด๊ดํ๋ค. ๋จ, UART์ ์ ์ถ๋ ฅ ๋์์ LED ๋์๊ณผ ๋ฌด๊ดํ๊ฒ ์ง์ฐ์์ด ๋์๋์ด์ผ ํ๋ค. [์ ์ถ ์๋ น] ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฐ๋์ ๋์ ํ์ธ์ ๋ฐ์ํ ๊ฐ์ฌ ์ง์์ ์ํ์ฌ ์ฝ๋๋ฅผ ์ ๋ก๋ํด์ผ ํจ ์์๋ก ์ฝ๋ ์ ์ถ์ ํด๋น ๋ฌธํญ 0์ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ฃผ์ ๋ฐ๋ ๋ค๋ฅธ ํ์ผ์ ์๋ ์์ ๋ ์ ๊ณต ๋๋ ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ๋ณต์ฌํ์ฌ ์ ์ถํ ํ์ ์์ (์) LED_Display ํจ์ ๋ฑ ์์ฑ ๋๋ ๊ธฐ์กด ์ฝ๋ ๋ณ๊ฒฝํ ํ์ผ์ ๋ด์ฉ(์ด ๋ฌธ์ ์ ๊ด๋ จํ ์ฝ๋ ๋ถ๋ถ๋ง)์ ๋ชจ๋ ๋ณต์ฌํ์ฌ ์ ์ถํด์ผ ํ๋ค. ์ ์ถ์์๋ main.c ๋ด์ฉ์ ์ ์ผ ์์ ๋๊ณ ๊ทธ ์๋์ ๋ค๋ฅธ ํ์ผ์ ์ฝ๋๋ฅผ ์ ์ถํ๋ main.c ์ด์ธ ํ์ผ์ ๋ฐ๋์ ํ์ผ๋ช ์ ์ฝ๋ ์์ ์ ๊ณ ๋ณต์ฌํ์ฌ ์ ์ถํ ๊ฒ ์ ๋ต ์ฝ๋ // main.c #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); SCB->VTOR = 0x08003000; SCB->SHCSR = 0; } void Main(void) { Sys_Init(); Uart1_Printf("UART Echo Mode\n"); Macro_Set_Bit(USART1->CR1, 5); // UART1 ์ธํฐ๋ฝํธ ํ์ฉ NVIC_ClearPendingIRQ(USART1_IRQn); NVIC_EnableIRQ(USART1_IRQn); while (1) { LED_Display(1); TIM2_Delay(1000); LED_Display(0); TIM2_Delay(1000); } } // stm32f10x_it.c void USART1_IRQHandler(void) { if (USART1->SR & (1 << 5)) { char ch = USART1->DR; while (!(USART1->SR & (1 << 7))); USART1->DR = ch; } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex22] ๋นํธ ๊ณ์ฐ AI
๋ฌธ์ ์ค๋ช ๋ค์ ์ฃผ์ด์ง ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ func ํจ์๋ฅผ ์ค๊ณํ๋ผ. ๋จ, func ํจ์ ์ด์ธ ๋ค๋ฅธ ์ฝ๋๋ ์ ๋ ์์ ํ๋ฉด ์๋๋ค. [์๊ตฌ ์ฌํญ] ํจ์ func๋ ์ ์ x๋ฅผ ์ ๋ ฅ ๋ฐ๊ณ ์ ์๋ฅผ ๋ฆฌํดํ๋ค. x์ 0๋ฒ ๋นํธ๋ฅผ 0์ผ๋ก ๋ง๋ ๋ค. x์ 4,5,6,7๋ฒ ๋นํธ๋ฅผ 1๋ก ๋ง๋ ๋ค. x์ 23๋ฒ ๋นํธ๋ฅผ ๋ฐ์ ์ํจ๋ค. ๋ค๋ฅธ ๋นํธ๋ ์๋ ๊ฐ์ ์ ์งํด์ผํ๋ค. ๋ณ๊ฒฝ๋ x๊ฐ์ ๋ฆฌํดํ๋ค. ๋จ, ์ฝ๋๊ฐ ์ ์์ ์ด๋ผ๋ฉด ์๋์ ๊ฐ์ ๊ฐ์ด ์ธ์ ๋์ด์ผ ํ๋ค. #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); Uart_Init(115200); } unsigned int func(unsigned int x) { // ์ฝ๋ ๊ตฌํ return x; } void Main(void) { Sys_Init(); Uart_Printf("0x%.8X\n", func(0xFFFFFFFFu)); Uart_Printf("0x%.8X\n", func(0x00000000u)); Uart_Printf("0x%.8X\n", func(0x55555555u)); Uart_Printf("0x%.8X\n", func(0xCCCCCCCCu)); Uart_Printf("0x%.8X\n", func(0xAAAAAAAAu)); Uart_Printf("0x%.8X\n", func(0x33333333u)); } [์ถ๋ ฅ๊ฐ] 0xFF7FFFFE 0x008000F0 0x55D555F4 0xCC4CCCFC 0xAA2AAAFA 0x33B333F2 [์ ์ถ ์๋ น] ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฐ๋์ ๋์ ํ์ธ์ ๋ฐ์ํ ๊ฐ์ฌ ์ง์์ ์ํ์ฌ ์ฝ๋๋ฅผ ์ ๋ก๋ํด์ผํจ ์์๋ก ์ฝ๋ ์ ์ถ์ ํด๋น ๋ฌธํญ 0์ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ฃผ์ ๋ฐ๋ ์ ์ฝ๋๋ฅผ main.c์ ๋ณต์ฌํ์ฌ ์์ฑํ ๊ฒ ๋ค๋ฅธ ํ์ผ์ ์๋ ์์ ๋ ์ฌ์ฉํ ์ฝ๋ ๋ฑ์ ํธ์ถํ์ฌ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฐ๋์ ์ด๋ํ์ฌ ์ฌ์ฉํ ๊ฒ ์ฝ๋๋ main.c์ ์ ์ฒด๋ฅผ ๋ณต์ฌํ์ฌ ์ ์ถํ ๊ฒ ์ ๋ต ์ฝ๋ #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); Uart_Init(115200); } unsigned int func(unsigned int x) { Macro_Clear_Bit(x, 0); Macro_Write_Block(x, 0xf, 0xf, 4); Macro_Invert_Bit(x, 23); return x; } void Main(void) { Sys_Init(); Uart_Printf("0x%.8X\n", func(0xFFFFFFFFu)); Uart_Printf("0x%.8X\n", func(0x00000000u)); Uart_Printf("0x%.8X\n", func(0x55555555u)); Uart_Printf("0x%.8X\n", func(0xCCCCCCCCu)); Uart_Printf("0x%.8X\n", func(0xAAAAAAAAu)); Uart_Printf("0x%.8X\n", func(0x33333333u)); } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex21] ํ๊ฐ๋ฌธ์ 2
๋ฌธ์ ์ค๋ช ๋ค์ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ๋ง์กฑํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ [์๊ตฌ ์ฌํญ] ๋ณด๋์ KEY0๋ฅผ ๋๋ฅด๋ฉด B Port 0๋ฒ ํ(PB0)์ 1๋ก KEY0๋ฅผ ๋ผ๋ฉด PPB0๋ฅผ 0์ผ๋ก ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋ผ ๋ก์ง์๋ ๋ผ์ด์ ธ ์์์ ์ฑ๋์ KEY0 ์ ํธ์ PB0๋ฅผ ์ฐ๊ฒฐํ๋ค KEY0 ์ ํธ๋ฅผ Falling Edge Trigger๋ก ์ค์ ํ ํ KEY0์ PB0 ํํ์ ํ์ธํ ์ ์๋๋ก ํด์ผ ํ๋ค. (์ฃผ์) B ํฌํธ์ ํด๋ก์ด ํ์ฑํ(์ ์ ์ธ๊ฐ)๋์ด์ผ ํ๋ฏ๋ก ๋ค์ ์ฝ๋๋ฅผ ๊ผญ ์์๋ถ๋ถ์ ์ถ๊ฐํ๋ค. RCC_APB2ENR |= (1<<3); [์ ์ถ ์๋ น] ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฐ๋์ ๋์ ํ์ธ์ ๋ฐ์ํ ๊ฐ์ฌ ์ง์์ ์ํ์ฌ ์ฝ๋๋ฅผ ์ ๋ก๋ํด์ผํจ ์์๋ก ์ฝ๋ ์ ์ถ์ ํด๋น ๋ฌธํญ 0์ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ฃผ์ ๋ฐ๋ ๋ชจ๋ ์ฝ๋๋ main.c ํ๋์ ํ์ผ์๋ง ์์ฑํ ๊ฒ ๋ค๋ฅธ ํ์ผ์ ์๋ ์์ ๋ ์ ๊ณต ๋๋ ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ๋ณต์ฌํ์ฌ ์ ์ถํ ํ์ ์์ (์) LED_Display ํจ์ ๋ฑ ์ฝ๋๋ ์์ฑํ main.c์ ์ ์ฒด๋ฅผ ๋ณต์ฌํ์ฌ ์ ์ถํ ๊ฒ (๋ค๋ง ์์ฑ ์ฝ๋์ ๋ฌด๊ดํ ๊ธฐ์กด ์ฝ๋๋ ์ ๊ฑฐํ ๊ฒ) ์ ๋ต ์ฝ๋ #include "device_driver.h" void Key_Init(void) { Macro_Write_Block(GPIOB->CRL, 0xf, 0x8, 24); Macro_Set_Bit(GPIOB->ODR, 6); } void LED_Init(void) { Macro_Write_Block(GPIOB->CRL, 0xf, 0x2, 0); Macro_Clear_Bit(GPIOB->ODR, 0); } #define N 10000 int Key_Get_Pressed(void) { int cnt = 0; int before = Macro_Extract_Area(GPIOB->IDR, 0x1, 6); while (1) { int after = Macro_Extract_Area(GPIOB->IDR, 0x1, 6); if (after == before) { cnt++; if (cnt >= N) return after == 0 ? 1 : 0; } else { cnt = 0; before = after; } } } static void Sys_Init(void) { Key_Init(); LED_Init(); Uart_Init(115200); } void Main(void) { Macro_Set_Bit(RCC->APB2ENR, 3); Sys_Init(); int interlock = 0; for (;;) { if ((interlock == 0) && (Key_Get_Pressed() == 1)) { Macro_Set_Bit(GPIOB->ODR, 0); interlock = 1; } else if ((interlock == 1) && (Key_Get_Pressed() == 0)) { Macro_Clear_Bit(GPIOB->ODR, 0); interlock = 0; } } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex20] ํ๊ฐ๋ฌธ์ 1
๋ฌธ์ ์ค๋ช ๋ค์ ์๊ตฌํ๋ ๊ธฐ๋ฅ์ ๋ง์กฑํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ผ [์๊ตฌ ์ฌํญ] LCD ๋ณด๋์ ๋ฐฉํฅํค(JOG)์ DOWN Key๋ PB5๋ฒ์ ์ฐ๊ฒฐ๋์ด ์๋ค. ๋จ, ์ด KEY๋ Pullup ์ ํญ์ ์ฐ๊ฒฐํ์ง ์์ ์ํ๋ผ ๋๋ฅด๋ฉด GND์ ์ฐ๊ฒฐ๋์ด 0์ด์ง๋ง ๋ผ๋ฉด Floating ์ํ๊ฐ ๋๋ค. ์ด JOG์ DWON Key๋ฅผ ๋๋ฅด๋ฉด LED0์ด ON๋๊ณ ๋ผ๋ฉด OFF๊ฐ ๋๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋ผ (์ฃผ์) ์ธ๋ถ์ Pullup ์ ํญ์ด ์์ผ๋ฏ๋ก ๋ง์ด์ปด ๋ด๋ถ์ Pullup ์ ํญ์ ์ฌ์ฉํ๋๋ก ์ค์ ํ์ฌ์ผ ํ๋ค. ๋ด๋ถ Pullup ์ฌ์ฉ์ ๊ต์ฌ 221 ํ์ด์ง ํ๋ฅผ ์ฐธ๊ณ ํ๋ผ (Input Pullup, Pulldown ๋ชจ๋ 1000์ผ๋ก ์ค์ ํ๋ ODR ๋ ์ง์คํฐ์ ํด๋น ๋นํธ๋ฅผ 0์ผ๋ก ํ๋ฉด Pull-down, 1๋กํ๋ฉด Pull-up ์ฌ์ฉ์ด enable ๋๋ค.) (์ฃผ์) B ํฌํธ์ ํด๋ก์ด ํ์ฑํ(์ ์ ์ธ๊ฐ)๋์ด์ผ ํ๋ฏ๋ก ๋ค์ ์ฝ๋๋ฅผ ๊ผญ ์์๋ถ๋ถ์ ์ถ๊ฐํ๋ค. RCC_APB2ENR |= (1<<3); [์ ์ถ ์๋ น] ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฐ๋์ ๋์ ํ์ธ์ ๋ฐ์ํ ๊ฐ์ฌ ์ง์์ ์ํ์ฌ ์ฝ๋๋ฅผ ์ ๋ก๋ํด์ผ ํจ ์์๋ก ์ฝ๋ ์ ์ถ์ ํด๋น ๋ฌธํญ 0์ ์ฒ๋ฆฌ๋๋ฏ๋ก ์ฃผ์ ๋ฐ๋ ๋ชจ๋ ์ฝ๋๋ main.c ํ๋์ ํ์ผ์๋ง ์์ฑํ ๊ฒ ๋ค๋ฅธ ํ์ผ์ ์๋ ์์ ๋ ์ ๊ณต ๋๋ ์์ฑํ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ๋ณต์ฌํ์ฌ ์ ์ถํ ํ์ ์์ (์) LED_Display ํจ์ ๋ฑ ์ฝ๋๋ ์์ฑํ main.c์ ์ ์ฒด๋ฅผ ๋ณต์ฌํ์ฌ ์ ์ถํ ๊ฒ (๋ค๋ง ์์ฑ ์ฝ๋์ ๋ฌด๊ดํ ๊ธฐ์กด ์ฝ๋๋ ์ ๊ฑฐํ ๊ฒ) ์ ๋ต ์ฝ๋ #include "device_driver.h" void Main(void) { Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Write_Block(GPIOB->CRL, 0xf, 0x8, 20); Macro_Set_Bit(GPIOB->ODR, 5); Macro_Write_Block(GPIOB->CRH, 0xf, 0x6, 0); Macro_Set_Bit(GPIOB->ODR, 8); while (1) { if (Macro_Check_Bit_Clear(GPIOB->IDR, 5)) Macro_Clear_Bit(GPIOB->ODR, 8); else Macro_Set_Bit(GPIOB->ODR, 8); } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex19] TIMER_EVENT_LAB
๋ฌธ์ ์ค๋ช // timer.c void TIM4_Repeat_Interrupt_Enable(int en, int time) { if(en) { Macro_Set_Bit(RCC->APB1ENR, 2); TIM4->CR1 = (1<<4)|(0<<3); TIM4->PSC = (unsigned int)(TIMXCLK/(double)TIM4_FREQ + 0.5)-1; TIM4->ARR = TIME4_PLS_OF_1ms * time; Macro_Set_Bit(TIM4->EGR,0); // TIM4->SR ๋ ์ง์คํฐ์์ Timer Pending Clear // NVIC์์ 30๋ฒ ์ธํฐ๋ฝํธ Pending Clear => NVIC์ฉ Macro ์ฌ์ฉ // TIM4->DIER ๋ ์ง์คํฐ์์ Timer ์ธํฐ๋ฝํธ ํ์ฉ // NVIC์์ 30๋ฒ ์ธํฐ๋ฝํธ๋ฅผ ํ์ฉ์ผ๋ก ์ค์ => NVIC์ฉ Macro ์ฌ์ฉ // TIM4 Start } else { NVIC_DisableIRQ(30); Macro_Clear_Bit(TIM4->CR1, 0); Macro_Clear_Bit(TIM4->DIER, 0); } } ์ ๋ต ์ฝ๋ void TIM4_Repeat_Interrupt_Enable(int en, int time) { if(en) { Macro_Set_Bit(RCC->APB1ENR, 2); TIM4->CR1 = (1<<4)|(0<<3); TIM4->PSC = (unsigned int)(TIMXCLK/(double)TIM4_FREQ + 0.5)-1; TIM4->ARR = TIME4_PLS_OF_1ms * time; Macro_Set_Bit(TIM4->EGR,0); Macro_Clear_Bit(TIM4->SR, 0); NVIC_ClearPendingIRQ(30); Macro_Set_Bit(TIM4->DIER, 0); NVIC_EnableIRQ(30); Macro_Set_Bit(TIM4->CR1, 0); } else { NVIC_DisableIRQ(30); Macro_Clear_Bit(TIM4->CR1, 0); Macro_Clear_Bit(TIM4->DIER, 0); } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex18] EXTI_IRQ_LAB
๋ฌธ์ ์ค๋ช // main.c #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); SCB->VTOR = 0x08003000; SCB->SHCSR = 0; } void Main(void) { Sys_Init(); Uart1_Printf("EXTI Test\n"); // AFIO, Port-B Clock Enable // PB[7:6]์ ์ ๋ ฅ์ผ๋ก ์ ์ธ // PB[7:6]์ EXTI ์์ค๋ก ์ค์ ํ๊ณ Falling edge ์ ํ, EXTI[7:6] ์ธํฐ๋ฝํธ ํ์ฉ // EXTI[7:6] Pending Clear ๋ฐ NVIC์ ์ธํฐ๋ฝํธ Pending clear // EXTI9_5 ์ธํฐ๋ฝํธ ํ์ฉ for(;;) { LED_Display(1); TIM2_Delay(500); LED_Display(2); TIM2_Delay(500); } } // stm32f10x_it.c void EXTI9_5_IRQHandler(void) { // EXTI Pending์ ํ์ธํ์ฌ ๋๋ฆฐํค์ ๋ฒํธ๋ฅผ UART๋ก ์ถ๋ ฅํ๋ค // EXTI[7:6] pending ๋ฐ IRQ(EXTI9_5)์ pending clear } ์ ๋ต ์ฝ๋ /* stm32f10x_it.c */ void EXTI9_5_IRQHandler(void) { int x = Macro_Extract_Area(EXTI->PR, 0x3, 6); Uart1_Printf("%d\n", x); EXTI->PR = 0x3 << 6; NVIC_ClearPendingIRQ(23); } /* main.c */ void Main(void) { Sys_Init(); Uart1_Printf("EXTI Test\n"); Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Set_Bit(RCC->APB2ENR, 0); Macro_Write_Block(GPIOB->CRL, 0xFF, 0x44, 24); Macro_Write_Block(AFIO->EXTICR[1], 0xFF, 0x11, 8); Macro_Set_Area(EXTI->FTSR, 0x3, 6); EXTI->PR = 0x3 << 6; Macro_Set_Area(EXTI->IMR, 0x3, 6); NVIC_ClearPendingIRQ(23); NVIC_EnableIRQ(23); for(;;) { LED_Display(1); TIM2_Delay(500); LED_Display(2); TIM2_Delay(500); } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex17] TIMER_OUTPUT_LAB
๋ฌธ์ ์ค๋ช // timer.c #define TIM3_FREQ (8000000) // Hz #define TIM3_TICK (1000000/TIM3_FREQ) // usec #define TIME3_PLS_OF_1ms (1000/TIM3_TICK) void TIM3_Out_Init(void) { Macro_Set_Bit(RCC->APB1ENR, 1); Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Write_Block(GPIOB->CRL,0xf,0xb,0); Macro_Write_Block(TIM3->CCMR2,0x7,0x6,4); TIM3->CCER = (0<<9)|(1<<8); } void TIM3_Out_Freq_Generation(unsigned short freq) { // Timer ์ฃผํ์๊ฐ TIM3_FREQ๊ฐ ๋๋๋ก PSC ์ค์ // ์์ฒญํ ์ฃผํ์๊ฐ ๋๋๋ก ARR ์ค์ // Duty Rate 50%๊ฐ ๋๋๋ก CCR3 ์ค์ // Manual Update(UG ๋ฐ์) // Down Counter, Repeat Mode, Timer Start } void TIM3_Out_Stop(void) { Macro_Clear_Bit(TIM3->CR1, 0); Macro_Clear_Bit(TIM3->DIER, 0); } ์ ๋ต ์ฝ๋ #define TIM3_FREQ (8000000) // Hz #define TIM3_TICK (1000000/TIM3_FREQ) // usec #define TIME3_PLS_OF_1ms (1000/TIM3_TICK) void TIM3_Out_Init(void) { Macro_Set_Bit(RCC->APB1ENR, 1); Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Write_Block(GPIOB->CRL,0xf,0xb,0); Macro_Write_Block(TIM3->CCMR2,0x7,0x6,4); TIM3->CCER = (0<<9)|(1<<8); } void TIM3_Out_Freq_Generation(unsigned short freq) { TIM3->PSC = (unsigned int)(TIMXCLK/(double)TIM3_FREQ + 0.5)-1; TIM3->ARR = (double)TIM3_FREQ/freq-1; TIM3->CCR3 = TIM3->ARR/2; Macro_Set_Bit(TIM3->EGR,0); TIM3->CR1 = (1<<4)|(0<<3)|(0<<1)|(1<<0); } void TIM3_Out_Stop(void) { Macro_Clear_Bit(TIM3->CR1, 0); Macro_Clear_Bit(TIM3->DIER, 0); } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex16] TIMER_DRIVER_LAB #3 TIM4 repeat timeout test
๋ฌธ์ ์ค๋ช // timer.c void TIM4_Repeat(int time) { Macro_Set_Bit(RCC->APB1ENR, 2); // TIM4 CR1: ARPE=0, down counter, repeat mode // PSC(50KHz), ARR(reload์ ๊ฐ) ์ค์ // UG ์ด๋ฒคํธ ๋ฐ์ // Update Interrupt Pending Clear // Update Interrupt Enable // TIM4 start } int TIM4_Check_Timeout(void) { // ํ์ด๋จธ๊ฐ timeout ์ด๋ฉด 1 ๋ฆฌํด, ์๋๋ฉด 0 ๋ฆฌํด } void TIM4_Stop(void) { Macro_Clear_Bit(TIM4->CR1, 0); Macro_Clear_Bit(TIM4->DIER, 0); Macro_Clear_Bit(RCC->APB1ENR, 2); } ์ ๋ต ์ฝ๋ #include "device_driver.h" #define TIM2_TICK (20) // usec #define TIM2_FREQ (1000000/TIM2_TICK) // Hz #define TIME2_PLS_OF_1ms (1000/TIM2_TICK) #define TIM2_MAX (0xffffu) #define TIM4_TICK (20) // usec #define TIM4_FREQ (1000000/TIM4_TICK) // Hz #define TIME4_PLS_OF_1ms (1000/TIM4_TICK) #define TIM4_MAX (0xffffu) void TIM2_Stopwatch_Start(void) { Macro_Set_Bit(RCC->APB1ENR, 0); TIM2->CR1 = (1<<4)|(1<<3); TIM2->PSC = (unsigned int)(TIMXCLK/50000.0 + 0.5)-1; TIM2->ARR = TIM2_MAX; Macro_Set_Bit(TIM2->EGR,0); Macro_Set_Bit(TIM2->CR1, 0); } unsigned int TIM2_Stopwatch_Stop(void) { unsigned int time; Macro_Clear_Bit(TIM2->CR1, 0); time = (TIM2_MAX - TIM2->CNT) * TIM2_TICK; return time; } /* Delay Time Max = 65536 * 20use = 1.3sec */ #if 0 void TIM2_Delay(int time) { Macro_Set_Bit(RCC->APB1ENR, 0); TIM2->CR1 = (1<<4)|(1<<3); TIM2->PSC = (unsigned int)(TIMXCLK/(double)TIM2_FREQ + 0.5)-1; TIM2->ARR = TIME2_PLS_OF_1ms * time; Macro_Set_Bit(TIM2->EGR,0); Macro_Clear_Bit(TIM2->SR, 0); Macro_Set_Bit(TIM2->DIER, 0); Macro_Set_Bit(TIM2->CR1, 0); while(Macro_Check_Bit_Clear(TIM2->SR, 0)); Macro_Clear_Bit(TIM2->CR1, 0); Macro_Clear_Bit(TIM2->DIER, 0); } #else /* Delay Time Extended */ void TIM2_Delay(int time) { int i; unsigned int t = TIME2_PLS_OF_1ms * time; Macro_Set_Bit(RCC->APB1ENR, 0); TIM2->PSC = (unsigned int)(TIMXCLK/(double)TIM2_FREQ + 0.5)-1; TIM2->CR1 = (1<<4)|(1<<3); TIM2->ARR = 0xffff; Macro_Set_Bit(TIM2->EGR,0); Macro_Set_Bit(TIM2->DIER, 0); for(i=0; i<(t/0xffffu); i++) { Macro_Set_Bit(TIM2->EGR,0); Macro_Clear_Bit(TIM2->SR, 0); Macro_Set_Bit(TIM2->CR1, 0); while(Macro_Check_Bit_Clear(TIM2->SR, 0)); } TIM2->ARR = t % 0xffffu; Macro_Set_Bit(TIM2->EGR,0); Macro_Clear_Bit(TIM2->SR, 0); Macro_Set_Bit(TIM2->CR1, 0); while (Macro_Check_Bit_Clear(TIM2->SR, 0)); Macro_Clear_Bit(TIM2->CR1, 0); Macro_Clear_Bit(TIM2->DIER, 0); } #endif void TIM4_Repeat(int time) { Macro_Set_Bit(RCC->APB1ENR, 2); TIM4->CR1 = (1<<4)|(0<<3); TIM4->PSC = (unsigned int)(TIMXCLK/(double)TIM4_FREQ + 0.5)-1; TIM4->ARR = TIME4_PLS_OF_1ms * time - 1; Macro_Set_Bit(TIM4->EGR,0); Macro_Clear_Bit(TIM4->SR, 0); Macro_Set_Bit(TIM4->DIER, 0); Macro_Set_Bit(TIM4->CR1, 0); } int TIM4_Check_Timeout(void) { if(Macro_Check_Bit_Set(TIM4->SR, 0)) { Macro_Clear_Bit(TIM4->SR, 0); return 1; } else { return 0; } } void TIM4_Stop(void) { Macro_Clear_Bit(TIM4->CR1, 0); Macro_Clear_Bit(TIM4->DIER, 0); } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex15] TIMER_DRIVER_LAB #2 TIM2 delay test
๋ฌธ์ ์ค๋ช // timer.c void TIM2_Delay(int time) { Macro_Set_Bit(RCC->APB1ENR, 0); // TIM2 CR1 ์ค์ : down count, one pulse // PSC ์ด๊ธฐ๊ฐ ์ค์ => 20usec tick์ด ๋๋๋ก ์ค๊ณ (50KHz) // ARR ์ด๊ธฐ๊ฐ ์ค์ => ์์ฒญํ time msec์ ํด๋นํ๋ ์ด๊ธฐ๊ฐ ์ค์ // UG ์ด๋ฒคํธ ๋ฐ์ // Update Interrupt Pending Clear // Update Interrupt Enable // TIM2 start // Wait timeout // Stop and Power off Macro_Clear_Bit(TIM2->CR1, 0); Macro_Clear_Bit(TIM2->DIER, 0); } ์ ๋ต ์ฝ๋ #include "device_driver.h" #define TIM2_TICK (20) // usec #define TIM2_FREQ (1000000/TIM2_TICK) // Hz #define TIME2_PLS_OF_1ms (1000/TIM2_TICK) #define TIM2_MAX (0xffffu) #define TIM4_TICK (20) // usec #define TIM4_FREQ (1000000/TIM4_TICK) // Hz #define TIME4_PLS_OF_1ms (1000/TIM4_TICK) #define TIM4_MAX (0xffffu) void TIM2_Stopwatch_Start(void) { Macro_Set_Bit(RCC->APB1ENR, 0); TIM2->CR1 = (1<<4)|(1<<3); TIM2->PSC = (unsigned int)(TIMXCLK/50000.0 + 0.5)-1; TIM2->ARR = TIM2_MAX; Macro_Set_Bit(TIM2->EGR,0); Macro_Set_Bit(TIM2->CR1, 0); } unsigned int TIM2_Stopwatch_Stop(void) { unsigned int time; Macro_Clear_Bit(TIM2->CR1, 0); time = (TIM2_MAX - TIM2->CNT) * TIM2_TICK; return time; } #if 1 /* Delay Time Max = 65536 * 20use = 1.3sec */ void TIM2_Delay(int time) { Macro_Set_Bit(RCC->APB1ENR, 0); TIM2->CR1 = (1<<4)|(1<<3); TIM2->PSC = (unsigned int)(TIMXCLK/(double)TIM2_FREQ + 0.5)-1; TIM2->ARR = TIME2_PLS_OF_1ms * time; Macro_Set_Bit(TIM2->EGR,0); Macro_Clear_Bit(TIM2->SR, 0); Macro_Set_Bit(TIM2->DIER, 0); Macro_Set_Bit(TIM2->CR1, 0); while(Macro_Check_Bit_Clear(TIM2->SR, 0)); Macro_Clear_Bit(TIM2->CR1, 0); Macro_Clear_Bit(TIM2->DIER, 0); } #endif #if 0 /* Delay Time Extended */ void TIM2_Delay(int time) { int i; unsigned int t = TIME2_PLS_OF_1ms * time; Macro_Set_Bit(RCC->APB1ENR, 0); TIM2->PSC = (unsigned int)(TIMXCLK/(double)TIM2_FREQ + 0.5)-1; TIM2->CR1 = (1<<4)|(1<<3); TIM2->ARR = 0xffff; Macro_Set_Bit(TIM2->EGR,0); Macro_Set_Bit(TIM2->DIER, 0); for(i=0; i<(t/0xffffu); i++) { Macro_Set_Bit(TIM2->EGR,0); Macro_Clear_Bit(TIM2->SR, 0); Macro_Set_Bit(TIM2->CR1, 0); while(Macro_Check_Bit_Clear(TIM2->SR, 0)); } TIM2->ARR = t % 0xffffu; Macro_Set_Bit(TIM2->EGR,0); Macro_Clear_Bit(TIM2->SR, 0); Macro_Set_Bit(TIM2->CR1, 0); while (Macro_Check_Bit_Clear(TIM2->SR, 0)); Macro_Clear_Bit(TIM2->CR1, 0); Macro_Clear_Bit(TIM2->DIER, 0); } #endif ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex14] TIMER_DRIVER_LAB #1 TIM2 stopwatch test
๋ฌธ์ ์ค๋ช // timer.c void TIM2_Stopwatch_Start(void) { Macro_Set_Bit(RCC->APB1ENR, 0); // TIM2 CR1 ์ค์ : down count, one pulse // PSC ์ด๊ธฐ๊ฐ ์ค์ => 20usec tick์ด ๋๋๋ก ์ค๊ณ (50KHz) // ARR ์ด๊ธฐ๊ฐ ์ค์ => ์ต๋๊ฐ 0xFFFF ์ค์ // UG ์ด๋ฒคํธ ๋ฐ์ // TIM2 start } unsigned int TIM2_Stopwatch_Stop(void) { unsigned int time; // TIM2 stop // CNT ์ด๊ธฐ ์ค์ ๊ฐ (0xffff)์ ํ์ฌ CNT์ ํ์ค์ ์ฐจ์ด๋ฅผ ๊ตฌํ๊ณ // ๊ทธ ํ์ค์ ํ๋๊ฐ 20usec์ด๋ฏ๋ก 20์ ๊ณฑํ๊ฐ์ time์ ์ ์ฅ // ๊ณ์ฐ๋ time ๊ฐ์ ๋ฆฌํด(๋จ์๋ usec) } ์ ๋ต ์ฝ๋ #define TIM2_TICK 20 // usec #define TIM2_FREQ (1000000./TIM2_TICK) // Hz #define TIM2_CNT_MAX 0xFFFF void TIM2_Stopwatch_Start(void) { Macro_Set_Bit(RCC->APB1ENR, 0); // TIM2 CR1 ์ค์ : down count, one pulse TIM2->CR1 = (0x3<<3); // PSC ์ด๊ธฐ๊ฐ ์ค์ => 20usec tick์ด ๋๋๋ก ์ค๊ณ (50KHz) TIM2->PSC = (int)((TIMXCLK / TIM2_FREQ) + 0.5) - 1; // ARR ์ด๊ธฐ๊ฐ ์ค์ => ์ต๋๊ฐ 0xFFFF ์ค์ TIM2->ARR = TIM2_CNT_MAX; // UG ์ด๋ฒคํธ ๋ฐ์ Macro_Set_Bit(TIM2->EGR, 0); // TIM2 start Macro_Set_Bit(TIM2->CR1, 0); } unsigned int TIM2_Stopwatch_Stop(void) { unsigned int time; // TIM2 stop Macro_Clear_Bit(TIM2->CR1, 0); // CNT ์ด๊ธฐ ์ค์ ๊ฐ (0xffff)์ ํ์ฌ CNT์ ํ์ค์ ์ฐจ์ด๋ฅผ ๊ตฌํ๊ณ // ๊ทธ ํ์ค์ ํ๋๊ฐ 20usec์ด๋ฏ๋ก 20์ ๊ณฑํ๊ฐ์ time์ ์ ์ฅ time = (TIM2->ARR - TIM2->CNT) * TIM2_TICK; // ๊ณ์ฐ๋ time ๊ฐ์ ๋ฆฌํด(๋จ์๋ usec) return time; } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex13] SYSTICK_TIMER_LAB
๋ฌธ์ ์ค๋ช // systick.c #include "device_driver.h" void SysTick_Run(unsigned int msec) { // Timer ์ค์ : ์ธํฐ๋ฝํธ ๋ฐ์ ์ํจ, clock source๋ HCLK/8, Timer ์ ์ง // ์ฃผ์ด์ง msec ๊ฐ ๋งํผ์ msec๋ฅผ countํ๋ ์ด๊ธฐ๊ฐ ์ค์ (LOAD) // VAL ๋ ์ง์คํฐ ๊ฐ ์ด๊ธฐํ(0) ๋ฐ COUNTFLAG Clear // Timer Start (์์์ด ๋๋ฉด ์๋์ผ๋ก LOAD์ ๊ฐ์ VAL๋ก ๊ฐ์ ธ๊ฐ๋ค) } int SysTick_Check_Timeout(void) { // Timer์ Timeout์ด ๋ฐ์ํ๋ฉด ์ฐธ(1)๋ฆฌํด, ์๋๋ฉด ๊ฑฐ์ง(0) ๋ฆฌํด } unsigned int SysTick_Get_Time(void) { // Timer์ ํ์ฌ count ๊ฐ ๋ฆฌํด } unsigned int SysTick_Get_Load_Time(void) { // Timer์ ์ค์ ๋ ์ด๊ธฐ๊ฐ์ ๋ฆฌํด } void SysTick_Stop(void) { // Timer Stop } ์ ๋ต ์ฝ๋ #include "device_driver.h" void SysTick_Run(unsigned int msec) { SysTick->CTRL = (0<<2)+(0<<1)+(0<<0); SysTick->LOAD = (unsigned int)((HCLK/(8.*1000.))*msec+0.5); SysTick->VAL = 0; Macro_Set_Bit(SysTick->CTRL, 0); } int SysTick_Check_Timeout(void) { return ((SysTick->CTRL >> 16) & 0x1); } unsigned int SysTick_Get_Time(void) { return SysTick->VAL; } unsigned int SysTick_Get_Load_Time(void) { return SysTick->LOAD; } void SysTick_Stop(void) { SysTick->CTRL = 0<<0; } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex12] UART_DRIVER_LAB
๋ฌธ์ ์ค๋ช // uart.c #include "device_driver.h" #include <stdio.h> #include <stdarg.h> #include <string.h> #include <stdlib.h> #include <ctype.h> void Uart1_Init(int baud) { double div; unsigned int mant; unsigned int frac; Macro_Set_Bit(RCC->APB2ENR, 2); Macro_Set_Bit(RCC->APB2ENR, 14); Macro_Write_Block(GPIOA->CRH, 0xff, 0x8a, 4); Macro_Set_Bit(GPIOA->ODR, 10); div = PCLK2/(16. * baud); mant = (int)div; frac = (int)((div - mant) * 16. + 0.5); mant += frac >> 4; frac &= 0xf; USART1->BRR = (mant<<4)+(frac<<0); USART1->CR1 = (1<<13)|(0<<12)|(0<<10)|(1<<3)|(1<<2); USART1->CR2 = 0<<12; USART1->CR3 = 0; } void Uart1_Send_Byte(char data) { if(data=='\n') { while(Macro_Check_Bit_Clear(USART1->SR, 7)); USART1->DR = 0x0d; } while(Macro_Check_Bit_Clear(USART1->SR, 7)); USART1->DR = data; } void Uart1_Send_String(char *pt) { while(*pt!=0) { Uart1_Send_Byte(*pt++); } } void Uart1_Printf(char *fmt,...) { va_list ap; char string[256]; va_start(ap,fmt); vsprintf(string,fmt,ap); Uart1_Send_String(string); va_end(ap); } char Uart1_Get_Pressed(void) { // ๊ธ์๊ฐ ์ ๋ ฅ์ด ๋์์ผ๋ฉด ์ ๋ ฅ๋ ๊ธ์๋ฅผ ๋ฆฌํด // ๊ธ์ ์ ๋ ฅ์ด ์์ผ๋ฉด 0 ๋ฆฌํด } char Uart1_Get_Char(void) { // ๊ธ์ ์ ๋ ฅ์ด ์์ผ๋ฉด ๋ฌดํ ๋๊ธฐ, ๊ธ์๊ฐ ๋ค์ด์ค๋ฉด ๋ฐ์ ๊ธ์ ๋ฆฌํด } ์ ๋ต ์ฝ๋ #include "device_driver.h" #include <stdio.h> #include <stdarg.h> #include <string.h> #include <stdlib.h> #include <ctype.h> void Uart1_Init(int baud) { double div; unsigned int mant; unsigned int frac; Macro_Set_Bit(RCC->APB2ENR, 2); Macro_Set_Bit(RCC->APB2ENR, 14); Macro_Write_Block(GPIOA->CRH, 0xff, 0x8a, 4); Macro_Set_Bit(GPIOA->ODR, 10); div = PCLK2/(16. * baud); mant = (int)div; frac = (int)((div - mant) * 16. + 0.5); mant += frac >> 4; frac &= 0xf; USART1->BRR = (mant<<4)+(frac<<0); USART1->CR1 = (1<<13)|(0<<12)|(0<<10)|(1<<3)|(1<<2); USART1->CR2 = 0<<12; USART1->CR3 = 0; } void Uart1_Send_Byte(char data) { if(data=='\n') { while(Macro_Check_Bit_Clear(USART1->SR, 7)); USART1->DR = 0x0d; } while(Macro_Check_Bit_Clear(USART1->SR, 7)); USART1->DR = data; } void Uart1_Send_String(char *pt) { while(*pt!=0) { Uart1_Send_Byte(*pt++); } } void Uart1_Printf(char *fmt,...) { va_list ap; char string[256]; va_start(ap,fmt); vsprintf(string,fmt,ap); Uart1_Send_String(string); va_end(ap); } char Uart1_Get_Pressed(void) { if(Macro_Check_Bit_Set(USART1->SR, 5)) { return (char)USART1->DR; } else { return (char)0; } } char Uart1_Get_Char(void) { char rx; while((rx = Uart1_Get_Pressed()) == 0); return rx; } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex11] UART_ECHOBACK_LAB
๋ฌธ์ ์ค๋ช // main.c #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); } void Main(void) { Sys_Init(); Uart_Printf("UART Echo-Back Test\n"); for(;;) { // ๋ฐ์ ๊ธ์๋ฅผ ๋ค์ UART๋ก ์ถ๋ ฅํ๋ค } } ์ ๋ต ์ฝ๋ #include "device_driver.h" static void Sys_Init(void) { Clock_Init(); LED_Init(); Uart_Init(115200); Key_Poll_Init(); } void Main(void) { Sys_Init(); Uart_Printf("UART Echo-Back Test\n"); for(;;) { unsigned char x; while(!Macro_Check_Bit_Set(USART1->SR, 5)); x = USART1->DR; while(!Macro_Check_Bit_Set(USART1->SR, 7)); USART1->DR = x; } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex10] KEY_CHATTERING_LAB
๋ฌธ์ ์ค๋ช // key.c #include "device_driver.h" void Key_Poll_Init(void) { Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24); } /* 0: ๋๋ฒ๊น ์ฉ ์ค์ */ /* 1: ์ ์ ๋์์ฉ ์ค์ */ #if 0 #define N 20000 #else #define N 3000000 #endif int Key_Get_Pressed(void) { /* N ๋งํผ ๊ฐ์ ๊ฐ์ด ์ฝํ์ผ Key ๊ฐ์ผ๋ก ํ์ */ } void Key_Wait_Key_Released(void) { while(Key_Get_Pressed()); } int Key_Wait_Key_Pressed(void) { int k; while((k = Key_Get_Pressed()) == 0); return k; } ์ ๋ต ์ฝ๋ #include "device_driver.h" void Key_Poll_Init(void) { Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24); } /* 0: ๋๋ฒ๊น ์ฉ ์ค์ */ /* 1: ์ ์ ๋์์ฉ ์ค์ */ #if 0 #define N 20000 #else #define N 3000000 #endif static int Key_Check_Input(void) { return Macro_Extract_Area(~GPIOB->IDR, 0x3, 6); } int Key_Get_Pressed(void) { unsigned int i, k; for(;;) { k = Key_Check_Input(); for(i=0; i<N; i++) { if(k != Key_Check_Input()) { break; } } if(i == N) return k;; } } void Key_Wait_Key_Released(void) { while(Key_Get_Pressed()); } int Key_Wait_Key_Pressed(void) { int k; while((k = Key_Get_Pressed()) == 0); return k; } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex09] KEY_DRIVER_LAB
๋ฌธ์ ์ค๋ช // key.c #include "device_driver.h" void Key_Poll_Init(void) { Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24); } int Key_Get_Pressed(void) { } void Key_Wait_Key_Released(void) { } int Key_Wait_Key_Pressed(void) { } ์ ๋ต ์ฝ๋ #define KEY0_PUSH() (Macro_Check_Bit_Clear(GPIOB->IDR, 6)) #define KEY0_REL() (Macro_Check_Bit_Set(GPIOB->IDR, 6)) #define KEY1_PUSH() (Macro_Check_Bit_Clear(GPIOB->IDR, 7)) #define KEY1_REL() (Macro_Check_Bit_Set(GPIOB->IDR, 7)) #define KEY_VALUE() (Macro_Extract_Area(~GPIOB->IDR, 0x3, 6)) int Key_Wait_Key_Pressed(void) { #if 0 for(;;) { int key = KEY_VALUE(); if( key != 0 ) return; } #endif while( !((key = KEY_VALUE()) != 0)) ); return key; } void Key_Wait_Key_Released(void) { #if 0 for(;;) { if( KEY_VALUE() == 0 ) return; } #endif while( !(KEY_VALUE() == 0) ); } int Key_Get_Pressed(void) { #if 0 if( KEY0_REL() && KEY1_REL() ) return 0; if( KEY0_PUSH() && KEY1_REL() ) return 1; if( KEY0_REL() && KEY1_PUSH() ) return 2; if( KEY0_PUSH() && KEY1_PUSH() ) return 3; #endif return KEY_VALUE(); } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex08] KEY_IN_LAB #2 Key์ ์ํ LED Toggling
๋ฌธ์ ์ค๋ช // main.c #2 void Main(void) { Sys_Init(); Uart_Printf("KEY Input Toggling #1\n"); // KEY[1:0], GPB[7:6]์ GPIO ์ ๋ ฅ์ผ๋ก ์ ์ธ for(;;) { // KEY0๊ฐ ๋๋ฆด๋๋ง๋ค LED0์ ๊ฐ์ Toggling } } ์ ๋ต ์ฝ๋ /* Key์ ์ํ LED Toggling */ #if 1 void Main(void) { Sys_Init(); Uart_Printf("KEY Input Toggling #1\n"); Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24); for(;;) { if(Macro_Check_Bit_Clear(GPIOB->IDR, 6)) { Macro_Invert_Bit(GPIOB->ODR, 8); } } } #endif /* Key Released ์ํ ๋๊ธฐ์ ์ํ LED Toggling */ #if 0 void Main(void) { Sys_Init(); Uart_Printf("KEY Input Toggling #2\n"); Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24); for(;;) { if(Macro_Check_Bit_Clear(GPIOB->IDR, 6)) { Macro_Invert_Bit(GPIOB->ODR, 8); while(!Macro_Check_Bit_Set(GPIOB->IDR, 6)); } } } #endif /* Inter-Lock์ ์ ์ฉํ Key์ ์ํ LED Toggling */ #if 0 void Main(void) { int interlock = 1; Sys_Init(); Uart_Printf("KEY Input Toggling #3\n"); Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24); for(;;) { if((interlock != 0) && Macro_Check_Bit_Clear(GPIOB->IDR, 6)) { Macro_Invert_Bit(GPIOB->ODR, 8); interlock = 0; } else if((interlock == 0) && Macro_Check_Bit_Set(GPIOB->IDR, 6)) { interlock = 1; } } } #endif ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex07] KEY_IN_LAB #1 Key ์ธ์
๋ฌธ์ ์ค๋ช // main.c #1 void Main(void) { Sys_Init(); Uart_Printf("KEY Input Test #1\n"); // KEY[1:0], GPB[7:6]์ GPIO ์ ๋ ฅ์ผ๋ก ์ ์ธ for(;;) { // KEY0์ด ๋๋ ธ์ผ๋ฉด LED0๋ฅผ ON, ์ ๋๋ ธ์ผ๋ฉด OFF // KEY1์ด ๋๋ ธ์ผ๋ฉด LED1๋ฅผ ON, ์ ๋๋ ธ์ผ๋ฉด OFF } } ์ ๋ต ์ฝ๋ /* Key ์ธ์ #1 */ #if 1 void Main(void) { int value = 0; Sys_Init(); Uart_Printf("KEY Input Test #1\n"); Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24); for(;;) { if(Macro_Check_Bit_Clear(GPIOB->IDR, 6)) Macro_Set_Bit(value, 0); else Macro_Clear_Bit(value, 0); if(Macro_Check_Bit_Clear(GPIOB->IDR, 7)) Macro_Set_Bit(value, 1); else Macro_Clear_Bit(value, 1); LED_Display(value); } } #endif /* Extract Macro๋ฅผ ์ด์ฉํ Key ์ธ์ #2 */ #if 0 void Main(void) { Sys_Init(); Uart_Printf("KEY Input Test #2\n"); Macro_Write_Block(GPIOB->CRL, 0xff, 0x44, 24); for(;;) { Macro_Write_Block(GPIOB->ODR,0x3,Macro_Extract_Area(GPIOB->IDR,0x3,6),8); } } #endif ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex06] LED_DRIVER_LAB
๋ฌธ์ ์ค๋ช // led.c #include "device_driver.h" void LED_Init(void) { /* ๋ค์ ์ฝ๋๋ ์์ ํ์ง ๋ง์์ค */ Macro_Set_Bit(RCC->APB2ENR, 3); } void LED_Display(unsigned int num) { } void LED_All_On(void) { } void LED_All_Off(void) { } ์ ๋ต ์ฝ๋ #include "device_driver.h" void LED_Init(void) { Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Write_Block(GPIOB->CRH, 0xff, 0x66, 0); Macro_Set_Area(GPIOB->ODR, 0x3, 8); } void LED_Display(unsigned int num) { Macro_Write_Block(GPIOB->ODR, 0x3, (~num & 3), 8); } void LED_All_On(void) { Macro_Clear_Area(GPIOB->ODR, 0x3, 8); } void LED_All_Off(void) { Macro_Set_Area(GPIOB->ODR, 0x3, 8); } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex05] BIT_OP_LAB #3 ๋นํธ ์ฐ์ฐ Macro ํ์ฉ์ ์ํ LED Toggling
๋ฌธ์ ์ค๋ช // main.c #3 void Main(void) { volatile int i; /* ์ด ๋ถ๋ถ์ ์์ ํ์ง ๋ง ๊ฒ */ Macro_Set_Bit(RCC->APB2ENR, 3); /* ๋งคํฌ๋ก๋ฅผ ์ด์ฉํ์ฌ ์ด๊ธฐ์ LED ๋ชจ๋ OFF */ for(;;) { /* LED ๋ฐ์ ๋ฐ Delay, Delay๋ 0x80000์ผ๋ก ์ค์ */ } } ์ ๋ต ์ฝ๋ void Main(void) { volatile int i; Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Write_Block(GPIOB->CRH, 0xff, 0x66, 0); Macro_Set_Area(GPIOB->ODR, 0x3, 8); for(;;) { Macro_Invert_Area(GPIOB->ODR, 0x3, 8); for(i=0; i<0x80000; i++); } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex04] BIT_OP_LAB #2 ๋นํธ ์ฐ์ฐ Macro ํ์ฉ์ ์ํ LED ON
๋ฌธ์ ์ค๋ช // main.c #2 void Main(void) { /* ์ด ๋ถ๋ถ์ ์์ ํ์ง ๋ง ๊ฒ */ Macro_Set_Bit(RCC->APB2ENR, 3); /* Macro๋ฅผ ์ด์ฉํ์ฌ LED0์ ON, LED1์ OFF๋ก ํ๋ ์ฝ๋๋ฅผ ์ค๊ณํ์์ค */ } ์ ๋ต ์ฝ๋ void Main(void) { Macro_Set_Bit(RCC->APB2ENR, 3); Macro_Write_Block(GPIOB->CRH, 0xff, 0x66, 0); Macro_Write_Block(GPIOB->ODR, 0x3, 0x2, 8); } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex03] BIT_OP_LAB #1 ๋นํธ ์ฐ์ฐ์ ์ํ LED ON
๋ฌธ์ ์ค๋ช // main.c #1 void Main(void) { /* ์ด ๋ถ๋ถ์ ์์๋ก ๋ฐ๊พธ์ง ๋ง์์ค */ RCC->APB2ENR |= (1<<3); /* ๋นํธ ์ฐ์ฐ์ ์ด์ฉํ์ฌ LED0์ ON, LED1์ OFF๋ก ํ๋ ์ฝ๋๋ฅผ ์ค๊ณํ์์ค */ } ์ ๋ต ์ฝ๋ #if 1 void Main(void) { RCC->APB2ENR |= (1<<3); GPIOB->CRH &=~((1<<7)|(3<<3)|(1<<0)); GPIOB->CRH |= (3<<5)|(3<<1); GPIOB->ODR &=~(1<<8); GPIOB->ODR |= (1<<9); } #endif #if 0 void Main(void) { RCC->APB2ENR |= (1<<3); GPIOB->CRH = (GPIOB->CRH & ~((1<<7)|(3<<3)|(1<<0)))|((3<<5)|(3<<1)); GPIOB->ODR = (GPIOB->ODR & ~(0x1<<8)) | (1<<9); } #endif #if 0 void Main(void) { RCC->APB2ENR |= (1<<3); GPIOB->CRH = (GPIOB->CRH & ~(0xff<<0)) | (0x66<<0); GPIOB->ODR = (GPIOB->ODR & ~(0x3<<8)) | (0x1<<8); } #endif ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex02] CMSIS_LAB
๋ฌธ์ ์ค๋ช // main.c #include "device_driver.h" void Main(void) { volatile int i; Uart_Init(115200); Uart_Printf("CMSIS based Register Define\n"); // ์ด ๋ถ๋ถ์ ์์ ํ์ง ๋ง ๊ฒ RCC->APB2ENR |= (1<<3); // LED Pin์ ์ถ๋ ฅ์ผ๋ก ์ค์ for(;;) { // LED ๋ชจ๋ ON for(i=0; i<0x40000; i++); // LED ๋ชจ๋ OFF for(i=0; i<0x40000; i++); } } ์ ๋ต ์ฝ๋ #include "device_driver.h" void Main(void) { volatile int i; Uart_Init(115200); Uart_Printf("CMSIS Based Register Define\n"); RCC->APB2ENR |= (1<<3); GPIOB->CRH = 0x66 << 0; for(;;) { GPIOB->ODR = 0x0 << 8; for(i=0; i<0x40000; i++); GPIOB->ODR = 0x3 << 8; for(i=0; i<0x40000; i++); } } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
[ex01] LED_ON_LAB
๋ฌธ์ ์ค๋ช // main.c // ์ด ๋ถ๋ถ์ ์์๋ก ๋ฐ๊พธ์ง ๋ง์์ค #define RCC_APB2ENR (*(unsigned long*)0x40021018) // ์ฌ๊ธฐ์ ์ฌ์ฉ์ ์์์ define์ ์์ฑํ์์ค #define GPIOB_CRH #define GPIOB_ODR void Main(void) { // ์ด ๋ถ๋ถ์ ์์๋ก ๋ฐ๊พธ์ง ๋ง์์ค RCC_APB2ENR |= (1<<3); // GPB[9:8]์ ์ถ๋ ฅ ๋ชจ๋๋ก ์ค์ ํ์์ค GPIOB_CRH = // GPB[9:8]์ LED0์ OFF, LED1์ ON ์ํค๋๋ก ์ค์ ํ์์ค GPIOB_ODR = } ์ ๋ต ์ฝ๋ // ์ด ๋ถ๋ถ์ ์์๋ก ๋ฐ๊พธ์ง ๋ง์์ค #define RCC_APB2ENR (*(unsigned long*)0x40021018) #define GPIOB_CRH (*(unsigned long*)0x40010C04) #define GPIOB_ODR (*(unsigned long*)0x40010C0C) void Main(void) { // ์ด ๋ถ๋ถ์ ์์๋ก ๋ฐ๊พธ์ง ๋ง์์ค RCC_APB2ENR |= (1<<3); GPIOB_CRH = 0x66 << 0; GPIOB_ODR = 0x01 << 8; } ๋ฉ๋ชจ printf ๋ด๋ถ์ \n ์ต๊ดํ ํ์
Study
ยท 2025-03-18
<
>
Touch background to close