반응형
코드를 보기 전에: 많은 사람들이 수를 입력 받았을때 각 자리를 어떻게 구하는지 고민을 할것이다.
일일이 나누기 그리고 나머지를 구하면서 각 자리를 구할수도 있지만, 1,000,000,000은 그렇게 하기는 너무 큰 수이다.
그러므로 문자열로 입력받는것도 방법이라고 알려주고 싶다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include <stdio.h>
#include <stdlib.h>
int main()
{
char num[11] = { 0, }; // 최대가 1,000,000,000이므로, 문자열의 크기를 11로 잡았다.
scanf("%s", num); // 문자열은 입력받을때 &을 적지 않아도 된다.
int size = strlen(num);
int tmp;
for (int a = 0; a < size; a++)
{
for (int b = a; b < size; b++)
{
if (num[a] < num[b])
{
tmp = num[a];
num[a] = num[b];
num[b] = tmp;
/* 내림차순은 큰 수가 앞으로 와야하므로, a와 b를 비교해 a가 더 작으면 b와 a위치를 바꾸는 방법을 택했다. */
}
}
}
for (int a = 0; a < size; a++)
{
printf("%c", num[a]);
}
}
|
cs |
반응형