gpt4 book ai didi

c++ - 检查偶数位数字的和/积是否为数字的除数

转载 作者:行者123 更新时间:2023-11-28 03:04:35 32 4
gpt4 key购买 nike

编写一个程序,输出特定范围内的所有数字,这些数字可以除以它们的偶数位置的和与乘积。同时,如果偶数位置有0,忽略它。我在下面编写了程序,但是由于某种原因运行时它似乎崩溃了。没有错误,程序运行正常,然后我输入范围并崩溃。

#include <iostream>

using namespace std;

int zbirparnicifri(int x);
int proizparnicifri(int x);

int main()
{
int x, y, br = 0;
cin >> x >> y;

for (int i = x; i <= y; i++){
int proizcif = proizparnicifri(i);
int zbircif = zbirparnicifri(i);
if(zbircif != 0 && proizcif != 0){
if (i % proizcif == 0 && i % zbircif == 0){
cout << i << endl;
br++;
}
}
}

return 0;
}

int zbirparnicifri(int x)
{
int sum = 0;
while(x > 0){
if (x % 100 != 0)
sum += x % 100;
x /= 100;
}
return sum;
}

int proizparnicifri(int x)
{
int proiz = 1;
while(x > 0){
if (x % 100 != 0)
proiz *= x % 100;
x /= 100;
}
return proiz;
}

最佳答案

欢迎来到堆栈溢出。你不能指望社区调试你的程序,除非你表现出诚实的努力来自己尝试一些事情。例如,您是否尝试添加一些 print/cout 语句来发现您的程序在哪一行崩溃(以及某些变量的值)?您是否尝试过使用调试器单步执行。

既然心情大好,那就看看调试器怎么说吧……

jselbie@judaspriest ~ $ gdb a.out
GNU gdb (GDB) 7.5-ubuntu
Copyright (C) 2012 Free Software Foundation, Inc....
Reading symbols from /home/jselbie/a.out...done.
(gdb) run
Starting program: /home/jselbie/a.out
10
20

Program received signal SIGFPE, Arithmetic exception.
0x00000000004009f5 in main () at foo.cpp:17
17 if (i % proizcif == 0 && i % zbircif == 0){
(gdb) print i
$1 = 10
(gdb) print proizcif
$2 = 0
(gdb) print zbircif
$3 = 0

好了,“proizcif”为零。以及 zbifcif 为零。所以它在第 17 行试图计算“i % 0”时崩溃

关于c++ - 检查偶数位数字的和/积是否为数字的除数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034497/

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