我正试图让这个程序将用户定义的美元金额分解为最少的账单。我不认为我的for循环正在运行,因为如果我在其中放入一条写行线,它在运行时就不会出现。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication13
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter the amount of money: $");
int totalAmount = Convert.ToInt32(Console.ReadLine());
calculateNumberOfBills(totalAmount);
}
static void calculateNumberOfBills(int totalAmount)
{
int[] denominations = { 20, 10, 5, 1 };
int[] numberOfBills = new int[4];
for (numberOfBills[0] = 0; totalAmount < 20; numberOfBills[0]++)
{
totalAmount = totalAmount - 20;
}
for (numberOfBills[1] = 0; totalAmount < 10; numberOfBills[1]++)
{
totalAmount = totalAmount - 10;
}
for (numberOfBills[2] = 0; totalAmount < 5; numberOfBills[2]++)
{
totalAmount = totalAmount - 5;
}
for (numberOfBills[3] = 0; totalAmount <= 0; numberOfBills[3]++)
{
totalAmount = totalAmount - 1;
}
Console.WriteLine("Number of twenties" + numberOfBills[0]);
Console.WriteLine("Number of tens" + numberOfBills[1]);
Console.WriteLine("Number of fives" + numberOfBills[2]);
Console.WriteLine("Number of ones" + numberOfBills[3]);
}
}
}
答案 0 :(得分:2)
看看这个:
for (numberOfBills[0] = 0; totalAmount >= 20; numberOfBills[0]++)
{
totalAmount = totalAmount - 20;
}
for (numberOfBills[1] = 0; totalAmount >= 10; numberOfBills[1]++)
{
totalAmount = totalAmount - 10;
}
for (numberOfBills[2] = 0; totalAmount >= 5; numberOfBills[2]++)
{
totalAmount = totalAmount - 5;
}
for (numberOfBills[3] = 0; totalAmount > 0; numberOfBills[3]++)
{
totalAmount = totalAmount - 1;
}
答案 1 :(得分:2)
这是一个家庭作业问题,对吧?
for (numberOfBills[0] = 0; totalAmount < 20; numberOfBills[0]++)
制作
for (numberOfBills[0] = 0; totalAmount >= 20; numberOfBills[0]++)
再试一次:) 中心部分是循环运行的条件。
答案 2 :(得分:1)
对不起,此时这“不是一个真正的问题”,很可能被标记为家庭作业。
您的“小于”比较应更改为“大于”比较,您最好使用您的解决方案。现在发生的是一个整数溢出,最终导致你的第一个for循环,这个循环无限循环直到那时才会中断。
有更简单的方法可以解决您的问题,尝试使用单循环和模运算符)。
答案 3 :(得分:0)
在“for”循环中,你有逆条件=&gt; totalAmount&lt; 20意味着它执行循环而totalAmount 小于大于20 - 这与你想要的相反。
将其更改为
for(...;totalAmount > 20; ...)
答案 4 :(得分:0)
试试这个,少一些代码
int amt = 73;
Dictionary<int, int> dic = new Dictionary<int, int>() {{20,0},{10,0},{5,0},{1,0}};
int[] keys =new int[dic.Count];
dic.Keys.CopyTo(keys, 0);
foreach (int i in keys)
{
if (amt >= i)
{
dic[i] = amt / i;
amt = amt % i;
}
}