1

我最近才开始学习 Objective-C(或相关的编程)并且被困在一个简单的程序上。

我试图创造硬币、硬币、镍币和便士的变化,但注意到我提出的解决方案会给镍币或便士随机赋予价值。

前任。25 的变化会变成“变化是 1 季度,0 角钱,-1881139893 镍币和 4096 便士”

例 2。30 的零钱会变成“零钱是 1 夸特,0 角钱,1 镍币和 4096 便士”

我可以添加/更改什么来解决此问题?

另外,有没有更好的解决方案,然后必须运行 4 个不同的 if 语句?

谢谢!

下面是我的代码:

int orig, q, d, n, p;

NSLog(@"Give money to make change");
scanf("%i", &orig);

if(orig >= 25) {
    q = orig/25;
    orig -=  q*25;
}
if(orig >= 10 && orig < 25) {
    d = orig/10;
    orig -= d*10;
}
if(orig >= 5 && orig < 10) {
    n = orig/5;
    orig -= n*5;
}
if(orig >= 1 && orig < 5) {
    p = orig;
}

NSLog(@"The change is %i quarter, %i dime, %i nickels, and %i pennis", q, d, n, p);
4

2 回答 2

4

你没有初始化你的变量开始,所以它们都以随机值开始,然后在你的代码中,在没有便士的情况下,你永远不会将 p 设置为任何东西,所以它保留它的初始随机值,然后你在你的输出中看到。您可以通过在开始时初始化变量来修复它。

int orig=0, q=0, d=0, n=0, p=0;
于 2010-10-11T19:57:18.753 回答
3

您应该改用模数。我不想破坏您的学习体验,因此这是一个示例,说明如何使用模数计算仅以秒为单位的时间的天、小时、分钟和秒。

int x = 1123123; 
int seconds = x % 60;
x /= 60;
int minutes = x % 60;
x /= 60;
int hours = x % 24;
x /= 24;
int days = x;

现在将其应用于您的问题:)

于 2010-10-11T19:40:54.050 回答