|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #define ARTICHOKE 1.25
- #define BEET 0.65
- #define CARROT 0.89
- #define POINT1 5
- #define POINT2 20
- #define POINT1_FREE 3.5
- #define POINT2_FREE 10
- #define POINT2_INSIDE 8
- #define POINT2_INSIDE_FREE 0.1
- int main(void)
- {
- int i ;
- char ch , ch_2 ;
- int flag = 1 ; //控制START中的循环
- double num ; //给用户进行输入磅数
- double artichoke = 0 , beet = 0 , carrot = 0 ; //每一个种类的费用
- double remeber_art = 0 ,remeber_beet = 0 ,remeber_carr = 0; //每一个种类的磅数
- double all ;
- /******************************************************************************这段进行选择表格的输出***********/
- START:
- while (flag)
- {
- for (i = 0 ; i < 50 ; i ++)
- {
- putchar('*');
- }
- putchar('\n');
- flag ++ ;
- if (flag == 3)
- {
- break ;
- }
- printf("Input letters into the corresponding option.\n");
- printf("a)areichoke\t\tb)beet\nc)carrot\t\tq)quit\n");
- }
- /****************************************erltjljerltjl*****************************************************************/
- flag = 1 ; //当跳转回到START的时候,用到flag,所以要赋值为1
- /*******************************************************************从while开始进行检测输入***********************/
- while ((ch = getchar()) != 'q')
- {
- if ('a' <= ch && ch <= 'c')/*****************************输入正确进入这里**********************/
- {
- switch (ch) //根据ch的值选择一个进行输出,提示用户所要输出的值
- {
- case 'a':printf("please enter artichoke numbers:\n");break ;
- case 'b':printf("please enter beet numbers:\n");break ;
- case 'c':printf("please enter carrot numbers:\n");break ;
- }
- while(1) //无论什么情况都进入这里给用户输入值(磅数)
- {
- ch_2 = scanf("%lf",&num);
- if(ch_2 == 1)/**用户输入的值正确就进入*/
- {
- switch (ch)//这里的switch用来累计磅数,
- { //因为用户可能输入两次同一类的值(例如输入两次a)
- case 'a': remeber_art += num ;break ;
- case 'b': remeber_beet += num ;break ;
- case 'c': remeber_carr += num ;break ;
- }
- getchar() ; //因为在用户输入scanf中的值得时候
- //缓冲区里还有回车键的值,所以用这个来
- //把回车键的值去掉
- while (1)
- {
- printf("Enter 'y' to next,enter 'q' to quit.\n");
-
- ch_2 = getchar() ;
- if (ch_2 == 'y')
- {
- getchar(); //同上
- goto START;
- }
- else if (ch_2 == 'q')
- {
- goto END;
- }
- else
- {
- printf("your enter is wrong,please enter again.\n");
- }
- while ((ch_2 = getchar()) != '\n') //像这种类型的都是用来获取缓冲区中多余的东西
- {
- continue ;
- }
- }
- }
- else
- {
- printf("your enter is wrong.please enter again.\n");
- while ((ch_2 = getchar()) != '\n')
- {
- continue ;
- }
- }
- }
- }
- else
- {
- printf("your enter is wrong,please enter again.\n");
- while ((ch = getchar()) != '\n')
- {
- continue ;
- }
- }
- }
- /*************************下面这段代码用来判断订单是不是100$及以上。和统计总钱数***********************************************/
- END: if ((remeber_art * ARTICHOKE + remeber_beet * BEET + remeber_carr * CARROT) >= 100)
- {
-
- if (remeber_art <= POINT1)
- {
- artichoke = remeber_art * ARTICHOKE + POINT1_FREE;
- }
- else if (POINT1 < remeber_art && remeber_art < POINT2)
- {
- artichoke = remeber_art * ARTICHOKE + POINT2_FREE;
- }
- else
- {
- artichoke = remeber_art * (ARTICHOKE + POINT2_INSIDE_FREE) + POINT2_INSIDE;
- }
-
-
- if (remeber_beet <= POINT1)
- {
- beet = remeber_beet * BEET + POINT1_FREE;
- }
- else if (POINT1 < remeber_beet && remeber_beet < POINT2)
- {
- beet = remeber_beet * BEET + POINT2_FREE;
- }
- else
- {
- beet = remeber_beet * (BEET + POINT2_INSIDE_FREE) + POINT2_INSIDE;
- }
-
- if (remeber_carr <= POINT1)
- {
- carrot = remeber_carr * CARROT + POINT1_FREE;
- }
- else if (POINT1 < remeber_carr && remeber_carr < POINT2)
- {
- carrot = remeber_carr * CARROT + POINT2_FREE;
- }
- else
- {
- carrot = remeber_carr * (CARROT + POINT2_INSIDE_FREE) + POINT2_INSIDE;
- }
- all = carrot + beet + artichoke ;
- all *= 0.5 ;
- }
- else
- {
-
- if (remeber_art <= POINT1)
- {
- artichoke = remeber_art * ARTICHOKE + POINT1_FREE;
- }
- else if (POINT1 < remeber_art && remeber_art < POINT2)
- {
- artichoke = remeber_art * ARTICHOKE + POINT2_FREE;
- }
- else
- {
- artichoke = remeber_art * (ARTICHOKE + POINT2_INSIDE_FREE) + POINT2_INSIDE;
- }
-
-
- if (remeber_beet <= POINT1)
- {
- beet = remeber_beet * BEET + POINT1_FREE;
- }
- else if (POINT1 < remeber_beet && remeber_beet < POINT2)
- {
- beet = remeber_beet * BEET + POINT2_FREE;
- }
- else
- {
- beet = remeber_beet * (BEET + POINT2_INSIDE_FREE) + POINT2_INSIDE;
- }
-
- if (remeber_carr <= POINT1)
- {
- carrot = remeber_carr * CARROT + POINT1_FREE;
- }
- else if (POINT1 < remeber_carr && remeber_carr < POINT2)
- {
- carrot = remeber_carr * CARROT + POINT2_FREE;
- }
- else
- {
- carrot = remeber_carr * (CARROT + POINT2_INSIDE_FREE) + POINT2_INSIDE;
- }
- all = carrot + beet + artichoke ;
- }
-
- printf("\n\n\n%lf\n",all);
- return 0 ;
- }
复制代码
|
|