介绍类c# for循环问题
本文关键字:循环 问题 for | 更新日期: 2023-09-27 18:08:45
我正在为我的c#入门级课程做以下两个问题。我已经完成了第三题,但是第四题还有些困难。问题是,总不是出来正确的,因为它没有添加输入的第一个组合值,我不太确定我在哪里错了。我很感激你们能提供的任何帮助。请记住,这是一个入门级的课程,所以它需要简单的for循环,if then语句,do while语句等。下面是我到目前为止的代码:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter number of customers: ");
var numCust = Convert.ToInt32(Console.ReadLine());
int lunchCombo = 0;
decimal total = 0;
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
for ( int i = 1; i < numCust; i++ )
switch (lunchCombo)
{
case 1:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
total = total + 4.25M;
break;
case 2:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
total = total + 5.75M;
break;
case 3:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
total = total + 5.25M;
break;
case 4:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
total = total + 3.75M;
break;
default:
Console.WriteLine("Invalid input");
break;
}
Console.WriteLine("Your total is {0}", total);
Console.ReadKey();
}
}
某餐厅提供4种套餐供顾客选择:
套餐1:炸鸡配沙拉[价格:4.25]套餐2:烤牛肉配土豆泥[价格:5.75]套餐3:炸鱼薯条[价格:5.25]套餐四:汤和沙拉[价格:3.75]编写程序询问顾客点了哪种套餐。使用开关报表来确定和显示客户需要支付的金额。如果顾客点了菜单上没有的东西,显示"无效输入"。不要使用if…else语句
展开程序3计算一组客户的应付总额。该程序首先询问该组中的客户数量。然后它用一个循环一个接一个地取顺序。如果一位顾客点了菜单上没有的菜,忽略他的点单,继续找下一位顾客。使用组中的客户数量来确定循环将执行多少次。不要要求用户输入一个特殊的值,比如-1来停止循环。计算并显示团队需要支付的总金额。
您需要询问客户他们想要在 switch语句之外的组合。我将使用伪代码,所以我不会直接为你做作业:
var total = 0;
var numCust = "How Many Customers?"
for (int i = 0; i < numCust; i++){
var combo = "What Combo do you want?"
switch (combo){
case 1:
total += 4.25;
break;
case 2:
total += 5.25;
break;
case 4:
total += 5.75;
break;
}
}
write("The total is: " + total);
您将需要在代码开头读取的客户数量的另一个循环中添加现有的订购逻辑。这是逻辑,但你应该写代码。如果这里有人帮你写代码,我不认为这能帮你学到任何东西。
loop (numCust) {
read order number;
loop (lunchCombo) {
add to total;
}
}
在for循环的开始和switch语句之前,您需要有以下两行中的每一行的一个实例:
Console.WriteLine("Enter lunch combo purchased");
lunchCombo = Convert.ToInt32(Console.ReadLine());
然后打开用户选择的午餐组合。
另外,for循环应该从i = 0循环到i <或者从i><= numCust。或者从i>
在i = 0而不是i = 1处开始for循环会更容易。然后在for循环中,要求用户输入switch语句
之外的午餐组合for (int i = 0; i < numCust; i++)
{
Console.WriteLine("What is this customer's order?");
lunchCombo = Convert.ToInt32(Console.ReadLine());
switch (lunchCombo)
{
case 1:
total = total + 4.25M;
break;
case 2:
total = total + 5.75M;
break;
case 3:
total = total + 5.25M;
break;
case 4:
total = total + 3.75M;
break;
default:
Console.WriteLine("Invalid input");
break;
}
}
考虑从1开始的效果,以及在哪里为i停止计数器
也就是说你从1开始计数到n-1,这意味着如果你循环的时间比你预期的少一次。因此,如果numCustomers为4,循环结果为:
i starts at | 0 | 1 | 2 | 3 | 4 |
---------------------------------
i loop... | 4 | 3 | 2 | 1 | 0 |
所以如果我从1开始,我没有经过足够的次数。您需要做两个更改中的一个。将i更改为从0开始,或者将比较更改为<=。都可以。
不要担心,这是一个常见的错误!
(感谢Quantic的评论回答!)