HackerRank FizzBuzz题void函数编译错误:while前缺符号/count未使用求助
FizzBuzz代码问题排查
报错&警告原因
- 报错
expected ‘,’ or ‘;’ before ‘while’由两个语法错误导致:int count = 1行末尾缺少C语言强制要求的语句结束符;- 你混用了Python语法:C语言中while、if等控制语句的判断条件必须用小括号
()包裹,且不需要加冒号:作为代码块开头标记
- 警告
unused variable ‘count’是上述语法错误导致编译器无法正常识别后续代码中count的引用,语法修复后警告会自动消失
其他隐藏问题
- C语言标准输出函数为
printf而非print,直接使用print会触发未定义函数报错 - 现有逻辑存在重复输出问题:同时被3和5整除的数字会先输出Fizzbuzz,又会被第二个if判断命中输出Buzz,不符合需求
- 非5倍数的分支你错误输出了参数
n而非当前遍历的count,会导致所有非5倍数的数字全部打印为同一个值 - 打印需要补充换行符
\n否则所有输出会挤在同一行,打印数字需要用%d占位符匹配int类型参数
修正后完整可运行代码
#include <stdio.h> void fizzBuzz(int n) { int count = 1; while (count <= n) { if (count % 3 == 0 && count % 5 == 0) { printf("Fizzbuzz\n"); } else if (count % 3 == 0) { printf("Fizz\n"); } else if (count % 5 == 0) { printf("Buzz\n"); } else { printf("%d\n", count); } count++; } }
内容的提问来源于stack exchange,提问作者Franch Dressing
相关产品推荐
相关产品推荐

