반응형
void Practice()
{
	int num = 0;
	printf("정수 하나 입력 : ");
	scanf_s("%d", &num);
	Decimal(num);
}
void Decimal(int input)
{
	int decimalLen = 0;
	int divNum = 2;
	int decimal[32] = { 0 };
	int nextDiv = 0;

	while(nextDiv != 1)
	{
		decimal[decimalLen++] = input % divNum;
		nextDiv = input / divNum;
		input = nextDiv;
	}
	decimal[decimalLen] = nextDiv;

	for(int i= decimalLen; i >= 0; i--)
		printf("%d", decimal[i]);
}

 

반응형

 

반응형

'C' 카테고리의 다른 글

다차원 배열  (0) 2023.05.17
홀수 짝수 구분  (0) 2023.05.17
홀수를 먼저 짝수를 나중에 출력하는 함수  (0) 2023.05.17
회문  (0) 2023.05.17
내림차순 정렬  (0) 2023.05.17
반응형
// 홀수를 먼저 짝수를 나중에 출력하는 함수
void Practice()
{
	int arr[10] = { 0 };
	int arrLen = sizeof(arr) / sizeof(int);
	printf("정수 10개 입력 : \n");
	for (int i = 0; i < arrLen; i++)
		scanf("%d", &arr[i]);

	FirstOddLastEven(arr, arrLen);
}
void FirstOddLastEven(int* input, int inputLen)
{
	int arrSort[10] = { 0 };
	int evenCount = 0;
	for (int i = 0; i < inputLen; i++)
	{
		if (input[i] % 2 == 0)
		{
			arrSort[inputLen - 1 - evenCount++] = input[i];
			continue;
		}
		arrSort[i - evenCount] = input[i];
	}
	for (int i = 0; i < inputLen; i++)
	{
		printf("%d ", arrSort[i]);
	}
}

 

반응형

 

반응형

'C' 카테고리의 다른 글

홀수 짝수 구분  (0) 2023.05.17
이진수 출력  (0) 2023.05.17
회문  (0) 2023.05.17
내림차순 정렬  (0) 2023.05.17
상수 형태의 문자열을 가리키는 포인터  (0) 2023.05.16
반응형
// 회문
void Practice()
{
	char words[5] = "noon";
	int result = Palindrome("no1on1");
	if (result == 1)
		printf("회문이 맞습니다!\n");
	else
		printf("회문이 아닙니다!\n");
}
int Palindrome(char* words)
{
	int wordsLen = 0;
	while (words[wordsLen] != '\0')
	{
		wordsLen++;
	}
	for (int i = 0; i < (wordsLen-1)/2; i++)
	{
		if (words[i] != words[(wordsLen-1) - i])
		{
			return 0;
		}
		if (words[i] == words[wordsLen - i])
			continue;
	}

	return 1;
}

 

반응형

 

반응형

'C' 카테고리의 다른 글

이진수 출력  (0) 2023.05.17
홀수를 먼저 짝수를 나중에 출력하는 함수  (0) 2023.05.17
내림차순 정렬  (0) 2023.05.17
상수 형태의 문자열을 가리키는 포인터  (0) 2023.05.16
포인터 대상의 const 선언  (0) 2023.05.15
반응형
// 내림차순 정렬
void Practice()
{
	int arr[7] = { 0 };
	int arrLen = sizeof(arr) / sizeof(int);
	printf("%d개의 정수 입력 : ", arrLen);
	for (int i = 0; i < arrLen; i++)
		scanf("%d", &arr[i]);
	DesSort(arr, arrLen);
	for (int i = 0; i < arrLen; i++)
		printf("%d ", arr[i]);
}
void DesSort(int* input, int inputLen)
{
	for (int i = 0; i < inputLen-1; i++)
	{
		for (int j = 0; j < (inputLen - i) - 1; j++)
		{
			if (input[j] < input[j + 1])
			{
				int temp = input[j];
				input[j] = input[j + 1];
				input[j + 1] = temp;
			}
		}
	}
}

 

반응형

 

반응형
반응형

str1은 문자열이 저장된 배열이다. 문자 배열이다 즉 변수성향의 문자열이다.

str2은 문자열의 주소 값을 저장한다. 자동 할당된 문자열의 주소 값을 저장한다.

따라서 상수성향의 문자열이다.

 

아래의 코드를 보면

 

str1은 다른 문자열 할당이 되지 않는다.

str2는 문자열주소를 할당받을 수 있어서

다른 문자열을 할당할 수 있다.

 

변수 성향의 str1에 저장된 문자열의 문자는 변경이 가능

상수 성향의 str2에 저장된 문자열의 문자는 변경이 불가능

char str1[] = "My String";
char* str2 = "Your String";
printf("%s %s \n", str1, str2);	// My String Your String 출력

//str1 = "Our String";	컴파일 오류발생
str2 = "Our String";
printf("%s %s \n", str1, str2);	// My String Our String 출력

str1[0] = 'X';
//str2[0] = 'X';	컴파일 오류 발생
printf("%s %s\n", str1, str2);	// Xy String Our String 출력

 

아래의 그림에서 WhoAreYou라는 함수는 char형 포인터를 매개변수로 받고

인자로 "Hong"을 넣어줍니다. "Hong"은 문자열인데 문자열은 char형 배열과 같습니다.

배열은 포인터와 호환이 되기에 인자로 전달받을 수 있습니다!

 

이미지 출처 : 윤성우의 열혈 C 프로그래밍

 

반응형

 

반응형

'C' 카테고리의 다른 글

회문  (0) 2023.05.17
내림차순 정렬  (0) 2023.05.17
포인터 대상의 const 선언  (0) 2023.05.15
Call by value와 Call by reference의 차이점  (0) 2023.05.15
포인터와 함수 이해  (0) 2023.05.15

+ Recent posts