절대값의 크기에 따라 오름차순으로 정렬하여 출력하는 프로그램
조회수 1274회
#include <stdio.h>
#include <stdlib.h>
void sortAbs(int* a, int* b, int* c);
int main()
{
int i;
int a, b, c = 0;
printf("세개의 정수를 입력하세요: ");
scanf_s("%d", &a);
scanf_s("%d", &b);
scanf_s("%d", &c);
sortAbs(a, b, c);
printf("%d %d %d", a, b, c);
return 0;
}
void sortAbs(int* a, int* b, int* c)
{
int * d, * e, * f;
d = abs(a);
e = abs(b);
f = abs(c);
if (*(d) > *(e))
{
f = *d;
*d = *e;
*e = f;
}
}
여기서 왜 실행이 안되는지 궁금합니다 -4 2 9 을 입력하면 2 -4 9이 출력이 되어야 하는 코드입니다
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
#include <stdio.h> #include <stdlib.h> void sortAbs(int* a, int* b, int* c); int main() { int a, b, c; printf("세개의 정수를 입력하세요: "); scanf_s("%d", &a); scanf_s("%d", &b); scanf_s("%d", &c); sortAbs(&a, &b, &c); printf("%d %d %d", a, b, c); return 0; } void sortAbs(int* a, int* b, int* c){ int tmp; if (abs (*a) < abs(*b)) { tmp = *a; *a = *b; *b = tmp; } if (abs (*a) < abs(*c)) { tmp = *a; *a = *c; *c = tmp; } if (abs (*b) < abs(*c)) { tmp = *b; *b = *c; *c = tmp; } }
sortAbs함수에 숫자를 넘겨주는 방법과 함수 안의 정렬하는 횟수를 수정했습니다.
정렬하는 숫자가 많아지면 정렬 종류 중에 하나를 사용하셔서 코드를 짜보시면 될 것 같습니다. 인터넷에 쳐보시면 버블정렬이라던가 쭉 있습니다.
포인터는 사용하는 방법에 관해 다시 한번 읽어보시면 좋을 것 같습니다.
댓글 입력