我是一年级的大学生,正在为我的初学者编程课从事一个项目。我正在尝试向用户询问一个代表起始金额的值,该值必须大于或等于零。在调试程序时,我注意到当我输入一个负值时,程序会要求我重新输入一个大于或等于零的值(就像应该这样),但是初始负值被分配给了变量进行计算,导致输出错误。我想知道是否有人对如何将正值分配给变量有任何想法。
我有一个函数,要求用户输入一个值,将该值存储在变量中,然后将变量返回给主函数。在我的主函数中,我有一个等于函数调用的变量集。初始化之后,我尝试使用while循环和if语句来检查该值是否小于零,如果是,请告诉用户输入应大于或等于零,然后再次调用该函数。
int main(){
int initialSize = getInitialSize();
if (initialSize < 0) {
printf("Initial size must be greater than or equal to 0");
getInitialSize();
}
}
int getInitialSize() {
int startingAmount;
printf("Enter initial size: ");
scanf("%d", &startingAmount);
return startingAmount;
}
我还尝试过将if语句放入函数getInitialSize本身中,但这也不是解决方案。
答案 0 :(得分:1)
我还建议添加一个测试,以确保用户实际上输入了一个有效的 ,因为如果他们输入了垃圾,那么startingAmount
变量将没有合理的含义根本没有价值。
int getInitialSize() {
int startingAmount;
do
{
printf("Enter initial size: ");
} while (scanf("%d", &startingAmount) < 1 || startingAmount < 0);
return startingAmount;
}
现在,它循环循环询问用户输入的 是不是他们输入的有效数字 还是输入的数字都不令您满意。
答案 1 :(得分:0)
因此,在第一次检查时,您已经初始化了变量initialSize
,但是当您想重新计算它时,会丢失一个赋值。由于您想重复查询该值直到它为非负值,因此应该使用循环。
int initialSize = getInitialSize();
while (initialSize < 0) {
printf("Initial size must be greater than or equal to 0");
initialSize = getInitialSize();
}
答案 2 :(得分:-1)
#include <stdio.h>
int getInitialSize();
int main(){
int initialSize = getInitialSize();
if (initialSize < 0) {
printf("Iinitial size must be greater than or equal to 0");
getInitialSize();
}
return 0;
}
int getInitialSize() {
int startingAmount;
printf("Enter initial size: ");
do{
scanf("%d", &startingAmount);
}while(startingAmount<0);
return startingAmount;
}
在这里使用像这样的循环。 Ofc与此相关,您无需在main中进行检查。