본문 바로가기

C 언어/연습문제

(46)
C언어 연습문제22 [문제] 한 층에 2세대가 사는 4층 아파트가 있다. 각 층의 1, 2호에 사는 인원을 입력 받아 각 층의 합계를 출력하는 프로그램을 작성하라. (단, 1차원 배열만 쓰는 경우와 2차원 배열을 쓰는 경우 둘 다 각각 프로그램을 작성할 것) [실행결과] 1층 1호 인구수: 2 1층 2호 인구수: 4 2층 1호 인구수: 3 2층 2호 인구수: 5 3층 1호 인구수: 2 3층 2호 인구수: 6 4층 1호 인구수: 4 4층 2호 인구수: 3 1층 인구수: 6 2층 인구수: 8 3층 인구수: 8 4층 인구수: 7 [코드1: 1차원 배열 사용] #include int main(void) { int i; int floor = 1, cnt = 1; int arr[8]; int sum[4] = { 0 }; for (i ..
C언어 연습문제21 [문제] 길이가 6인 int형 배열 arr을 선언하고 이를 1, 2, 3, 4, 5, 6으로 초기화한 다음, 배열에 저장된 값의 순서가 6, 5, 4, 3, 2, 1이 되도록 변경하는 프로그램을 작성해보자. 단, 배열의 앞과 뒤를 가리키는 포인터 변수 두 개를 선언해서 이를 활용하여 저장된 값의 순서를 뒤바꿔야 한다. [실행결과] 6 5 4 3 2 1 [코드] #include int main(void) { int i, temp; int arr[6] = { 1, 2, 3, 4, 5, 6 }; int* fptr = &arr[0]; int* bptr = &arr[5]; for (i = 0; i < 3; i++) { temp = *fptr; *fptr = *bptr; *bptr = temp; fptr += 1;..
C언어 연습문제20 [문제] int형 변수 num1과 num2를 선언과 동시에 각각 10과 20으로 초기화하고, int형 포인터 변수 ptr1과 ptr2를 선언하여 각각 num1과 num2를 가리키게 하자. 그리고 이 상태에서 포인터 변수 ptr1과 ptr2를 이용해서 num1의 값을 10 증가시키고, num2의 값을 10 감소시키자. 이제 두 포인터 변수 ptr1과 ptr2가 가리키는 대상을 서로 바꾸자. 즉, 포인터 변수 ptr1이 num2를 가리키게 하고, 포인터 변수 ptr2가 num1을 가리키게 하자. 그리고 마지막으로 ptr1과 ptr2가 가리키는 변수에 저장된 값을 출력하자. [출력결과] 10 20 [코드] #include int main(void) { int num1 = 10, num2 = 20; int* p..
C언어 연습문제19 [문제] 프로그램 사용자로부터 하나의 영단어를 입력 받아서 입력 받은 영단어의 길이를 계산하여 출력하는 프로그램을 작성해보자. [실행결과] 영단어 입력: apple 단어의 길이: 5 [코드] #include int main(void) { char voca[100]; int len = 0; printf("영단어 입력: "); scanf_s("%s", voca, 100); while (voca[len] != 0) len++; printf("단어의 길이: %d", len); return 0; } 윤성우의 열혈 C 프로그래밍
C언어 연습문제18 [문제] 두 개의 정수를 입력 받아서 최대 공약수(GCD)를 구하는 프로그램을 작성해보자 [실행결과] 두 개의 정수 입력: 6 9 최대 공약수: 3 [코드] #include int GCD(int n1, int n2); int main(void) { int num1, num2; printf("두 개의 정수 입력: "); scanf_s("%d %d", &num1, &num2); printf("최대 공약수: %d", GCD(num1, num2)); return 0; } int GCD(int n1, int n2) { int result; result = n1; while (n1 % result != 0 || n2 % result != 0) result--; return result; } 윤성우의 열혈 C 프로그래밍
C언어 연습문제17 [문제] n 값을 입력 받아 n! 구하는 프로그램 작성 조건) Factorial 함수를 정의하고 재귀함수로 사용할 것 [실행결과] 구하고자 하는 n! 입력: 6 6! = 720 [코드] #include int Factorial(int num); int main(void) { int num; printf("구하고자 하는 n! 입력: "); scanf_s("%d", &num); printf("%d! = %d", num, Factorial(num)); return 0; } int Factorial(int num) { if (num == 0) return 1; else return num* Factorial(num - 1); } 윤성우의 열혈 C 프로그래밍
C언어 연습문제16 [문제] 프로그램 사용자가 입력하는 값을 누적하여 그 합계를 출력하라. 조건 1) 값을 누적하는 함수 AddToTotal()을 정의할 것 조건 2) static 변수를 사용할 것 조건 3) 0을 입력하면 프로그램이 종료되도록 할 것 [실행결과] 더하고 싶은 정수를 입력하세요(0번 입력시 종료) 입력1: 1 지금까지의 합계: 1 입력2: 3 지금까지의 합계: 4 입력3: 5 지금까지의 합계: 9 입력4: 11 지금까지의 합계: 20 입력5: 0 [코드] #include int AddToTotal(int num); int main(void) { int num; int i = 1; printf("더하고 싶은 정수를 입력하세요(0번 입력시 종료)\n"); while (1) { printf("입력%d: ", i+..
C언어 연습문제15 [문제] 다음 식을 만족하는 모든 A와 Z를 구하는 프로그램을 작성해보자 A Z + Z A -------- 9 9 A와 Z는 서로 다른 값이어야 하며, 이를 continue를 사용하여 코딩할 것 [실행결과] 18 + 81 = 99 27 + 72 = 99 36 + 63 = 99 45 + 54 = 99 54 + 45 = 99 63 + 36 = 99 72 + 27 = 99 81 + 18 = 99 [코드] #include int main(void) { int A, Z, result; for (A = 1; A < 10; A++) { for (Z = 1; Z < 10; Z++) { if (A == Z) continue; result = (A * 10 + Z) + (Z * 10 + A); if (result == 9..