1

我需要两个问题的帮助,不是作业,而是为考试而学习。我需要有这些问题,因为我被允许为考试提供一整页的笔记。如果你能帮我解决这两个简单的问题,那就太好了。以下是问题:

  1. “写一个叫getGrades的函数。这个函数反复提示用户输入正整数,直到用户输入负值停止。该函数应该返回这些成绩的平均值和最高成绩。”

  2. “编写一个名为 Get_Info 的函数,该函数将一个指向学生结构的指针(具有三个字段:char 数组称为 name、一个 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。您正在扫描doubles。

要求是“函数应该返回这些成绩的平均值和最高成绩”。当需要两个不同的输出时,您只返回一个 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,您通常使用 传递变量的地址&
(但字符串是个例外)

这是我的版本:

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 回答