막뇌 2023. 4. 6. 13:52
#include<stdio.h>	//표준 입출력 장치 헤더
#include<stdlib.h>	//라이브러리 헤더 파일,  rand() srand() 할 때 사용, 동적 할당에서 사용
#include<string.h>	//strlen 문자열 길이 strcpy_s strcat_s 등등에 대한 기능을 사용 할 수 있게 됨
#include<time.h>	//랜덤값 출력시 srand(int)time.h(NULL) 사용 가능 time.h를 쓸 수 있다.


void bubble_sort_ascending(int arr[], int n);
void bubble_sort_descending(int arr[], int n);

int main()
{

	//1차원 배열의 길이가 100인 배열을 선언한 다음 랜덤값을 배열에 저장한다. 1부터 100사이의 수 중에 하나로 배열에 저장한다.
	//버블정렬로 오름차순 내림차순 각각 정렬 해 본다.
	int arr[100];
	srand((int)time(NULL));
	for (int i = 0; i < 100; i++)
		arr[i] = rand() % 100 + 1;

	printf("Original Array: \n");
	for (int i = 0; i < 100; i++)
		printf("%d ", arr[i]);
	printf("\n");

	bubble_sort_ascending(arr, sizeof(arr) / sizeof(int));
	printf("오름차순 정렬: ");
	for (int i = 0; i < 100; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");

	bubble_sort_descending(arr, sizeof(arr) / sizeof(int));
	printf("내림 차순 정렬: ");
	for (int i = 0; i < 100; i++) {
		printf("%d ", arr[i]);
	}
    return 0;
}

void bubble_sort_ascending(int arr[], int n) {
	for (int i = 0; i < n - 1; i++) {
		for (int j = 0; j < n - 1 - i; j++) {
			if (arr[j] > arr[j + 1]) {
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

void bubble_sort_descending(int arr[], int n) {
	for (int i = 0; i < n - 1; i++) {
		for (int k = 0; k < n - 1 - i; k++) {
			if (arr[k] < arr[k + 1]) {
				int temp = arr[k];
				arr[k] = arr[k + 1];
				arr[k + 1] = temp;
			}
		}
	}
}

 

 

#include<stdio.h>	//표준 입출력 장치 헤더
#include<stdlib.h>	//라이브러리 헤더 파일,  rand() srand() 할 때 사용, 동적 할당에서 사용
#include<string.h>	//strlen 문자열 길이 strcpy_s strcat_s 등등에 대한 기능을 사용 할 수 있게 됨
#include<time.h>	//랜덤값 출력시 srand(int)time.h(NULL) 사용 가능 time.h를 쓸 수 있다.

const int BREAD = 500;
const int SNACK = 700;
const int DRINK = 400;


int main()
{
	int maxmoney = 5000;
	int currentmoney = 3500;
	
	int i, j, k;
	
	printf("당신이 소유하고 있는 금액 : %d \n", currentmoney);
	for (i = 1; i < currentmoney / BREAD; i++) {
		for (j = 1; j < currentmoney / SNACK; j++) {
			for (k = 1; k < currentmoney / DRINK; k++) {
				if (currentmoney == BREAD + SNACK * j + DRINK * k) {
					printf("크림빵 %d개 \n", i);
					printf("새우깡 %d개 \n", j);
					printf("콜  라 %d개 \n", k);
					printf("\n");
				}
			}
		}
	}
	



	return 0;
}

 

두 수를 입력받아 두수의 최대공약수를 구하는 프로그램을 만들어 보자

 

#include<stdio.h>	//표준 입출력 장치 헤더
#include<stdlib.h>	//라이브러리 헤더 파일,  rand() srand() 할 때 사용, 동적 할당에서 사용
#include<string.h>	//strlen 문자열 길이 strcpy_s strcat_s 등등에 대한 기능을 사용 할 수 있게 됨
#include<time.h>	//랜덤값 출력시 srand(int)time.h(NULL) 사용 가능 time.h를 쓸 수 있다.

int GCM(int num1, int num2);

int main()
{
	int input1, input2;
	printf("두개의 정수를 입력: ");
	scanf_s("%d %d", &input1, &input2);

	printf("GCN : %d \n", GCM(input1, input2));
	return 0;

}

int GCM(int num1, int num2) {
	int result;
	result = num1;

	while (num1 % result != 0 || num2 % result != 0)
		result--;

	return result;
}

 

 

십진수를 이진수로 변환 해서 표현하는 프로그램을 만들어 보세요.

#include<stdio.h>	//표준 입출력 장치 헤더
#include<stdlib.h>	//라이브러리 헤더 파일,  rand() srand() 할 때 사용, 동적 할당에서 사용
#include<string.h>	//strlen 문자열 길이 strcpy_s strcat_s 등등에 대한 기능을 사용 할 수 있게 됨
#include<time.h>	//랜덤값 출력시 srand(int)time.h(null) 사용 가능 time.h를 쓸 수 있다.


int main() {

	int input;
	char arr[30];
	int cnt = 0;
	int i = 0;
	printf("십진수를 입력하세요: ");
	scanf_s("%d", &input);

	while (input > 0)	//2진수로 변환하는 과정 2로 나눈 나머지를 각 배열에 담고난 다음, 값을 2로 나눈다.
	{
		arr[cnt] = input % 2;
		input /= 2;	//정수형은 몫이 1미만이 되면 그때 부터는 0으로 처리한다.

		cnt++;
	}
	cnt--;// 한번 빼줘야 cnt가 0부터 생성된 마지막 배열까지 누적 됨

	printf("변환된 이진수: ");
	while (cnt >= 0)	//역순으로 출력하기 위해 배열 arr[cnt]를 arr[0]까지 출력함
	{
		printf("%d ", arr[cnt]);
		cnt--;	//최종적으로 cnt값은 -1이 되면서 while문을 탈출
	}

	return 0;


}

 

 

 

1번 답

2번 답

void SimpleFuncOne(int* ar1, int* ar2);
void SimpleFuncOne(int ar1[], int ar2[]);
void SimpleFuncTwo(int(*ar3)[4], int(*ar3));
void SimpleFuncTwo(int ar3[][4], int ar4[][]);

int main(void)
{
    int arr1[3];
    int arr2[4];
    int arr3[3][4];

    SimpleFuncOne(arr1, arr2);
    SimpleFunTwo(arr3, arr4);
    return0;

문제3번 답

int main() {
	int* arr1[3] ---> int** ptr1
	int* arr2[3][5] ---> int* (*ptr2)[5]	//int ptr[][4]
	int** arr3[5] ---- > int*** ptr3
	int*** arr[3][4] ---> int*** (*ptr4)[5]