0

これは私がこのサイトで見つけた質問ですが、回答は私が考えている問題とは直接関係がありませんでした. まだまだ素人なので恥ずかしいです。入力したい GPA の数をユーザーに尋ねています。次に、各インデックスの入力を求めています。問題は、各インデックスが 0 を返すことです。そのため、変数の型またはインデックスをインクリメントする方法を台無しにしていると確信しています。これは宿題の問題であり、私は完全なプレゼントよりもガイダンスを求めています.

#include<stdio.h>

main()
{
      char Rspns; 
      int i, toCount, Total;
      float GPA[toCount];

      printf("\n\tYou can average up to 30 GPAs.");
      printf("\n\tPlease choose how many GPAs you would like to average:");
      scanf(" %d" , &toCount); 

      //assign how many indexes array should have
      for(i = 0; i<toCount; i++)
            GPA[i] = i++;


            do
                {

                system("cls");
                printf("\n\nEnter a GPA:");
                scanf(" %f" , &GPA); 
                printf(" %f" , GPA[i]);
               Total += GPA[i];

               getch();
               system("cls");
               printf("\n\n\tWould you like to average the current amount of GPA's?");
               printf("\n\nY/N: ");
               scanf(" %c" , &Rspns);

                       if(Rspns == 'y' || Rspns == 'Y')
                               {

                               Total = Total / toCount;
                               printf("The average of those GPAs is %.1f" , Total);
                               getch();

                               }// end response

                }while(i<=toCount);//end forCount
                Total = Total / toCount;


 } 
4

4 に答える 4

0

配列全体をスキャンするのではなく、特定のフロートをスキャンする必要があると思います

scanf("%f", &GPA[i]);

また、型を確認してくださいprintf。コンパイラは警告を吐き出しています。

于 2012-10-18T22:33:06.043 に答える
0
int i, toCount, Total;
float GPA[toCount];

toCountこの時点では初期化されていません。

Total += GPA[i];

ここでも同じでTotal、不確定な値で始まります。

于 2012-10-18T22:19:01.657 に答える
0

これ

scanf(" %f" , &GPA); 

あなたがやりたいことは絶対にありません.Cでは配列とポインタが密接に関連していることを覚えておいてください - this SO answer を参照してください

scanf(" %f" , &(GPA[i]) ); 

値を配列の i 番目の要素にスキャンします

于 2012-10-18T22:27:47.290 に答える
0

GPA 配列を固定サイズに初期化し、toCount が 1 から最大値の間であることを検証するか、メモリ割り当て関数 malloc または calloc を使用して、サイズがわかったら GPA 配列を動的に割り当てます (そして、使用が終了したら解放します)。

「配列にいくつのインデックスを割り当てる必要があるかを割り当てる」と言う場所で何をしようとしているのかわかりませんが、後で上書きする配列に値を入力する必要はありません (上記のように calloc を使用できます)それらをすべてゼロに初期化します)。常に最初の要素である &GPA ではなく、GPA 配列の i 番目の要素 (&GPA[i]) をスキャンする必要があることに注意してください。

また、ループごとに i を 2 回インクリメントしているため、i++ にも注意してください。コードのその部分は不要ですが、一般的には注意が必要です。

于 2012-10-18T22:30:46.743 に答える