其他分享
首页 > 其他分享> > c – FizzBu​​zz灾难

c – FizzBu​​zz灾难

作者:互联网

我想通过敲击一个快速的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