1. 인자로 char*형을 받아서 문자열의 길이를 반환하는 함수를 작성하세요. 단, 절대로 strlen() 함수를 사용하지 말고 직접 계산하는 코드를 작성하세요.
[소스코드]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int strlen(const char* str)
{
int length = 0;
char c;
while((c = str[length]) != '\0') { ++length; }
return length;
}
void main(void)
{
const char* str = "안녕하세요.";
int strLength = strlen(str);
printf("[%s]의 길이: %d \n", str, strLength);
return;
}
[실행결과]
2. 인자로 char*형을 받아서 문자열을 거꾸로 출력하는 함수를 작성하세요. 문제를 해결하기 위해서 strlen() 함수를 사용하거나 1번 문제에서 작성한 함수를 사용해도 좋습니다.
[소스코드]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int strlen(const char* str)
{
char c;
int length = 0;
while((c = str[length]) != '\0') { ++length; }
return length;
}
void strrvs(char dst[255], const char* tg)
{
char c;
int i = 0;
int length = strlen(tg);
while (length - i > 0)
{
dst[i++] = tg[length - 1 - i];
}
return;
}
void main(void)
{
const char* str = "abcde";
char strReverse[255] = { 0 };
printf("원본: [%s] \n", str);
strrvs(strReverse, str);
printf("반전: [%s] \n", strReverse);
return;
}
[실행결과]
3. 인자로 int형 배열(혹은 주소)과 요소의 개수를 받은 후, 오름차순으로 정렬하는 함수를 작성하세요.
[소스코드]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void sort(int arr[], int length)
{
int tmp = 0, select = 0;
for (int i = 0; i < length; ++i)
{
select = i;
for (int j = i+1; j < length; ++j)
{
if (arr[select] > arr[j])
{
select = j;
}
}
tmp = arr[select];
arr[select] = arr[i];
arr[i] = tmp;
}
return;
}
void main(void)
{
int arr[] = { 1, 5, 3, 2, 9, 7, 8, 6, 4 };
sort(arr, sizeof(arr) / sizeof(int));
for (int i = 0; i < sizeof(arr) / sizeof(int); ++i)
{
printf("%d ", arr[i]);
}
return;
}
[실행결과]
4. 인자로 정수를 받아서 해당 수에 대한 구구단을 출력하는 함수를 작성하세요.
[소스코드]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void printGuGuDan(int n)
{
printf("\n[%d단]\n", n);
for (int i = 1; i <= 9; ++i)
{
printf("%d x %d = %d\n", n, i, n * i);
}
return;
}
void main(void)
{
int nInput = 0;
printf("Input GuGuDan Number: ");
scanf("%d", &nInput);
printGuGuDan(nInput);
return;
}
[실행결과]
5. 인자로 검색 대상 문자열이 저장된 메모리의 주소와 찾을 문자(char)를 받아 검색을 수행하고 인덱스를 반환하는 함수를 작성하세요. 만일 찾는 문자열이 없다면 -1을 반환합니다.
[소스코드]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int findIndexOfString(char* pszData, char c)
{
int nIndex = -1;
int length = strlen(pszData);
for (int i = 0; i < length; ++i)
{
if (pszData[i] == c)
{
nIndex = i;
break;
}
}
return nIndex;
}
void main(void)
{
char szData[] = "my name is hong-gil-dong.";
char c;
int nIndex = 0;
printf("Input Your Find Character: ");
c = getc(stdin);
nIndex = findIndexOfString(szData, c);
printf("Find Index: %d\n", nIndex);
return;
}
[실행결과]
6. 열의 크기가 5인 2차원 int형 배열에 대한 포인터와 행의 개수를 인수로 받아 배열 전체의 합을 반환하는 함수를 작성하세요.
[소스코드]
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int sumOfArray(int(*pnArr)[5], int row)
{
int nSum = 0;
for (int i = 0; i < row; ++i)
{
for (int j = 0; j < sizeof(pnArr[0]) / sizeof(int); ++j)
{
nSum += pnArr[i][j];
}
}
return nSum;
}
void main(void)
{
int nArr[3][5] = { { 2, 5, 3, 1, 4}, {1, 2, 3, 4, 5}, {5, 4, 3, 2, 1} };
int nSum = sumOfArray(nArr, sizeof(nArr) / sizeof(nArr[0]));
printf("[배열]\n");
for (int i = 0; i < sizeof(nArr) / sizeof(nArr[0]); ++i)
{
for (int j = 0; j < sizeof(nArr[0]) / sizeof(int); ++j)
{
printf("%d ", nArr[i][j]);
}
putc('\n', stdout);
}
printf("\n[배열의 합]\n");
printf("%d\n", nSum);
return;
}
[실행결과]
'c언어' 카테고리의 다른 글
13. 유틸리티 함수 (0) | 2023.06.23 |
---|---|
12. 문자, 문자열 처리 함수 (0) | 2023.06.21 |
10. 배열과 포인터 (0) | 2023.06.13 |
9. 포인터와 메모리 관리 (0) | 2023.06.09 |
8. 반복문 (0) | 2023.06.07 |