键盘坏了,因此输入的数字1,4和7不起作用。反过来,计算机输出下一个最低和下一个最高的数字,其中1,4和7都不是数字。
我的目标是检查数字并使用布尔函数输出true,然后输出下一个最高数字和下一个最低数字。我很确定我做了大部分我需要做的事情,但它没有成功。 我输入了444号,结果是443和445。 谢谢你的帮助。
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
bool containDigit(int number, int digit);
int main()
{
int number, digit, lowNum, highNum;
cout<<"Enter a number between 1 and 999 for the oven temperature: ";
cin>>number;
//1st digit
digit = number / 100;
containDigit(number, digit);
if (containDigit(number, digit) == true)
{
number = number - 100;
}
//2nd digit
digit = (number / 10) % 10;
containDigit(number, digit);
if (containDigit(number, digit) == true)
{
number = number - 10;
}
//3rd Digit
digit = number % 10;
containDigit(number, digit);
if (containDigit(number, digit) == true)
{
number = number - 1;
}
cout<<number<<endl;
getche();
return 0;
}
bool containDigit(int number, int digit)
{
if ((digit == 1) || (digit == 4) || (digit == 7))
{
return true;
}
else
{
return 0;
}
}
答案 0 :(得分:1)
该错误在containsDigit函数中。试试这个:
bool containDigit(int number, int digit) {
if(digit == 1 || digit == 4 || digit == 7) return true;
return false;
}
您必须使用==
代替=
。
此外,你实际上不需要number
参数。
此外,还可以进行多项优化。请亲自看看(这是你的作业)并考虑重复的代码。
答案 1 :(得分:0)
由于这看起来像是家庭作业,我将不再为你做这件事,并给你这些提示:
看起来你并不清楚“第一位数”是什么。它是左边的第一个(数百个)还是右边的(个)?看看你的代码并告诉自己它的每一部分将如何回答我的问题。
lowNum
或highNum
是否有可能与您的代码具有不同于number
的数字?怎么样? lowNum
和highNum
在哪里发生变化,以及如何变更?
另外,要扩展@Al Kepp所说的内容:当你有这样的功能时,尝试使用一些非常简单的输入进行测试,而不是直接假设它有效。这被称为(或类似于)“单元测试”,它要求您将程序划分为简单,独立的单元并单独测试它们。像containDigit(999, 4)
返回true
这样的简单调用就会响起警告。
说到警告,总是始终使用尽可能多的人来编译。 (例如-Wall
gcc
}这样做可能会警告您,您根本没有在number
内使用参数containDigit
。
答案 2 :(得分:0)
您的函数containsDigit有两个问题: