我正在用c 打一個程式,它需要一個數字并做以下事情。
如果該數字是3的倍數,但不是5的倍數,則輸出為Fizz。
- 如果數字是3的倍數但不是5的倍數,則輸出為Fizz。
如果數字是5的倍數,但不是3,則輸出為Buzz。
如果數字是5和3的倍數,則輸出為FizzBuzz。
如果數字既不是3的倍數,也不是5的倍數,它只是列印出一個數字。
當我用15作為測驗輸入來編譯代碼時,我沒有得到預期的輸出:
我沒有得到預期的輸出。
1
2
菲斯
4 4 Fizz
嗡嗡聲
菲斯
7 Fizz
8 嗡嗡聲
菲斯
嗡嗡聲
11 Fizz Buzz
菲斯
13 Fizz
14 翡冷翠
菲茲巴茲
我得到的卻是這樣的結果
FizzBuzz
1
2
菲斯
4 嗡嗡聲
嗡嗡聲
菲斯
7 Fizz
8 嗡嗡聲
菲斯
嗡嗡聲
11 Fizz Buzz
菲斯
13 Fizz
14 翡冷翠
菲茲巴茲
我的代碼如下:
#include <bit/stdc .h>
#include <iostream>
使用 命名空間 std.com.cn>。
string ltrim(const string & )。
string rtrim(const string &);
void fizzBuzz(int n) {
for(int i = 0; i <= n; i )
{
if(i % 3 == 0 & & i % 5 != 0)
{
cout << "Fizz" << endl;
}
if (i % 3 != 0 & & i % 5 == 0)
{
cout << "Buzz" << endl;
}
if (i % 3 != 0 && i % 5 !=0)
{
cout << i << endl;
}
if (i % 3 == 0 & & i % 5 == 0)
{
cout << "FizzBuzz" << endl;
}
}
}
int main()
{
字串n_temp。
getline(cin, n_temp)。
int n = stoi(ltrim(rtrim(n_temp))。
fizzBuzz(n)。
return 0;
}
string ltrim(const string &str){
string s(str)。
s.erase(
s.begin()。
find_if(s.begin(), s. end(), not1(ptr_fun<int, int> (isspace))
);
return s;
}
string rtrim(const string &str){
string s(str)。
s.erase(
find_if(s.rbegin(), s. rend(), not1(ptr_fun<int> (isspace))。 base()。
s.end()
);
return s;
}
我想知道我做錯了什么,使得輸出中出現了額外的一行,任何建議都將受到極大的贊賞!
我想知道我做錯了什么,使得輸出中出現了額外的一行。
uj5u.com熱心網友回復:
For回圈應該從1開始。
void fizzBuzz(int n) {
for(int i = 1; i <= n; i ){
if(i % 3 == 0 & & i % 5 ! = 0) cout << "Fizz" << endl;
if (i % 3 ! = 0 && i % 5 == 0) cout << "Buzz"/span> << endl;
if (i % 3 ! = 0 && i % 5 != 0) cout < < i < < endl;
if (i % 3 == 0 & & i % 5 == 0) cout << "FizzBuzz" << endl;
}
}
uj5u.com熱心網友回復:
@JIN的答案是正確的,因為0是3和5的兩倍。然而,我想進一步建議你改變你檢查條件的順序。
目前,您檢查的是3的倍數,然后是5的倍數,然后是兩者的倍數,然后是15的倍數。這很有效,但是如果我們像這樣檢查的話,我們可以不用編碼而更有效率:
if (i % 3 == 0 & & i % 5 == 0) {
//15的倍數.。
}
else if (i % 3 == 0) {
//如果我們到達這個階段,并且知道i能被3整除,
//然后我們*知道*它未能通過第一個條件的唯一原因。
//是它*不*能被5整除,所以我們不需要檢查。
// that.
//3的倍數.。
}
else if (i % 5 == 0) {
// 如同前面的條件,如果我們在這里,我們知道
//i不是3的倍數。
//5的倍數。
}
else {
//必須是3和5的倍數。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/321865.html
標籤:
上一篇:垂直滾動到水平滾動再到垂直滾動
下一篇:做......而回圈不終止
