首页 > 解决方案 > 只有当值满足条件时,如何为变量赋值?

问题描述

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

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

标签: c

解决方案


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

int getInitialSize() {

   int startingAmount;

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

   return startingAmount;
}

现在它会循环询问用户是否输入有效数字输入的数字不令您满意。


推荐阅读