昨天我尝试用c ++解决问题。问题出在著名的“ Fizzbuzz”上。将以数字作为输入。对于3的每一个倍数,打印“ Fizz”。对于5的每一个倍数,打印“嗡嗡声”。对于3和5的倍数的数字,请打印“ FizzBuzz”而不是数字。如果数字不是3、5或两者的倍数,它将打印该数字。
一个例子:如果我输入5,它将显示如下输出:12Fizz4Buzz
。但是问题是这位法官的模板代码如下:
#include<bits/stdc++.h>
using namespace std;
int FizzbuzzFunc(int num)
{
return 0;
}
int main()
{
int number;
cin>>number;
cout<<FizzbuzzFunc(number);
return 0;
}
每当我尝试通过将代码放入“ FizzbuzzFunc”来解决该问题时,它将在输出末尾打印一个额外的0。一个示例,如果我的代码看起来像这样:
#include<bits/stdc++.h>
using namespace std;
int FizzbuzzFunc(int num)
{
for(int i = 1; i <= num; i++)
{
if (i % 3 == 0 && i % 5 == 0)
{
cout<<"FizzBuzz";
}
else if(i % 3 == 0)
{
cout<<"Fizz";
}
else if(i % 5 == 0)
{
cout<<"Buzz";
}
else
{
cout<<i;
}
}
return 0;
}
int main()
{
int number;
cin>>number;
cout<<FizzbuzzFunc(number);
return 0;
}
,将输入设为5,则输出将如下所示:12Fizz4Buzz0
。
如何从输出中删除多余的0?
答案 0 :(得分:2)
如果声明该函数返回一个值,则它必须返回一个值。
从函数末尾流出就等于没有返回值 值;这导致返回值时出现不确定的行为 功能。
但是您的代码打印出额外的0
的原因是因为您告诉它:
cout<<FizzbuzzFunc(number);
不要使用cout
,只需调用函数即可。
FizzbuzzFunc(number);
此外,如果该函数不需要返回值,则可以将其返回类型设置为void
。
void FizzbuzzFunc(int num)
您可以使用return;
答案 1 :(得分:1)
执行cout<< FizzbuzzFunc(number);
而不是FizzbuzzFun(number);
。这样,您就不会打印该函数返回的值。如果不打算使用函数返回的值,则应使用void
返回类型声明该函数。
使您的FizzbuzzFunc()
函数返回如下的void
返回类型:void FizzbuzzFunc(int num)
。此版本的FizzbuzzFunc()
不返回任何值,因此您不必从函数内部执行return 0;
。