[英]2 questions on typedef struct and averages on grades. Am I doing it correctly In C?
我需要两个问题的帮助,这不是家庭作业,而是考试学习。 我需要回答这些问题,因为我可以参加1整页的考试笔记。 如果您能帮我这两个简单的问题,那就太好了。 这里是问题:
“编写一个名为getGrades的函数。该函数反复提示用户输入正整数,直到用户输入负值为止。该函数应返回这些成绩的平均值和最高成绩。”
“编写一个名为Get_Info的函数,该函数以一个指向学生结构的指针(具有三个字段:名为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);
}
}
在#1上:要求是函数接受int
。 您正在扫描double
。
要求是“该函数应返回这些等级的平均值和最高等级”。 当需要两个不同的输出时,您仅返回一个double。
您的for循环写为“ For”(C区分大小写),并且基于测试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;
}
尝试这个。 看起来应该足够直观:
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;
}
您的#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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.