0

これまでのところ、swapステートメントを使用して整数を降順にソートする必要がありますが、機能していません

#include <stdio.h>
int main()
{
int round, num1, num2;
for (round =0; round <= 3; round++)
printf("Enter two integers: \n");
scanf("%d, %d", &num1, &num2);
printf("The numbers in descending order:  %d, %d\n", num1,num2);
return 0;
}
void swap(int num1,int num2)
{
if (num1 < num2);
swap (num2, num1);
}
4

4 に答える 4

1

ヒント: 一時変数を使用して数値を交換します。

int temp;
temp = num1;
num1 = num2;
num2 = temp;
于 2013-10-28T23:28:05.507 に答える
1
void swap(int *a, int *b)
{
    if(*a < *b) {
        int temp;
        temp = *a;
        *a = *b;
        *a = temp;
    }
}

これをメインから呼び出すには:

swap(&num1, &num2);

また、プログラムを読みやすくするために、関数を呼び出すべきではありませんswap。それは呼ばれるsortDescか、それが何をしているのかを実際に説明するものでなければなりません。呼び出される関数swapは 2 つの値を無条件に交換する必要がありますが、条件に従って 2 つの値を並べ替えようとしています。

于 2013-10-28T23:28:31.623 に答える
1

Cswap()関数では引数が値で渡されるため、関数が間違っています。したがって、呼び出された関数で行われた変更は、呼び出しを行う関数では表示されません。

2 番目の問題は、main() でスワップ関数を呼び出していないことです。

于 2013-10-28T23:30:09.177 に答える
0

一時変数を使用せずに行うこともできます。

num1 = num1+num2;
num2 = num1-num2;
num1 = num1-num2;

数値の交換が気に入っていただければ幸いです :) コーディングをお楽しみください。

于 2013-10-28T23:56:04.683 に答える