c – FizzBuzz灾难
作者:互联网
我想通过敲击一个快速的fizzbuzz应用程序来测试我的C技能.它的代码发布在下面.但是,当我运行此应用程序时,会发生一些疯狂的事情这是我的代码:
#include <iostream>
#include <string>
using namespace std;
bool ismultiple3(int i) {
int res = i%3;
if (res == 0)
return true;
return false;
}
bool ismultiple5(int i) {
int res = i%5;
if (res == 0)
return true;
return false;
}
int main() {
string output;
for (int i = 1; i <= 100; i++) {
output = i;
if (ismultiple5(i) || ismultiple3(i)) {
output = "";
if (ismultiple3(i)) output.append("Fizz");
if (ismultiple5(i)) output.append("Buzz");
}
cout << output;
}
}
因此,当我运行并编译它时,我的整个终端都搞砸了.看起来字符编码在某种程度上被改变了.它仍然正常接受命令,它只是看起来.我跑了一个ls来证明这一点.
编辑:如果有人遇到这个,我最后添加了一个else语句并做了cout<<我在其中,因为我的计算机的g编译器缺乏C 11支持.这些函数也被缩短并组合成一个函数,它接受2个参数i和n.
解决方法:
正如其他评论者所说,输出=我是这里的问题. i的值从int转换为char,当运行该循环时,输出字符串的序列为ASCII characters.例如,97 ==’a’,144 ==’É’,依此类推.
我会考虑重写main函数中的逻辑,只需要三个cout<< ...在if-else块内调用.另外,为了简洁起见,ismultipleN()函数可以简单地用(i%3 == 0)代替.
标签:fizzbuzz,c,terminal 来源: https://codeday.me/bug/20190901/1784172.html