[問題] 售票系統 可以用哪種方法精簡???
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int ticket,change,a,b,c,d,vip,k;
do
{
for(k=1;k<70;k++)
{
printf("*");
if(k%70==0)
printf("\n");
}
printf("\n");
start:
printf("\t\t\t<<歡迎訪客進入網路售票系統>>\n請選擇所要買的預售票\n(1)棒球
(2)籃球 (3)演唱會:");
scanf("%d",&ticket);
if(ticket==2 || ticket==3)
{
if(ticket==2)
{
printf("籃球票還沒開賣啦");
printf("\n");
}
if(ticket==3)
{
printf("演唱會票還沒開賣啦");
printf("\n");
}
goto end;
}
while(ticket<1 || ticket>3)
{
printf("\t\t\t===輸入錯誤!請重新輸入===\n");
printf("\t\t\t<<歡迎訪客進入網路售票系統>>\n請選擇所要買的預售票\n(1)棒球
(2)籃球 (3)演唱會:");
scanf("%d",&ticket);
}
}
while(ticket>3 && ticket<1);
{
if(ticket==1)
{
printf("請輸入你所需要的位子\n(1)貴賓 (2)下層 (3)上層:");
scanf("%d",&a);
while(a<1 || a>3)
{
printf("\t\t\t===輸入錯誤!請重新輸入===\n");
printf("請輸入你所需要的位子\n(1)貴賓 (2)下層 (3)上層:");
scanf("%d",&a);
}
{
if(a==1)
{
printf("請選擇張數:");
scanf("%d",&b);
vip=b*1500;
printf("你所訂購的是貴賓位%d張 總計是%d元",b,vip);
}
if(a==2)
{
printf("請選擇張數:");
scanf("%d",&b);
vip=b*1000;
printf("你所訂購的是下層位%d張 總計是%d元",b,vip);
}
if(a==3)
{
printf("請選擇張數:");
scanf("%d",&b);
vip=b*500;
printf("你所訂購的是上層位%d張 總計是%d元",b,vip);
}
}
do
{
printf("\n輸入是否正確\n(1)正確(2)錯誤(3)取消:");
scanf("%d",&c);
if(c==2)
{
goto start;
}
if(c==3)
{
goto end;
}
}
while(c<1 || c>1);
{
if(c==1)
printf("請輸入你所要付的金額:");
scanf("%d",&d);
change=d-vip;
if(change<0)
{
change=0-change;
do
{
printf("你所付的金額還差%d元\n",change);
printf("請輸入補足的金額:");
scanf("%d",&k);
}
while(k<change);
{
change=k-change;
}
}
if(change>0)
printf("找你的零錢為%d元\n",change);
}
end:
printf("\t\t\t<<歡迎再度使用網路售票系統>>\n");
for(k=1;k<70;k++)
{
printf("*");
if(k%70==0)
printf("\n");
}
printf("\n");
system("pause");
return 0;
}
}
}
我突然覺得
我這寫法 又臭又長
想請問一下 = =
還有什麼方法 能讓這寫法更少
寫到130行了
goto 這個語法是不是不好用 @@?
--
http://www.wretch.cc/album/fanyangshin
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.138.146.57
※ 編輯: gungygy 來自: 220.138.146.57 (06/29 19:48)
推
06/29 19:49, , 1F
06/29 19:49, 1F
推
06/29 20:30, , 2F
06/29 20:30, 2F
推
06/29 20:41, , 3F
06/29 20:41, 3F
推
06/29 21:24, , 4F
06/29 21:24, 4F
推
06/30 10:31, , 5F
06/30 10:31, 5F