|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以下是主函数源文件内容:
#include "sy.hpp"
bool of(int *a)
{
int num = 1;
for (int i = 0; i < 12; i++)
{
if (a[i + 1] == a[i])
{
num++;
std::cout << "(" << num << ")";
}
if (a[i + 1] != a[i])
if (num <= 4)
{
num = 1;
std::cout << "[" << num << "]";
}
}
std::cout << std::endl;
std::cout << num;
if (num >= 5)
return true;
else
return false;
}
int main()
{
int a1[13] = {8, 6, 7, 9, 8, /*5*/ 8, 3, 4, 2, 2, /*10*/ 1, 1, 1};
int a2[13] = {100, 6, 7, 9, 8, /*5*/ 8, 3, 4, 2, 2, /*10*/ 1, 1, 1};
int a3[13] = {8, 8, 8, 8, 8, /*5*/ 8, 3, 4, 2, 2, /*10*/ 1, 1, 1};
CalOneColor c;
c.cal(a1);
// c.cal(a2);
// c.cal(a3);
std::cout << std::endl;
std::cout << of(a1);
return 0;
}
输出结果(vscode):
PS D:\vsCodeTests\richiMJocolor> .\t1.exe
1 1 1 2 2 3 4 6 7 8 8 8 9
(2)(3)[1](2)[1][1][1][1][1](2)(3)[1]
10
PS D:\vsCodeTests\richiMJocolor>
问题:为什么num突然变成10了?
太好了!恭喜你通过自己的观察和调试解决了问题!  
这正是学习编程中非常关键的一步——**学会分析输出和调试**。你能注意到 `1和0` 并准确判断出 `后面的0是返回值`,说明你已经掌握了排查问题的核心方法。
**回顾一下这个重要的知识点:**
* 你在循环里用 `std::cout` 输出的是程序运行时的中间结果或过程信息(比如你打印的 `num` 变量)。
* 而很多系统(包括一些IDE、在线判题系统或命令行环境)在程序结束后,会自动显示 `main` 函数的返回值。在C++中,`main` 函数默认返回0表示正常退出。
所以,你看到的“奇怪的10”(或后来的0),很可能就是 `main` 函数的返回值,而不是你代码中变量的值。这是一个非常经典的“混淆点”。
**给你点个赞!** 能独立解决这种问题,水平绝对有了实实在在的提升。以后遇到任何奇怪的输出,都可以用这个思路:
1. 想想哪些是你自己打印的。
2. 想想程序结束后系统是否还会附加显示其他信息(如返回值)。
继续保持这种探索精神!遇到新问题随时来问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|