求 2 个学生的平均值
Finding average for 2 students
我是 运行 一个程序,用于 计算 2 个学生的平均值 。我遇到了麻烦 运行。出于某种原因,它说 找不到 。这是我第一次使用 Visual Studio,我不确定我的代码是问题还是程序。
请检查是否有错误并告诉我。
#include <stdio.h>
int main(void)
{
int firstGrade1;
int sGrade1;
int tGrade1;
int fGrade1;
int TotalGrade1 = (firstGrade1 + sGrade1 + tGrade1 + fGrade1);
int AveGrade1 = (TotalGrade1 / 4);
printf("Please enter Student 1 first grade:\n");
scanf("%d", &firstGrade1);
printf("Please enter Student 1 second grade:\n");
scanf("%d", &sGrade1);
printf("Please enter Student 1 third grade:\n");
scanf("%d", &tGrade1);
printf("Please enter Student 1 fourth grade:\n");
scanf("%d", &fGrade1);
int firstGrade2;
int sGrade2;
int tGrade2;
int fGrade2;
int TotalGrade2 = (firstGrade2 + sGrade2 + tGrade2 + fGrade2);
int AveGrade2 = (TotalGrade2 / 4);
printf("Please enter Student 2 first grade:\n");
scanf("%d", &firstGrade2);
printf("Please enter Student 2 second grade:\n");
scanf("%d", &sGrade2);
printf("Please enter Student 2 third grade:\n");
scanf("%d", &tGrade2);
printf("Please enter Student 2 fourth grade:\n");
scanf("%d", &fGrade2);
printf("1. Student 1 grades:");
printf("%d", firstGrade1, sGrade1, tGrade1, fGrade1);
printf(". Average is ");
printf("%d\n", AveGrade1);
printf("2. Student 2 grades:");
printf("%d", firstGrade2, sGrade2, tGrade2, fGrade2);
printf(". Average is ");
printf("%d", AveGrade2);
system("pause");
return (0);
}
这里是
int TotalGrade1 = (firstGrade1 + sGrade1 + tGrade1 + fGrade1);
并没有告诉它 TotalGrade1
将永远是这 4 个变量相加的值。它将这些变量的 当前 值的总和分配给 TotalGrade1
。由于那些未初始化,这是未定义的行为。将 TotalGrade1
和 AveGrade1
的计算移动到读入这些值之后,当然,TotalGrade2
和 AveGrade2
也是如此。
此外,请考虑以下打印:
printf("%d", firstGrade1, sGrade1, tGrade1, fGrade1);
您正在打印四个 int
,为什么只有一个格式说明符?格式字符串应为 "%d %d %d %d"
.
我建议始终注意编译器的警告。通常你的编译器应该警告你不正确的 printf
格式字符串以及使用未初始化的变量。
附带说明一下,您有很多代码重复。如果您没有两个学生和四个年级,而是一百个学生每个十个年级怎么办?想象一下代码量,以及代码的工作量 copy/pasting。相反,尝试这样的事情:
int main(void)
{
int Grade[2][4];
int AveGrade[2];
int TotalGrade[2];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 4; j++) {
printf("Please enter Student %d j. grade:\n", i + 1, j+1);
scanf("%d", &Grade[i][j]);
}
TotalGrade[i] = 0;
for (int j = 0; j < 4; j++)
TotalGrade[i] += Grade[i][j];
AveGrade[i] = (TotalGrade[i] / 4);
}
for (int i = 0; i < 2; i++) {
printf("%d. Student %d grades:", i+1, i+1);
for (int j = 0; j < 4; j++)
printf("%d ", Grade[i][j]);
printf(". Average is ");
printf("%d\n", AveGrade[i]);
}
system("pause");
return (0);
}
我是 运行 一个程序,用于 计算 2 个学生的平均值 。我遇到了麻烦 运行。出于某种原因,它说 找不到 。这是我第一次使用 Visual Studio,我不确定我的代码是问题还是程序。
请检查是否有错误并告诉我。
#include <stdio.h>
int main(void)
{
int firstGrade1;
int sGrade1;
int tGrade1;
int fGrade1;
int TotalGrade1 = (firstGrade1 + sGrade1 + tGrade1 + fGrade1);
int AveGrade1 = (TotalGrade1 / 4);
printf("Please enter Student 1 first grade:\n");
scanf("%d", &firstGrade1);
printf("Please enter Student 1 second grade:\n");
scanf("%d", &sGrade1);
printf("Please enter Student 1 third grade:\n");
scanf("%d", &tGrade1);
printf("Please enter Student 1 fourth grade:\n");
scanf("%d", &fGrade1);
int firstGrade2;
int sGrade2;
int tGrade2;
int fGrade2;
int TotalGrade2 = (firstGrade2 + sGrade2 + tGrade2 + fGrade2);
int AveGrade2 = (TotalGrade2 / 4);
printf("Please enter Student 2 first grade:\n");
scanf("%d", &firstGrade2);
printf("Please enter Student 2 second grade:\n");
scanf("%d", &sGrade2);
printf("Please enter Student 2 third grade:\n");
scanf("%d", &tGrade2);
printf("Please enter Student 2 fourth grade:\n");
scanf("%d", &fGrade2);
printf("1. Student 1 grades:");
printf("%d", firstGrade1, sGrade1, tGrade1, fGrade1);
printf(". Average is ");
printf("%d\n", AveGrade1);
printf("2. Student 2 grades:");
printf("%d", firstGrade2, sGrade2, tGrade2, fGrade2);
printf(". Average is ");
printf("%d", AveGrade2);
system("pause");
return (0);
}
这里是
int TotalGrade1 = (firstGrade1 + sGrade1 + tGrade1 + fGrade1);
并没有告诉它 TotalGrade1
将永远是这 4 个变量相加的值。它将这些变量的 当前 值的总和分配给 TotalGrade1
。由于那些未初始化,这是未定义的行为。将 TotalGrade1
和 AveGrade1
的计算移动到读入这些值之后,当然,TotalGrade2
和 AveGrade2
也是如此。
此外,请考虑以下打印:
printf("%d", firstGrade1, sGrade1, tGrade1, fGrade1);
您正在打印四个 int
,为什么只有一个格式说明符?格式字符串应为 "%d %d %d %d"
.
我建议始终注意编译器的警告。通常你的编译器应该警告你不正确的 printf
格式字符串以及使用未初始化的变量。
附带说明一下,您有很多代码重复。如果您没有两个学生和四个年级,而是一百个学生每个十个年级怎么办?想象一下代码量,以及代码的工作量 copy/pasting。相反,尝试这样的事情:
int main(void)
{
int Grade[2][4];
int AveGrade[2];
int TotalGrade[2];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 4; j++) {
printf("Please enter Student %d j. grade:\n", i + 1, j+1);
scanf("%d", &Grade[i][j]);
}
TotalGrade[i] = 0;
for (int j = 0; j < 4; j++)
TotalGrade[i] += Grade[i][j];
AveGrade[i] = (TotalGrade[i] / 4);
}
for (int i = 0; i < 2; i++) {
printf("%d. Student %d grades:", i+1, i+1);
for (int j = 0; j < 4; j++)
printf("%d ", Grade[i][j]);
printf(". Average is ");
printf("%d\n", AveGrade[i]);
}
system("pause");
return (0);
}