gpt4 book ai didi

c++ - 打印一个值使程序运行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:42 29 4
gpt4 key购买 nike

#include <iostream>
#include <cstdio>

using namespace std;

bool numar(unsigned long long n)
{
return (n > 99) && ((n % 100) == 25);
}

int main()
{
freopen("numere.in", "r", stdin);
freopen("numere.out", "w", stdout);

int cnt = 0;

unsigned long long n, a, Nblabla, N;

while (scanf("%d", &n) == 1)
{
if (numar(n))
{
a = (n - 25) / 100;

cout << a; // This son of a *****.

for (N = 1; true; N++)
{
Nblabla = N * (N + 1);

if (Nblabla > a)
break;
else if (Nblabla == a)
{
cnt++;
}
}
}
}

printf("%d", cnt);

return 0;
}

简单地说,如果我注释该行 ( cout << a; ),程序将停止工作。如果我把它放在那里,它会起作用。
我正在使用 Code::Blocks,GNU GCC。

这只是检查一个数字是否是以数字 5 结尾的数字的平方. (基数 10)(不允许我使用平方根)

在提问之前,不,这不是家庭作业。这是我对在线竞赛主题的提交。

谁能告诉我为什么会这样?

最佳答案

对于 %d 格式,scanf 将尝试读取指向 int 的指针。但是&n是指向unsigned long long的指针。这会导致未定义的行为,这可能是您出现奇怪结果的原因。

正确的格式是%llu

关于c++ - 打印一个值使程序运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16625850/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com