C++ 在不使用If/While/For语句或任何数据结构的情况下计算更改
我试图编写一个程序,生成最小的变化量(25美分、5美分、10美分、1美分),但规定我不能使用任何类型的if、for、while语句 我相信这是可能的,但我的能力非常有限,似乎不知道如何在不违反规则的情况下实现这一点 下面的代码可以工作,当它运行到值0时接受,然后在尝试使用0上的模时中断(我认为):C++ 在不使用If/While/For语句或任何数据结构的情况下计算更改,c++,C++,我试图编写一个程序,生成最小的变化量(25美分、5美分、10美分、1美分),但规定我不能使用任何类型的if、for、while语句 我相信这是可能的,但我的能力非常有限,似乎不知道如何在不违反规则的情况下实现这一点 下面的代码可以工作,当它运行到值0时接受,然后在尝试使用0上的模时中断(我认为): #包括 int main(){ 整数美分; 标准::美分; 四分之一整数=美分/25; 整数余数=美分%(四分之一*25); 整数一角=余数/10; 余数=余数%(十美分*10); 整数镍币=余数/5
#包括
int main(){
整数美分;
标准::美分;
四分之一整数=美分/25;
整数余数=美分%(四分之一*25);
整数一角=余数/10;
余数=余数%(十美分*10);
整数镍币=余数/5;
余数=余数%(镍币*5);
整数便士=余数/1;
std::cout在这行中:
remainder = remainder % (dimes*10);
允许余数变为0。这将导致此处被零除:
int nickels = remainder/5; //0
remainder = remainder % (nickels*5); // modulo 0 % 0
在这方面:
remainder = remainder % (dimes*10);
允许余数变为0。这将导致此处被零除:
int nickels = remainder/5; //0
remainder = remainder % (nickels*5); // modulo 0 % 0
你可以这样做,而无需将每枚硬币的出现次数乘以它的出现次数。(模数做的是你试图自然做的事情。)
这样,您在任何情况下都不会对数字0使用模数。您可以这样做,而无需将每枚硬币的出现次数乘以它的出现次数。(模数的作用与您自然尝试的相同。)
这样,您在任何情况下都不会在数字0上使用模数。若不使用if
进行此操作,您可以根据找到的硬币缩小美分并从那里继续。例如:
int quarters = cents / 25;
cents -= quarters * 25;
继续这样做。要在不使用if
的情况下执行此操作,您可以根据找到的硬币缩小美分,然后继续。例如:
int quarters = cents / 25;
cents -= quarters * 25;
继续这样操作。定义“中断”。是否中断故障?打印意外值(什么值)?擦除硬盘驱动器?定义“中断”。是否中断故障?打印意外值(什么值)?擦除硬盘驱动器?