c - 只有当值满足条件时,如何为变量赋值?
问题描述
我是一名大学一年级学生,正在为我的初学者编程课程做一个项目。我试图向用户询问一个值,该值表示起始金额,该起始金额必须大于或等于零。当我调试我的程序时,我注意到当我输入一个负值时,程序要求我重新输入一个大于或等于零的值(就像它应该的那样),但是初始负值被分配给变量来进行计算,导致输出不正确。我想知道是否有人对如何将正值分配给变量有任何想法。
我有一个函数要求用户输入一个值,将该值存储在一个变量中,然后将该变量返回给主函数。在我的主函数中,我有一个变量集等于函数调用。在这个初始化之后,我尝试使用 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 本身中,但这也不是解决方案。
解决方案
我建议还添加一个测试以确保用户实际上输入了一个有效数字,因为如果他们输入了垃圾,那么该startingAmount
变量将根本没有合理的值。
int getInitialSize() {
int startingAmount;
do
{
printf("Enter initial size: ");
} while (scanf("%d", &startingAmount) < 1 || startingAmount < 0);
return startingAmount;
}
现在它会循环询问用户是否输入有效数字或输入的数字不令您满意。
推荐阅读
- python-3.x - python txt文件到多个txt文件
- python - 如何检查用户输入的姓名?
- c# - System.UnauthorizedAccessException Message=对路径“/C:\Users\user\Desktop\C\dok.txt”的访问被拒绝
- javascript - 在嵌入式谷歌表单上单击提交时显示弹出/对话框
- apache - .htaccess 如何在网站上显示特定 URL 的 503
- c# - 如何执行“内存”的最小分配转换
'进入'流'? - node.js - 图像预览而不是下载 AWS S3
- javascript - 无法在帖子中获取 req.body.username
- java - 如果任何测试失败,Selenium 如何不阻止测试的执行
- javascript - 无效的挂钩调用。Hooks 只能在内部调用