你好!这段程序有一处错误,当输入成绩的时候应该使用 p+i 来获取第 i 个学生的成绩,而不是 *p。以下是正确的代码:#include <stdio.h>#include <stdlib.h>#define STUDENT_NUM 4 //学生的人数。注意,此例中该宏定义为4,实际测试中可能定义为其它正整数int main() { int* p, sum = 0; p = (int*)malloc(STUDENT_NUM * sizeof(int)); //动态分配内存,用于存储学生的成绩 if (p == NULL) printf("Memory allocation failed!\n"); //内存分配失败 else { for (int i = 0; i < STUDENT_NUM; i++) { //注意:所要填的空之后有分号 scanf("%d", p + i); //输入一名学生的成绩(并存储在p所指向的动态分配的某处内存空间中) sum += *(p + i); } printf("Average: %.2f\n", 1.0 * sum / STUDENT_NUM); for (int i = STUDENT_NUM - 1; i >= 0; i--) printf("%d\n", *(p + i)); free(p); } return 0;}
在此代码中,我们使用 `p+i` 来访问第 i 个学生的成绩,并使用 `*(p+i)` 来获取该学生的成绩。接下来,我们使用循环来输入学生的成绩,并计算总分。最后,我们按照逆序打印每个学生的成绩,并释放动态分配的内存。
希望对你有帮助!如果还有其他问题,请随时向我提问。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 |