난이도에 관하여
- 1은 어려울 수 있는 퀴즈를 상정했다면, 3은 정말로 쉬울 수도 있는 퀴즈를 상정함
- 대부분은 연습 문제로 나왔던 것들을 조금씩만 변형하여 만들었음
1. 범위 내 자연수 출력하기
- scanf에서 포매팅을 이용하여 입력받는 문제
- “%d~%d” 형식으로 입력받으면 알아서 두 정수를 입력받아준다
#include <stdio.h>
int main()
{
int a, b;
scanf("%d~%d", &a, &b);
for (int i=b; i>=a; i--)
printf("%d\n", i);
return 0;
}
2. 카이사르 암호로 암호화 하기
- 이미 학교 연습문제로도 나온적이 있는 문제
- 공백까지 포함해서 입력받아야 하므로, fgets를 사용해야 한다
- fgets는 줄바꿈 글자까지 입력을 받는다는걸 기억해야 한다
- 따라서, 5만큼 더하는 동작은 대문자/소문자 알파벳일때만 더해주고,
실제 알파벳 범위를 벗어나면 26만큼 빼주는 동작으로 간편하게 구현할 수 있다
- 아래 코드의 for문에서 조심할건…
- if - else로 하면 안된다. 공백/줄바꿈 글자도 5씩 더해버린다.
#include <stdio.h>
int main()
{
char s[1010];
fgets(s, sizeof(s), stdin);
for (int i=0; s[i]; i++)
{
if ('A' <= s[i] && s[i] <= 'Z')
{
s[i] += 5;
if (s[i] > 'Z') s[i] -= 26;
}
else if ('a' <= s[i] && s[i] <= 'z')
{
s[i] += 5;
if (s[i] > 'z') s[i] -= 26;
}
}
printf("%s", s);
return 0;
}