본문 바로가기

C 언어/연습문제

(46)
C언어 연습문제14 [문제] 프로그램 사용자로부터 총 5개의 정수를 입력 받아서, 그 수의 합을 출력하는 프로그램을 작성해보자. 단! 한가지 조건이 있다. 정수는 반드시 1이상이어야 한다. 만약에 1미만의 수가 입력되는 경우에는, 이를 입력으로 인정하지 않고 재 입력을 요구해야 한다. 그래서 결국 1이상의 정수 5개 모두 입력 받을 수 있도록 프로그램을 완성해야 한다. 그리고 프로그램은 while문의 중첩만을 사용해야 한다. 조건) break는 사용하지 말 것 [실행결과] 1 이상 정수 입력(1번째): 1 1 이상 정수 입력(2번째): 0 1 이상 정수 입력(2번째): 1 1 이상 정수 입력(3번째): -5 1 이상 정수 입력(3번째): 3 1 이상 정수 입력(4번째): 7 1 이상 정수 입력(5번째): 15 합계: 27 ..
C언어 연습문제13 [문제] 길이가 7인 int형 배열을 선언해서 프로그램 사용자로부터 7개의 정수를 입력 받도록 하자. 그리고 입력 받은 정수를 내림차순으로 정렬하기 위한 함수 DesSort를 정의하고 호출하자. 마지막으로 제대로 정렬이 되었는지 확인하기 위해서 배열의 요소들을 순서대로 출력해보자. [실행결과] 입력: 1 입력: 2 입력: 3 입력: 4 입력: 5 입력: 6 입력: 7 7 6 5 4 3 2 1 [코드] #include void DesSort(int arr[], int len); int main(void) { int i; int arr[7]; for (i = 0; i < 7; i++) { printf("입력: "); scanf_s("%d", &arr[i]); } DesSort(arr, sizeof(arr) ..
C언어 연습문제12 [문제] 다음과 같이 배열을 선언한 뒤(int arr[4] = {3, 2, 4, 1}) 버블정렬 알고리즘을 통해 오름차순 정렬하여라. (버블정렬 알고리즘에 대한 설명은 아래 링크에서 확인) [알고리즘] 버블 정렬(bubble sort)이란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io [실행결과] 1 2 3 4 [코드] #include void BubbleSort(int arr[], int len); int main(void) { int i; int arr[4] = { 3, 2, 4, 1 }; BubbleSort(arr, sizeof(arr) / sizeof(int)); for (i = 0; i < 4; i++) ..
C언어 연습문제11 [문제] 회문(Palindrome)은 앞으로 읽으나 뒤로 읽으나 차이가 없는 단어들을 뜻한다. 예를 들어서 level, bob과 같은 단어들은 회문에 속한다. 이에 우리는 인자로 전달되는 영단어가 회문인지 아닌지를 판단해서 그 결과를 출력하는 기능의 함수와 문자열의 길이를 반환하는 함수 두 개를 정의하고 이에 적절한 main 함수를 정의해보고자 한다. 단, 구현의 편의를 위해서 대소문자까지 일치해야 회문으로 인정하기로 하겠다. 인자로 전달되는 영단어가 회문인지 아닌지를 판단해서 그 결과를 출력하는 기능의 함수는 반환형이 void, 매개변수가 1개이어야 하며, 문자열의 길이를 반환하는 함수는 반환형이 int, 매개변수가 1개이어야 한다. [실행결과] 문자열 입력: abba 회문입니다. [코드] #inclu..
C언어 연습문제10 [문제] 길이가 10인 배열을 선언하고 총 10개의 정수를 입력 받는다. 단, 입력 받은 숫자가 홀수이면 배열의 앞에서부터 채워나가고, 짝수이면 뒤에서부터 채워나가는 형식을 취하기로 하자. 따라서 사용자가 [1,2,3,4,5,6,7,8,9,10]을 입력했다면, 배열에는 [1,3,5,7,9,10,8,6,4,2]의 순으로 저장이 되어야 한다. [실행결과] 총 10개의 숫자 입력 입력: 1 입력: 1 입력: 4 입력: 4 입력: 4 입력: 4 입력: 3 입력: 3 입력: 2 입력: 2 배열 요소의 출력: 1 1 3 3 2 2 4 4 4 4 [코드] #include int main(void) { int i, num; int front = 0, back = 9; int arr[10]; printf("총 10개의 ..
C언어 연습문제9 [문제] 프로그램 사용자로부터 10진수 형태로 정수를 하나 입력 받은 다음, 이를 2진수로 변환해서 출력하는 프로그램을 작성해 보자. 조건) 배열을 사용하는 방법과 재귀함수를 사용하는 방법 둘 다 프로그램 해볼 것 [실행결과] 10진수 정수 입력: 15 1111 [코드1: 배열 사용] #include int main(void) { char bin_arr[30]; int num, cnt = 0; printf("10진수 정수 입력: "); scanf_s("%d", &num); while (num > 0) // 2진수로 변환 { bin_arr[cnt++] = num % 2; num /= 2; } while (cnt > 0) // 2진수 변환 결과 출력 printf("%d", bin_arr[--cnt]); re..
C언어 연습문제8 [문제] 길이가 10인 배열을 선언하고 총 10개의 정수를 입력 받아서, 홀수와 짝수를 구분 지어 출력하는 프로그램을 작성해보자. 일단 홀수부터 출력하고 나서 짝수를 출력하도록 하자. 단, 10개의 정수는 main함수 내에서 입력 받도록 하고, 배열 내에 존재하는 홀수만 출력하는 함수와 배열 내에 존재하는 짝수만 출력하는 함수를 각각 정의해서 이 두 함수를 호출하는 방식으로 프로그램을 완성하자. [실행결과] 총 10개의 숫자입력 입력: 1 입력: 3 입력: 5 입력: 20 입력: 33 입력: 25 입력: 42 입력: 6 입력: 7 입력: 0 홀수 출력: 1 3 5 33 25 7 짝수 출력: 20 42 6 0 [코드] #include void Print_odd(int* ptr, int len); void ..
C언어 연습문제7 [문제] 세 변수에 저장된 값을 서로 뒤바꾸는 함수를 정의해보자. 예를 들어서 함수의 이름이 Swap3라 하면, 다음의 형태로 함수가 호출되어야 한다. Swap3(&num1, &num2, &num3); 그리고 함수호출의 결과로 num1에 저장된 값은 num2에 , num2에 저장된 값은 num3에, 그리고 num3에 저장된 값은 num1에 저장되어야 한다. [실행결과] 3개의 정수 입력: 1 2 3 3 1 2 [코드] #include void Swap3(int* ptr1, int* ptr2, int* ptr3); int main(void) { int num1, num2, num3; printf("3개의 정수 입력: "); scanf_s("%d %d %d", &num1, &num2, &num3); Swap..