1

2 つの質問について助けが必要です。それは宿題ではなく、試験のために勉強することです。試験では 1 ページ分のノートが許可されていたので、これらの質問が必要です。この 2 つの簡単な質問に答えていただければ幸いです。質問は次のとおりです。

  1. 「getGrades と呼ばれる関数を作成します。ユーザーが負の値を入力して停止するまで、ユーザーに正の整数を繰り返し要求する関数。関数は、これらの成績の平均と最高の成績を返す必要があります。」

  2. "student 構造体へのポインタを取る Get_Info と呼ばれる関数を記述します (3 つのフィールドがあります: name と呼ばれる char 配列、int id、および double gpa) を唯一の引数として使用します。構造体を埋めて、適切なフィールドに保存します。」

これまでのところ、それらが正しいかどうか、何か追加する必要があるかどうかを教えてください。

1.

double getGrades() {
  double average;
  double i;
  For(i=1 ; i<i; i++)
  {
  printf("Enter Grade1:\n");
  scanf("%lf", &i);
  }
  if (i<0)
  {

  (double) average == (grade1 + grade2 + grade3) / 3;
  return average;
}
 }

2.

typedef struct {
  int id;
  double gpa;
  char name[SIZE];
} student; 

void Get_Info(student list[], int num) {
  int i;
  for(i=0; i<num; i++) {
    printf("\nName:%s", list[i].name);
    printf("\nGPA:%lf", list[i].gpa);
    printf("\nID: %d\n", list[i].id);
  }
}
4

3 に答える 3

1

#1: 要件は、関数がints を受け入れることです。sをスキャンしていdoubleます。

要件は、「関数はこれらの成績の平均と最高の成績を返す必要がある」です。2 つの異なる出力が必要な場合、1 つの double のみを返します。

for ループは "For" (C は大文字と小文字が区別されます) として記述され、 test に基づいていますi<i。私はいつ自分自身よりも小さくなりますか??

これが私のバージョンです。

double getGrades(int* max)
{
    int sum = 0;
    int input;
    int i = 0;
    *max = 0;

    printf("Enter Grade #%d:\n", i+1);
    scanf("%d", &input);

    while (input > 0) {
        if (*max < input) {
            *max = input;
        }

        sum = sum + input;
        i++;

        printf("Enter Grade #%d:\n", i+1);
        scanf("%d", &input);
    }

    return i? ((double)sum / i) : 0;
}
于 2012-04-29T04:07:40.153 に答える
0

#2 は #1 よりもはるかに優れていますが、まだいくつかのエラーがあります。

要件は、関数が配列ではなく、学生の構造体へのポインターを取ることです。

次に、一連のプロンプトを出力し、一連の回答を取得する必要があります (#1 で行ったように)。
これはprintf/のシーケンスですscanf

また、 を使用するscanf場合は、通常、 を使用して変数の ADDRESS を渡します&
(ただし、文字列は例外です)

これが私のバージョンです:

typedef struct {
  char name[SIZE];
  int id;
  double gpa;
} student; 

void Get_Info(student* ps) {
    printf("Enter Name\n");
    scanf("%s", ps->name);

    printf("Enter ID:\n");
    scanf("%d", &ps->id);

    printf("Enter GPA\n");
    scanf("%lf", &ps->gpa);
}
于 2012-04-29T04:27:23.997 に答える
0

これを試して。それは十分に直感的に見えるはずです:

double getGrades() {
double average;
double grade;
double total = 0;
int count = 0;
while (1) {
    printf("Enter grade: ");
    scanf("%d", &grade);
    if (grade < 0) {
        if (count == 0) {
              average = 0;
              break;
        }
        average = total/count;
        break;
    }
    count++;
    total += grade;
}
return average;
}
于 2012-04-29T04:06:56.153 に答える