我有问题。这段代码没有给出它应该得到的结果。它应该向控制台输出大数,并且由于某种原因它在执行此操作时忽略了if语句。此外,在此程序中,InputNum
应保留为长数据类型。
#include <iostream>
#include <fstream>
using namespace std;
/*
Function Name: CalculateBinary
CalculateBinary takes a number from the main function and finds its binary form.
*/
void CalculateBinary(long InputNum)
{
//Takes InputNum and divides it down to "1" or "0" so that it can be put in binary form.
if ( InputNum != 1 && InputNum != 0)
CalculateBinary(InputNum/2);
// If the number has no remainder it outputs a "0". Otherwise it outputs a "1".
if (InputNum % 2 == 0)
cout << "0";
else
cout << "1";
}
void main()
{
// Where the current number will be stored
long InputNum = 3000000000;
//Opens the text file and inputs first number into InputNum.
// ifstream fin("binin.txt");
// fin >> InputNum;
// While Input number is not 0 the loop will continue to evaluate, getting a new number each time.
while (InputNum >= 0)
{
if(InputNum > 1000000000)
cout << "Number too large for this program ....";
else
CalculateBinary(InputNum);
cout << endl;
//fin >> InputNum;
}
}
答案 0 :(得分:5)
CalculateBinary(InputNum)
不会修改InputNum
的值,因此它的值将始终相同(300000000),而while循环永远不会结束。
答案 1 :(得分:0)
if
语句不被忽略;你只是没有修改InputNum
。它始终保持其初始价值。您按值传递InputNum
,而不是按引用传递。因此,CalculateBinary()
正在使用InputNum
。
答案 2 :(得分:0)
是的,它将是无限的。那是因为你有一个:
while (InputNum >= 0)
在main
行,但你从不更改InputNum的值!
完全删除while
循环。当你从binin.txt
开始阅读你的数字时,你似乎可能需要它,但肯定还没有。
答案 3 :(得分:0)
看起来您希望文件中的最后一个数字小于0来终止您的程序。相反,最好检测文件的结尾。尝试取消注释文件代码并使用while条件:
while (fin.good())