私は3つの数字を取り、それらを最小から最大まで印刷しようとしています。現在のwhile{}の本体とwhile{}の2番目の本体(下部)は、main()にある間は機能しますが、while{}の現在の本体は機能しません。 }(下部)は機能します。
基本的に私は{}体をしなければなりません。これらは両方とも関数main()で機能します。独自の関数で機能するのは1つだけで(2つ目は一番下にあります)、完全なコードに示されているものが機能する必要があります。何か案は???助けてくれてありがとう!
動作しないということは、コンソールが3つのintが入力された後に待機することを意味します。
#include <stdio.h>
#include <stdlib.h>
void sortThree(int *a, int *b, int *c);
int main(int argc, char *argv[])
{
int a, b, c, hold;
printf("Please input three numbers\n"
"with a space between each and then press enter: ");
scanf("%lf %lf %lf", &a, &b, &c);
sortThree( &a, &b, &c);
printf("\n\n%lf %lf %lf", a, b, c);
system("PAUSE");
return 0;
}
void sortThree(int *a, int *b, int *c)
{
while ((*a>*b)||(*b>*c)||(*a>*c))
{
if (*a>*b)
*b = (*a += *b -= *a) - *b;
if (*b>*c)
*b = (*c += *b -= *c) - *b;
if (*a>*c)
*c = (*a += *c -= *a) - *c;
}
}
これは2番目のwhile{}本体です。main()内および独自の関数内で機能します。
if (*a>*b)
{
int hold;
hold= *a;
*a = *b;
*b = hold;
}
if (*b>*c)
{
int hold;
hold= *b;
*b = *c;
*c = hold;
}
if (*a>*c)
{
int hold;
hold= *a;
*a = *c;
*c = hold;
}