好的,所以一个月前上课,秋季学期开始在3个星期内恢复.我想在书中做我们从未分配的作业.这个问题让我陷入困境,因为它在第二章中.它是一个给予改变的程序(92美分是编译时初始化).我的问题是......有没有什么方法可以使这个程序更"虚拟"而不是它.而且我还必须把(int)放在我对aQuarter,anDime等的分配之前.否则我之后会得到小数.这是为什么?有经验的程序员能解释一下吗?
另外,本章讨论了MOD,这就是我使用它的原因.这是在引入类方法之前,显然是在循环和数组之前.所以我不能使用任何这些工具.应该只是一个非常基本的"洞穴人"计划......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication273
{
class Program
{
static void Main(string[] args)
{
double change = 0.92;
double quarter = 0.25;
double dime = 0.10;
double nickel = 0.05;
double pennies = 0.01;
double anQuarter = (int)(change / quarter);
double anDime = (int)((change % quarter) / dime);
double anNickel = (int)(((change % quarter) % dime) / nickel);
double anPennies = (int)((((change % quarter) % dime) % nickel) / pennies);
Console.WriteLine("The amount of quarters are....{0}", anQuarter);
Console.WriteLine("The amount of dimes are....{0}", anDime);
Console.WriteLine("The amount of nickels are....{0}", anNickel);
Console.WriteLine("The amount of pennies are....{0}", anPennies);
}
}
}
Run Code Online (Sandbox Code Playgroud)
至少使用十进制:.NET中十进制,浮点数和双精度之间的差异?
然后删除重复的代码:在http://ideone.com/ZY9qBm上查看
using System;
class Program
{
static void Main()
{
decimal change = 0.92m;
var coins = new [] { // ordered
new { name = "quarter", nominal = 0.25m },
new { name = "dime", nominal = 0.10m },
new { name = "nickel", nominal = 0.05m },
new { name = "pennies", nominal = 0.01m }
};
foreach (var coin in coins)
{
int count = (int) (change / coin.nominal);
change -= count * coin.nominal;
Console.WriteLine("{0} {1}", count, coin.name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
打印
3 quarter
1 dime
1 nickel
2 pennies
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10719 次 |
| 最近记录: |