0

なぜ私のifelseif else ifステートメントが機能していないのですか?

   printf ("Enter 1 for midtern1 sorting , 2 for midterm2 sorting , 3 for final sorting\n");
   scanf ("%d",sort);

   if (sort=1){
      midterm1(x);
      for (i=9;i>=0;i--){
      printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].mid1);}}
   else if (sort=2){
        midterm2(x);
        for (i=9;i>=0;i--){
        printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].mid2);}}
   else if (sort=3){
        final(x);
        for (i=9;i>=0;i--){
        printf ("%s %s %d\n",x[i].name,x[i].surname,x[i].final);}}

(sort == 1)、(sort <= 1)を試しましたが、それでも同じ結果になりました。

4

6 に答える 6

7

2つの問題:

(1)代わりに

 if (sort=1)

あなたはおそらくしたい

 if (sort==1)

すべてのifステートメントで同様です。リマインダー'='は割り当てで'=='あり、ブール比較に使用されます。

(2)

scanf ("%d", sort);
             ^

ニーズ&

scanf ("%d", &sort);
             ^

これらは両方とも、残念ながら一般的な問題/間違いです。コンパイラの警告レベルを上げると、これらのいくつかを回避するのに役立つ場合があります。

于 2012-08-09T16:09:42.347 に答える
4

==の代わりに使用する必要があり=ます。1つ目は比較、2つ目は割り当てです。

于 2012-08-09T16:10:01.940 に答える
2
if (sort=1){

needs to be

if (sort==1){

In your code, you're just assigning sort the value of 1 rather than comparing.

于 2012-08-09T16:10:27.857 に答える
1

Multiple else if statements can often be made more readable by replacing them with a switch case statement - see here for syntax http://msdn.microsoft.com/en-us/library/66k51h7a(v=vs.80).aspx

于 2012-08-09T16:12:04.660 に答える
0

他のみんなが言っているように、すべてのif /elseifステートメント==ではなく使用する必要があります。=

switchこの状況でステートメントを使用することについてのbUKaneerの提案も確認する必要があります

于 2012-08-09T16:15:39.657 に答える
0

この行は正しくありません

scanf ("%d",sort);

scanf値が格納される変数へのポインタが必要です。に変更しました

scanf ("%d",&sort);

また、if-else ifステートメント内のすべての比較が正しくありません。==割り当て()の代わりに比較()を使用し=ます。

if-else if代わりに、ステートメントを構成に置き換えることを検討してくださいswitch - case。読みやすさが向上します。

于 2012-08-09T16:15:48.457 に答える