我正在编写一些代码来计算 GPA,当我开始一个循环时,我的一个变量“numClasses”在循环中途将值更改为一个巨大的数字,我无法弄清楚发生了什么。
#include <stdio.h>
int main()
{
float crdtHrs[] = {}; //Credit hours for this term
float numClasses; //Amount of classes taken this term
float qltyPoints[] = {}; //Quality points for term
float classes[] = {}; //Array for class grades
printf("Please enter total number of classes -> ");
scanf("%f", &numClasses);
float a = numClasses; //using new variable because this way the loop works
for(int i = 1; i <= a; i++)
{
printf("\nGPA class #%d -> ", i);
scanf("%f", &classes[i - 1]);
printf("Credit hours for course -> ");
scanf("%f", &crdtHrs[i - 1]);
printf("%f", numClasses); //at some point of my loop numClasses changes value
}
return(0);
}
最佳答案
不错的零长度数组缓冲区溢出。繁荣。让我们安排一下,稍后声明数组,这样我们就可以给它们指定大小。
printf("Please enter total number of classes -> ");
scanf("%f", &numClasses);
int a = (int)numClasses;
float crdtHrs[a]; //Credit hours for this term
float qltyPoints[a]; //Quality points for term
float classes[a]; //Array for class grades
现在我们以正确的大小在堆栈上分配数组。
关于c - 变量在循环中途发生变化,我不知道是什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66021087/