문제 설명
정수 10개가 공백을 기준으로 한 줄에 입력되어 배열 a에 저장된다.
이 값들 중 가장 큰 값과 두 번째로 큰 값을 차례대로 공백을 기준으로 한 줄에 인쇄하라
예를 들어 1 23 435 20 -29 20 1234 -45 24 100 이 입력된다면
가장 큰값이 1234이고 그 다음이 435이므로 1234 435가 인쇄되어야 한다.
만약 가장 큰 값과 같은 값이 여럿일 경우 가장 큰 값과 두 번째로 큰 값은 같은 값이 된다.
예를 등어 1 2 3 4 9 9 8 7 6 5 일 경우 1등, 2등은 모두 9 이므로 9 9가 인쇄되어야 한다.
다음 코드를 사용하되 필요한 변수는 임의로 선언하여 사용한다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(void)
{
int a[10];
int i;
for(i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
// 코드 작성
}
입력 예시
1 23 435 20 -29 20 1234 -45 24 100
출력 예시
1234 435
정답 코드
#if 0
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(void)
{
int a[10];
int i;
for(i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
int n;
for(n = 0; n < 2; n++)
{
int r = 0;
int t;
for(i = 1; i <= 9 - n; i++)
{
if(a[i] > a[r])
{
r = i;
}
}
t = a[i-1];
a[i-1] = a[r];
a[r] = t;
}
printf("%d %d", a[9], a[8]);
}
#endif
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main(void)
{
int a[10];
int i;
for(i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
int r[2] = {0,1};
if(a[r[0]] < a[r[1]])
{
r[0] = 1;
r[1] = 0;
}
for(i = 1; i < 10; i++)
{
if(a[i] > a[r[1]])
{
r[1] = i;
if(a[i] > a[r[0]])
{
r[1] = r[0];
r[0] = i;
}
}
}
printf("%d %d", a[r[0]], a[r[1]]);
}
메모
printf 내부의 \n 습관화 필요