作者tony80720 (tony)
看板C_Sharp
标题[问题] 关於FOR回圈
时间Wed Mar 23 09:20:01 2011
小弟我是个新手
想要写出目前所需要金额一直写不出来
EX:请输入欲购买张数 5
请输入欲购买者年龄 18
您目前所需给予的金额为 40
请输入欲购买者年龄 20
您目前所需给予的金额为 80
但是一直跑不出正确的数值
所以想PO程式码
请教各位先进
以下是我的程式码
-----------------------------------------------
int amount;
double price = 0;//宣告一个名称为price、初始值为0的变数
double a = 0;
int adultticket = 0, oldticket = 0, childticket = 0;
Console.WriteLine("请输入欲购买总张数:");
amount = int.Parse(Console.ReadLine());
int[] age = new int[amount];
double[] charge = new double[amount];
for (int i = 0 ; i < amount; i++ )
{
Console.WriteLine("请输入欲购买者年龄:");
age[i] = int.Parse(Console.ReadLine());
double price1 = 0;
double price2 = 0;
double price3 = 0;
double price4 = 0;
if (age[i] > 65)
{
Console.WriteLine("购买者为老人以老人票计");
oldticket = oldticket + 1;
}
else if (age[i] < 18)
{
Console.WriteLine("购买者为儿童以儿童票计");
childticket = childticket + 1;
}
else
{
Console.WriteLine("购买者为成人以成人票计");
adultticket = adultticket + 1;
}
if (age[i] > 65 )
{
int fee = 40;
price = fee * 0.3;
price1 = price * oldticket;
}
else if (age[i] < 18 )
{
int fee = 40;
price = fee * 0.5;
price2 = price * childticket;
}
else if (18 <= age[i] && age[i] <= 65 && amount > 5)
{
int fee = 40;
price = fee * 0.8;
price3 = price * adultticket;
}
else
{
int fee = 40;
price = fee;
price4 = price * adultticket;
}
charge[i] = price1 + price2 + price3 + price4;
for (int j = 0; j <= i; j++)
{
a = a + charge[j];
}
Console.WriteLine("您目前所需给予的金额为:" + a);
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.66.168.37
2F:→ arcred:我就好心提示你一下..你的xxxxxticket都是全域变数, 观察你 03/23 11:57
3F:→ arcred:的 input 跟 output 就可以猜到错在哪了 03/23 11:58
4F:→ arcred:另外, 每一轮都算一次sum不是个好方法. 定个全域变数每轮把 03/23 12:00
5F:→ arcred:当次算出的数字加上去就够达到你要的效果了 03/23 12:00
james732大大您说的方式 好像跟我想要的程式结果不太一样
照您所说的方式 年龄输入不同的话 会变成这样 例如 18岁 40元 73岁 12元
但是我是想要 18岁 40元 73岁 52元
arcred大大您说的 input 跟 output 就可以猜到错在哪了
可以麻烦您在讲解清楚点吗? 现在的我太菜了 看不太出来
※ 编辑: tony80720 来自: 61.60.254.9 (03/23 22:56)
6F:→ markov:怎不用switch比较方便? 03/23 23:00
7F:推 hatasum:adultticket为啥要++??用你的case,第一个人18岁 第二个人 03/23 23:34
8F:→ hatasum:40岁,第二次run的时候++变成2,後面当然就*2倍??? 03/23 23:35
9F:推 hatasum:而且後面还一直累加.....(a = a + charge[j];) 03/23 23:40
10F:→ hatasum:^^先想想整个流程、顺序,先在心里想一下回圈的跑法 03/23 23:41
11F:→ hatasum:再动手写,这会比还没想清楚,然後写完了再Debug还要更能 03/23 23:42
12F:→ hatasum:学到东西喔^^ 03/23 23:43
hatasum大大adultticket为啥要++? 这个想法我是想说要累计有几张成人票
之後再乘以成人票价格 这个想法有问题吗?
※ 编辑: tony80720 来自: 61.60.254.9 (03/24 02:22)
13F:推 arcred:那请列出一个您程式跑出的input跟output, 我告诉您如何观察 03/24 03:24
int oldticket = 0, childticket = 0;
Console.WriteLine("请输入欲购买总张数:");
amount = int.Parse(Console.ReadLine());
int[] age = new int[amount];
for (int i = 0 ; i < amount; i++ )
{
Console.WriteLine("请输入欲购买者年龄:");
age[i] = int.Parse(Console.ReadLine());
if (age[i] > 65)
{
Console.WriteLine("购买者为老人以老人票计");
oldticket = oldticket + 1;
}
else (age[i] < 18)
{
Console.WriteLine("购买者为儿童以儿童票计");
childticket = childticket + 1;
}
else
{
Console.WriteLine("购买者为成人以成人票计");
adultticket = adultticket + 1;
}
Console.WriteLine(oldticket);
Console.WriteLine(adultticket);
Console.WriteLine(childticket);
}
请问这是您说的INPUT、OUTPUT吗?
PS.我已经照您的方法写出正确的跑法了 不过还是有点不懂您说的INPUT OUTPUT
谢谢您
※ 编辑: tony80720 来自: 61.60.254.9 (03/24 10:23)
14F:推 arcred:原来你的问题在不了解术语的意思(其实也不是什麽术语) @@" 03/24 11:49
15F:→ arcred:input, output通常指使用者的输入值, 跟程式印出的值 03/24 11:49
16F:→ arcred:例如你原本的程式依序输入5,18,20的in会得到40,120的out 03/24 11:53
17F:→ tony80720:谢谢您我懂了 03/24 22:55
18F:推 clear000:我们刚刚上课在教这边耶哈哈 04/06 01:04
19F:→ clear000:还好我有些过来看 就知道怎麽打了 04/06 01:04