클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

입출력 응용 - 문자와 문자열 출력 코딩 테스트 문제 본문

알고리즘 및 자료 관리/알고리즘

입출력 응용 - 문자와 문자열 출력 코딩 테스트 문제

huenuri 2024. 8. 25. 10:37

오늘의 두번째 단원 코딩테스트 문제는 문자를 출력하는 문제로 정해보았다. 여기서도 4문제를 풀어볼 것이다.
문자열을 출력하는 건 배열을 알아야 풀 수 있기는 하나, 여기서는 별로 어렵지 않은 배열을 사용하니 이 문제도 함께 포함시켰다.


 

 

8진수 16진수 변환 <1125번>

8진수 16진수 변환

 

8진수 16진수 변환

10진수 정수를 입력받아 8진수와 16진수로 출력한다.

codeup.kr

 

🎭 문제 1번

10진수 정수를 입력받아 8진수와 16진수로 출력한다.
8진수와 16진수를 차례대로 출력한다.
(16진수는 대문자 출력)

#include <stdio.h>

int main(void)
{
	int num;
	scanf_s("%d", &num);
	printf("%o %X", num, num);

	return 0;
}

 

16진수는 대문자로 출력해야 하므로 %X라고 써주면 된다.


 

 

문자 출력하기 <1131번>

문자 출력하기

 

문자 출력하기

입력받은문자를 그대로 출력된다.

codeup.kr

 

🎭 문제 2번

입력된 문자를 그대로 출력한다.

#include <stdio.h>

int main(void)
{
	char num;
	scanf_s("%c", &num,(unsigned int)sizeof(num));
	printf("%c", num);

	return 0;
}

 

문자를 출력할 때는 사이즈를 명시해주는 것이 좋다. 난 코드를 비주얼 스튜디오 기준으로 작성하기 때문에 scanf_s를 사용하는 편이다.


 

 

문자열 출력하기 <1132번>

문자열 출력하기

 

문자열 출력하기

한 단어가 입력으로 주어진다.(단어 길이는 8글자 이하)

codeup.kr

 

🎭 문제 3번

한 단어를 입력받아 출력한다.
한 단어가 입력으로 주어진다.(단어 길이는 8글자 이하)

#include <stdio.h>

int main(void)
{
	char num[8];
	scanf_s("%s", &num, (unsigned int)sizeof(num));
	printf("%s", num);

	return 0;
}

앞의 문제를 그대로 적용하면 단어는 1개밖에 저장되지 않는다. 그 이상의 문자를 출력하려면 %s로 써주어야 한다.
그리고 문자가 여러 개이니 배열로 받는다.


 

 

공백이 있는 문자열 입출력 <1133번>

공백이 있는 문자열 입출력

 

공백이 있는 문자열 입출력

scanf("%s",&str); 대신 fgets(str, 31, stdin);을 사용하면 공백도 입력받을 수 있습니다. 또는, scanf("%[^\n]s",&str);  를 사용해도 됩니다.

codeup.kr

 

🎭 문제 4번

scanf("%s", str);를 사용하면 공백이후의 문자를 입력받지 못한다.
공백이 있는 문자열을 입력받아 출력해보자.

#include <stdio.h>

int main(void)
{
	char ch[30];
	fgets(ch, 30, stdin);
	printf("%s", ch);

	return 0;
}

 

이 문제는 어려워서 정답을 보고 풀었다. 지난번에 풀었는데도 다시 풀려니 하나도 기억이 나지 않았다. 아직 배우지 않은 단원이기도 하지만, 입출력 부분에서 책에 잠시 소개가 된 것을 본 적이 있다.

fgets 함수는 어떨 때 사용하는 걸까? 지금은 이런 게 있구나 하고 넘어가고 다음에 문자열을 배울 때 다시 학습해볼 생각이다.


 

 

오늘의 두번째 단원 학습을 마치고

 

이 부분은 연산자는 아니고 입출력 관련 문제들이었다. 문자와 문자열을 출력하는 건 c와 s로 각각 달라서 좀 헤깔릴 때가 있다.
문자열은 배열로 담는다는 것을 꼭 기억하자!

우선은 여기까지만 알아도 충분할 것 같다.