gpt4 book ai didi

c++ - 为什么这个 while 循环不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:30 24 4
gpt4 key购买 nike

好的,所以我正在尝试使用 while 循环创建一个程序来查找两个数的最大公约数。这就是我想出的。但是,据我所知,当我运行该程序时,该程序似乎完全跳过了循环。 (操作数保持为 0,除数总是返回等于 num1)。那里有人可以帮助新手吗?

/* Define variables for divisors and number of operations */

int num1, num2, divisor, opers;
opers = 0;

/* Prompt user for integers and accept input */

cout << "Please enter two integers with the smaller number first, separated by a space. ";
cout << endl;
cin >> num1 >> num2;

/* Make divisor the smaller of the two numbers */

divisor = num1;

/* While loop to calculate greatest common divisor and number of calculations */

while ( (num1 % divisor != 0 ) && ( num2 % divisor != 0 ) )
{

divisor--;
opers++;
}

/* Output results and number of calculations performed */

cout << "The greatest common divisor of " << num1 << " and " << num2 << " is: ";
cout << divisor << endl << "Number of operations performed: " << opers;

最佳答案

一旦其中一个模数返回非 0,while 循环就会终止。 (因此,如果您的任何输入立即导致模数为 0,则不会进入循环)

你可能想要的:

while ( (num1 % divisor != 0 ) || ( num2 % divisor != 0 ) )
{

divisor--;
opers++;
}

这将继续循环,直到两个模运算的结果均为 0。

关于c++ - 为什么这个 while 循环不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1607409/

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