键盘坏了,所以输入数字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;
}
}发布于 2012-10-23 00:30:56
因为这看起来像家庭作业,我将不为你做,并给你以下提示:
看上去你不太清楚什么是“第一位数”。是左边的第一个(几百个)还是右边的(一个)?看看您的代码,并告诉自己,它的每一部分将如何回答我的问题。
lowNum或highNum是否有可能在代码中有多个数字与number不同?多么?lowNum和highNum在哪里发生了变化,如何改变?
此外,为了扩展@ Also所说的内容:当您有这样的函数时,尝试使用一些非常简单的输入来测试它,而不是假设它正常工作。这被称为(或类似于)“单元测试”,它要求您将程序划分为简单、独立的单元,并分别对它们进行测试。一个简单的电话,比如containDigit(999, 4)返回true,就会敲响警钟。
说到警告,总是要尽可能多地编译它们。(例如,-Wall for gcc)这样做可能会提醒您,您根本没有在containDigit中使用参数number。
发布于 2012-10-23 00:29:14
bug在containDigit函数中。试试这个:
bool containDigit(int number, int digit) {
if(digit == 1 || digit == 4 || digit == 7) return true;
return false;
}您必须使用==而不是=。而且,您实际上不需要number参数。
此外,还可以进行几个优化。请自己看(这是你的家庭作业),并考虑重复的代码。
发布于 2012-10-23 00:40:26
您的函数containDigit有两个问题:
https://stackoverflow.com/questions/13021918
复制相似问题