仅当值满足条件时才如何将值分配给变量?

我是一年级的大学生,正在为我的初学者编程课从事一个项目。我正在尝试向用户询问一个代表起始金额的值,该值必须大于或等于零。在调试程序时,我注意到当我输入一个负值时,程序会要求我重新输入一个大于或等于零的值(就像应该这样),但是初始负值被分配给了变量进行计算,导致输出错误。我想知道是否有人对如何将正值分配给变量有任何想法。

我有一个函数,要求用户输入一个值,将该值存储在变量中,然后将变量返回给主函数。在我的主函数中,我有一个等于函数调用的变量集。初始化之后,我尝试使用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本身中,但这也不是解决方案。

shine622 回答:仅当值满足条件时才如何将值分配给变量?

我还建议添加一个测试,以确保用户实际上输入了一个有效的 ,因为如果他们输入了垃圾,那么startingAmount变量将没有合理的含义根本没有价值。

int getInitialSize() {

   int startingAmount;

   do
   {
     printf("Enter initial size: ");
   } while (scanf("%d",&startingAmount) < 1  || startingAmount < 0);

   return startingAmount;
}

现在,它循环循环询问用户输入的 是不是他们输入的有效数字 还是输入的数字都不令您满意。

,

因此,在第一次检查时,您已经初始化了变量initialSize,但是当您想重新计算它时,会丢失一个赋值。由于您想重复查询该值直到它为非负值,因此应该使用循环。

   int initialSize = getInitialSize();

   while (initialSize < 0) {
      printf("Initial size must be greater than or equal to 0");
      initialSize = getInitialSize();
   }
,
#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中进行检查。

本文链接:https://www.f2er.com/3169980.html

大家都在问