알고리즘 학습 4문제
2023. 10. 30. 17:07ㆍ프로그래밍/C
1.입력 파라미터 x,y를 받아 x의 y제곱을 반환하는 정수 함수 pow를 구현하라.
int pow(int x, int y)
{
int i;
int total = 0;
for (i = 0; i < y; i++)
{
total = total * y;
}
return total;
}
2. 예상 출력 결과가 나오도록 배열을 반전시키는 코드를 작성하여라.
<출력 결과 = 5, 3, 2, 4, 1>
#include <stdio.h>
int main()
{
int aaa[5] = { 1, 4, 2, 3, 5};
int size = sizeof(aaa)/sizeof(int);
int i, temp;
for( i = 0; i < size/2; i++)
{
temp = arr[i];
arr[i] = arr[size-1-i];
arr[size-1-i] = temp;
}
for(i = 0; i < size; i++)
{
printf("%d", aaa[i]);
}
return 0;
}
3. 정수 배열과 배열의 크기를 입력받아 배열을 정렬하는 함수를 2 가지 방법으로 구현하라.
#include <stdio.h>
void arrSort1(int* arr, int size);
void arrSort2(int* arr, int size);
int main()
{
int arr1[] = { 4,1,3,2,6,5 };
int arr2[] = { 10,1,5,90,7,23,13,4 };
int i = 0;
arrSort1(arr1, sizeof(arr1) / sizeof(int));
arrSort2(arr2, sizeof(arr2) / sizeof(int));
for (i = 0; i < 6; i++) {
printf("%d", arr1[i]);
}
for (i = 0; i < 8; i++) {
printf("%d", arr2[i]);
}
}
- 답안
//버블정렬
void arrsort1(int* arr, int size) {
int temp;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//선택정렬
void arrsort2(int* arr, int size) {
int minIndex;
int i, j;
for (i = 0; i < size-1; i++) {
minIndex = i;
for (j = i+1; j < size; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
swap(&arr[i], &arr[minIndex]);
}
}
}
//삽입정렬
void arrsort3(int* arr, int size) {
int i, j, key;
for (i = 0; i < size; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
4. stdlib.h 헤더파일의 rand() 함수를 이용하면 임의의 정수가 반환된다. 이 함수를 이용하여 로또 복권 당첨 번호를 생성하는 프로그램을 작성하라.
1) 6개 숫자 + 1개 보너스 숫자 생성
2) 숫자 범위 : 1 ~ 45
3) 같은 숫자는 한번만 나올 수 있다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int arr[7], i, j, R;
int flag = 0;
srand(time(NULL));
for (i = 0; i < 7; i++)
{
flag = 0;
R = ((rand() % 45) + 1);
for (j = 0; j < i; j++)
{
if (arr[j] == R)
{
flag = 1;
}
}
if (flag == 0)
{
arr[i] = R;
}
else{
i--;
}
}
for (i = 0; i < 6; i++)
{
printf("%3d", arr[i]);
}
printf(" + %2d", arr[6]);
return 0;
}
'프로그래밍 > C' 카테고리의 다른 글
[백준] 10809번 문제 - 알파벳 찾기 - C언어(C11 C99) (0) | 2023.11.03 |
---|---|
[백준] 2798번 문제 - 블랙잭 - C언어(C11 C99) (0) | 2023.11.03 |
[백준] 11650번 문제 - 좌표 정렬하기 - C언어(C11 C99)/동적메모리할당 + 내부정렬함수 + 구조체활용 (0) | 2023.11.01 |
[백준] 2751번 문제 - 수 정렬 하기 2 - C언어(C11 C99)/내장정렬함수qsort() (1) | 2023.10.31 |
C언어_재귀 호출 (2) | 2023.10.18 |