【发布时间】:2019-08-14 21:56:34
【问题描述】:
我一直在尝试将我的 python 转换为 C 代码,这是我第一次使用 C。
基本上我希望它询问我将输入多少个分数,然后将它们放入一个数组中。问题是数量不断放入数组中。我以为我可以在询问我输入的成绩后声明数组的大小,但我认为这就是问题所在。我不知道该怎么做。我有很多 printfs 用于调试。
有什么建议吗?
double enter_quiz_grades()
{
int quiz_amount,loop,i;
printf("Enter number of quiz grades to enter:");
scanf(" %d \n", &quiz_amount);
printf("You typed %d students\n",quiz_amount);
double temp=0;
double grades[quiz_amount];
for (loop = 0; loop<quiz_amount;loop++)
{
printf("loop is %d", loop);
i = loop+1;
printf("Enter grade for quiz %d: ",i);
scanf("%lf\n", &temp);
grades[loop] = temp;
printf("%lf",grades[loop]);
}
return 0.0;
}
【问题讨论】:
-
问题是scanf中的“\n”。在所有 scanfs 中删除 \n。它会按您的预期工作。
-
你不需要
temp变量,可以直接扫描到数组中:scanf("%lf", &grades[loop]) -
就目前而言,您实际上并不需要
grades数组。如果您稍后打算“返回成绩”,您将遇到几个问题,其中之一是return grades;将尝试返回指向函数退出后不再有效的局部变量的指针。另一个问题是如何与调用代码通信数组中有多少条目。这些问题是可以解决的——例如,使用malloc()和指向长度变量的指针进行动态内存分配——但很容易误入歧途。