zoukankan      html  css  js  c++  java
  • c primer plus 7编程练习

    1、

    #include <stdio.h>
    #include <ctype.h>
    
    int main(void)
    {
        char ch;
        int n_space = 0, n_lines = 0, n_other = 0; 
        
        
        while((ch = getchar()) != '#')
        {
            if(ch == ' ')
                n_space++;
            else if(ch == '
    ')
                n_lines++;
            else
                n_other++;
        }
        
        printf("n_space: %d;  n_lines: %d;  n_other: %d
    ", n_space, n_lines, n_other);
        
        return 0;
    } 

    #include <stdio.h>
    int main(void)
    {
        char ch;
        int blank = 0;
        int endline = 0;
        int others = 0;
        
        printf("please input chars(# to quit): ");
        
        while((ch = getchar()) != '#')
        {
            if(ch == ' ')
                blank++;
            else if(ch == '
    ')
                endline++;
            else
                others++;
        }
        
        printf("blank: %d;  endline: %d;  other: %d.
    ", blank, endline, others);
        
        return 0;
    }

    2、

    #include <stdio.h>
    
    int main(void)
    {
        char ch;
        int n = 1;
        
        while((ch = getchar()) != '#')
        {
            printf("%c→%d  ", ch, ch);
            if(n++ % 8 == 0)
                printf("
    ");
        }
        
        return 0;
    }

    #include <stdio.h>
    
    int main(void)
    {
        char ch;
        int counter = 0;
        printf("please input chars(# for exit): ");
        
        while((ch = getchar()) != '#')
        {
            if(counter++ % 8 == 0)
                printf("
    ");
            if(ch == '
    ')
                printf("\n-%03d  ", ch);
            else if(ch == '	')
                printf("\t-%03d  ", ch);
            else
                printf("%c-%03d  ", ch, ch);
        }
        
        return 0;
    }

    3、

    #include <stdio.h>
    
    int main(void)
    {
        int num;
        int n_even = 0;
        int sum_even = 0;
        int odd;
        int n_odd = 0;
        int sum_odd = 0;
        
    
        do
        {
            printf("please input the num(0 to quit): ");
            scanf("%d", &num);
            if(num % 2 == 0 && num != 0)
            {
                n_even++;
                sum_even += num;
            }
            if(num % 2 == 1)
            {
                n_odd++;
                sum_odd += num;
            }
        }
        while(num != 0);
        
        if(n_even > 0)
        {
            printf("n_even: %d.
    ", n_even);
            printf("average_even: %.2f.
    ", (double)sum_even / n_even);
        }
        else
            printf("no even num!
    ");
        
        printf("
    ");
        
        if(n_odd > 0)
        {
            printf("n_odd: %d.
    ", n_odd);
            printf("average_odd: %.2f.
    ", (double)sum_odd / n_odd);
        }
        else
            printf("no odd num!");
        
        return 0;
    }

    #include <stdio.h>
    
    int main(void)
    {
        int num;
        int n_even = 0;
        int sum_even = 0;
        int n_odd = 0;
        int sum_odd = 0;
        
        printf("please input the num(0 to quit): ");
        
        while(scanf("%d", &num) == 1)
        {
            if(num == 0)
                break;
            if(num % 2 == 0)
            {
                n_even++;
                sum_even += num;
            }
            else
            {
                n_odd++;
                sum_odd += num;
            }
            printf("please input the num(0 to quit): ");
        }
        
        putchar('
    ');
        
        if(n_even > 0)
        {
            printf("n_even: %d;  average_even: %.2f.
    ", n_even, (double)sum_even / n_even);
        }
        else
            printf("no even num inputed!.
    ");
        
        if(n_odd > 0)
        {
            printf("n_odd: %d;  average_odd: %.2f.
    ", n_odd, (double)sum_odd / n_odd);
        }
        else
            printf("no odd num inputed.
    ");
            
        return 0;
    }

    4、

    #include <stdio.h>
    int main(void)
    {
        int counter = 0;
        char ch;
        printf("please input chars(# for exit): ");
        
        while((ch = getchar()) != '#')
        {
            if(ch == '!')
            {
                printf("!!");
                counter++;
            }
            else if(ch == '.')
            {
                printf("!");
                counter++;
            }
            else
            {
                printf("%c", ch);
            }
        }
        printf("
    total times: %d.
    ", counter);
        
        return 0;
    }

    #include <stdio.h>
    
    int main(void)
    {
        char ch;
        int counter = 0;
        printf("please input chars(# for exit): ");
        
        while((ch = getchar()) != '#')
        {
            if(ch == '!')
            {
                printf("!!");
                counter++;
            }
            else if(ch == '.')
            {
                printf("!");
                counter++;
            }
            else
            {
                printf("%c", ch);
            }
        }
        printf("
    replace times: %d.
    ", counter);
        
        return 0;
    }

     5、

    #include <stdio.h>
    
    int main(void)
    {
        char ch;
        int counter = 0;
        
        printf("please input chars(# for exit): ");
        
        while((ch = getchar()) != '#')
        {
            switch(ch)
            {
                case '!': printf("!!"); counter++; break;
                case '.': printf("!");  counter++; break;
                default: printf("%c", ch); break;
            }
        }
        printf("
    replace times: %d.
    ", counter);
        
        return 0;
    }

    6、

    #include <stdio.h>
    
    int main(void)
    {
        char ch;
        char pre;
        int ei_count = 0;
        
        printf("please input the charaters(# to quit): ");
        
        while((ch = getchar()) != '#')
        {
            if(pre == 'e' && ch == 'i')
            {
                ei_count++;
            }
            
            pre = ch;
        }
        
        printf("ei_count: %d.
    ", ei_count);
        
        return 0;
    }

    #include <stdio.h>
    #include <stdbool.h>
    
    int main(void)
    {
        char ch;
        int ei_count = 0;
        bool mark1;
        
        while((ch = getchar()) != '#')
        {
            if(ch == 'e')
                mark1 = true;
            if(ch != 'e' && ch != 'i')
                mark1 = false;
                
            if(mark1 && ch == 'i')
            {
                ei_count++;
            }
            
        }
        
        printf("ei_count: %d.
    ", ei_count);
        
        return 0;
    }

    #include <stdio.h>
    
    int main(void)
    {
        int counter = 0;
        int halfpair = 0;
        
        char ch;
        printf("please input chars(# for exit): ");
        
        while((ch = getchar()) != '#')
        {
            switch(ch)
            {
                case 'e': halfpair = 1; break;
                case 'i': 
                if(halfpair == 1)
                {
                    counter++;
                    halfpair = 0;
                };
                break;
                default: halfpair = 0;
            }
        }
        printf("
    n_ei: %d
    ", counter);
        
        return 0;
    }

    7、

    #include <stdio.h>
    
    int main(void)
    {
        double sum, tax, pure_in;
        float hour;
        
        
        printf("please input the hours this week(q to quit): ");
        while(scanf("%f", &hour))
        {
            if(hour <= 40)
            {
                sum = hour * 10.00;
            }
            else
            {
                sum = 40 * 10.00 + (hour - 40) * 1.5;
            }
            
            if(sum <= 300)
            {
                tax = sum * 0.15;
            }
            else if(sum > 300 && sum <= 450)
            {
                tax = 300 * 0.15 + (sum - 300) * 0.2;    
            } 
            else
            {
                tax = 300 * 0.15 + 150 * 0.2 + (sum - 450) * 0.25;
            }
            pure_in = sum - tax;
            
            printf("sum: %.2f.
    ", sum);
            printf("tax: %.2f.
    ", tax);
            printf("pure_in: %.2f.
    ", pure_in);
            
            printf("
    please input the hours this week(q to quit): ");
        }
        return 0;
    }

    #include <stdio.h>
    #define BASE_SALARY 10
    #define EXTRA_SALARY 1.5
    #define BASE_TAX 0.15
    #define EXTRA_TAX 0.2
    #define EXCEED_TAX 0.25
    
    int main(void)
    {
        float salary, tax, taxed_salary;
        float hours;
        
        printf("please enter the working hours of this week(q to quit): ");
        
        while(scanf("%f", &hours))
        {
            if(hours < 40)
            {
                salary = hours * BASE_SALARY;
            }
            else
            {
                hours = 40 + (hours - 40) * EXTRA_SALARY;
                salary = hours * BASE_SALARY;
            }
            
            if(salary <= 300)
            {
                tax = salary * BASE_TAX;
            }
            else if(salary > 300 && salary <= 450)
            {
                tax = 300 * BASE_TAX + (salary - 300) * EXTRA_TAX;
            }
            else
            {
                tax = 300 * BASE_TAX + 150 * EXTRA_TAX + (salary - 450) * EXCEED_TAX;
            }
            
            taxed_salary = salary - tax;
            printf("salary: %.2f.
    ", salary);
            printf("tax   : %.2f.
    ", tax);
            printf("taxed_salary: %.2f.
    ", taxed_salary);
            
            printf("please enter the working hours of this week(q to quit): ");
        }    
        return 0;
    }

    8、

    #include <stdio.h>
    #define EXTRA_SALARY 1.5
    #define BASE_TAX 0.15
    #define EXTRA_TAX 0.2
    #define EXCEED_TAX 0.25
    
    int main(void)
    {
        float salary, tax, taxed_salary;
        float hours;
        int tab;
        float BASE_SALARY;
        
        
        printf("Enter the number corresponding to the desired pay rate of action: 
    ");
        printf("1) $8.75/hr           2) $9.33/hr
    3) $10.00/hr          4) $11.20/hr
    5) quit");
        printf("
    
    your choice(1-5): ");
        while(scanf("%d", &tab))
        {
            if(tab == 5)
                break;
            else if(tab != 1 && tab != 2 && tab != 3 && tab != 4)
                {
                    printf("input error, the range is (1-5): ");
                    continue;
                }
            else
            {
                switch(tab)
                {
                    case 1: BASE_SALARY = 8.75; break;
                    case 2: BASE_SALARY = 9.33; break;
                    case 3: BASE_SALARY = 10.00; break;
                    case 4: BASE_SALARY = 11.20; break;
                }
            }
            
            printf("please input the working hours of this week: ");
            scanf("%f", &hours);
            
            if(hours < 40)
            {
                salary = hours * BASE_SALARY;
            }
            else
            {
                hours = hours + (hours - 40) * 1.5;
                salary = hours * BASE_SALARY;
            }
            
            if(salary <= 300)
            {
                tax = salary * 0.15;
            }
            else if(salary > 300 && salary <= 450)
            {
                tax = 300 * 0.15 + (salary - 300) * 0.2;
            }
            else
            {
                tax = 300 * 0.15 + 150 * 0.2 + (salary - 450) * 0.25;
            }
            taxed_salary = salary - tax;
            printf("salary: %.2f.
    ", salary);
            printf("tax: %.2f.
    ", tax);
            printf("taxed_salary: %.2f.
    
    
      ", taxed_salary); 
            
            printf("Enter the number corresponding to the desired pay rate of action: 
    ");
            printf("1) $8.75/hr           2) $9.33/hr
    3) $10.00/hr          4) $11.20/hr
    5) quit");
            printf("
    
    your choice(1-5): ");
        }
        
        return 0;
        
    }

    #include <stdio.h>
    #define EXTRA_HOUR 1.5
    #define BASE_TAX 0.15
    #define EXTRA_TAX 0.2
    #define EXCEED_TAX 0.25
    
    void show_menu(void);
    
    void calc_salary(float base_salary, float hours);
    
    int main(void)
    {
        float hours = 0;
        char selected;
        do
        {
            show_menu();
            scanf("%c", &selected);
            switch(selected)
            {
                case '1': printf("hello, you selected $8.75/hr. enter the work hours: ");
                scanf("%f", &hours);
                calc_salary(8.75, hours);
                break;
                case '2': printf("hello, you selected $9.33/hr. enter the work hours: ");
                scanf("%f", &hours);
                calc_salary(9.33, hours);
                break;
                case '3': printf("hello, you selected $10.00/hr. enter the work hours: ");
                scanf("%f", &hours);
                calc_salary(10.00, hours);
                break;
                case '4': printf("hello, you selected $11.2/hr. enter the work hours: ");
                scanf("%f", &hours);
                calc_salary(11.2, hours);
                break;
                case '5': break;
                default: printf("error selected! please retry!
    ");
                break;
            }
            while(getchar() != '
    ')
                continue;
        }
        while(selected != '5');
            
        return 0;
    }
    
    void show_menu(void)
    {
        printf("Enter the number corresponding to the desired pay rate or action: 
    ");
        printf("1) $8.75/hr           2) $9.33/hr
    ");
        printf("3) $10.00/hr          4) $11.20/hr
    ");
        printf("5) quit
    ");
        
    }
    
    
    void calc_salary(float base_salary, float hours)
    {
        float salary, tax, taxed_salary;
        
        if(hours < 40)
        {
            salary = hours * base_salary;
        }
        else
        {
            hours = hours + (hours - 40) * EXTRA_HOUR;
            salary = hours * base_salary;
        }
        
        if(salary <= 300)
        {
            tax = salary * BASE_TAX;
        }
        else if(salary > 300 && salary <= 450)
        {
            tax = 300 * BASE_TAX + (salary - 300) * EXTRA_TAX;
        }
        else
        {
            tax = 300 * BASE_TAX + 150 * EXTRA_TAX + (salary - 450) * EXCEED_TAX;
        }
        taxed_salary = salary - tax;
        
        printf("salary: %.2f.
    ", salary);
        printf("tax   : %.2f.
    ", tax);
        printf("taxed_salary: %.2f.
    ", taxed_salary);
    }

    #include <stdio.h>
    #define OVER_WORK 1.5
    #define BASE_TAX 0.15
    #define EXTRA_TAX 0.2
    #define EXCEED_TAX 0.25
    int get_num(void);
    void calculat_salary(float time, float price);
    
    int main(void)
    {
        int num;
        float work_time;
        float price;
        
        num = get_num();
        while(num != 5)
        {
            printf("please input your work time a week: ");
            scanf("%f", &work_time);
            switch(num)
            {
                case 1: price = 8.75; calculat_salary( work_time,  price); break;
                case 2: price = 9.33; calculat_salary( work_time,  price); break;
                case 3: price = 10.00; calculat_salary( work_time,  price); break;
                case 4: price = 11.20; calculat_salary( work_time,  price); break;
                default: printf("program error.
    "); break;
            }
            putchar('
    ');
            num = get_num();
        }
    }
     
    int get_num(void)
    {
        int num;
        printf("1) $8.75/hr            2) $9.33/hr
    ");
        printf("3) $10.00/hr           4) $11.20/hr
    ");
        printf("5) quit/
    ");
        printf("please input your choice: ");
        
        while(scanf("%d", &num) != 1 || num < 1 || num > 6)
        {
            printf("
    you can only input 1 - 5.
    ");
            printf("1) $8.75/hr            2) $9.33/hr
    ");
            printf("3) $10.00/hr           4) $11.20/hr
    ");
            printf("5) quit/
    ");
            printf("please input again: ");
            while(getchar() != '
    ')
                continue;
        }
        
        return num;
    }
    
    void calculat_salary(float time, float price)
    {
        float salary_sum;
        float tax;
        float salary_taxed;
        
        if(time <= 40)
        {
            salary_sum = time * price;    
        }
        else
        {
            time = 40 + (time - 40) * OVER_WORK;
            salary_sum = time * price;
        }
        
        if(salary_sum <= 300)
        {
            tax = salary_sum * BASE_TAX;
        }
        else if(salary_sum > 300 && salary_sum <= 450)
        {
            tax = 300 * BASE_TAX + (salary_sum - 300) * EXTRA_TAX; 
        }
        else
        {
            tax = 300 * BASE_TAX + 150 * EXTRA_TAX + (salary_sum - 450) * EXCEED_TAX;
        }
        salary_taxed = salary_sum - tax;
        
        printf("salary_sum: %.2f.
    ", salary_sum);
        printf("tax: %.2f.
    ", tax);
        printf("salary_taxed: %.2f
    ", salary_taxed);
    }

    9、

    #include <stdio.h>
    
    int main(void)
    {
        int num;
        
        printf("please input an positive num(q to quit): ");
        while(scanf("%d", &num) && num > 0)
        {
            int i, j;
            
            for(i = 2; i < num; i++)
            {    
                int k = 0;
                   for(j = 2; j < num; j++)
                {
                    if(i % j == 0)
                        k++;                
                }
                if(k <= 1)
                    printf("su shu: %d.
    ", i);
                
            }
            printf("
    please input an positive num(q to quit): ");
        }
        
        return 0;
    }

    #include <stdio.h>
    
    int main(void)
    {
        int num;
        
        printf("please input an positive num(q to quit): ");
        while(scanf("%d", &num))
        {
            if(num < 2)
            {
                printf("input error, the range is >= 2, retry: ");
                continue;
            }
            else
            {
                int i, j;
                for(i = 2; i < num; i++)
                {    
                    int k = 0;
                       for(j = 1; j * j <= i; j++) // ???
                    {
                        if(i % j == 0)
                            k++;                
                    }
                    if(k == 1 )
                        printf("su shu: %d.
    ", i);
                    
                }
                printf("
    please input an positive num(q to quit): ");
            }
        }
        
        return 0;
    }

    #include <stdio.h>
    
    int main(void)
    {
        int datum;
        do   // 出口型循环控制 
        {
            printf("Enter a number(0 to quit): ");
            scanf("%d", &datum);
            if(datum < 2)
            {
                if(datum == 0)
                    break;     // datum = 0, 退出循环 
                printf("%d is out of range, retry.
    ", datum);
                continue;  // 其他小于2的情况,跳出该次迭代, 小于2的数不存在素数(质数) 
            }
            
            printf("you input %d, so the prime from %d to 2 is: ", datum, datum);
            
            int i, j;
            for(i = datum; i > 1; i--)  //外层循环从测定数递减到2 
            {
                int is_prime = 1;  // 首先设定素数的标记, 
                for(j = 2; j <= i / 2; j++)
                {
                    if(i % j == 0) // i % j == 0意味着 i除了1和本身外还有其他约数,也就是说i不是素数。 
                    {
                        is_prime = 0; // 检测到i为素数时,修改标记 
                        break;    // 此处break终止内层迭代,一旦检测到i有1和本身外的第一个约数,立即终止i的判断 
                    }    
                }    
                if(is_prime == 1) // 检测标记是否发生变化,也就是说同过一次迭代,素数标记is_prime没有发生变化,该轮迭代中的i是素数 
                {
                    printf("%d ", i);
                }
            } 
            printf("
    "); // 将输出的所有素数换行 
        }
        while(datum != 0);
        
        return 0; 
    }

    #include <stdio.h>
    
    int main(void)
    {
        int num;
        
        printf("please input an num(q to quit): ");
        
        while(scanf("%d", &num))
        {
            if(num < 2)
            {
                printf("input error, the range is >= 2, retry: ");
                continue;    
            }    
            
            int i, j;
            for(i = 2; i < num; i++)
            {
                int marker = 0;
                for(j = 2; j <= i / 2; j++) // 2和3明显是素数 ,实际的循环是从 i = 4 开始进行的 
                {
                    if(i % j == 0)
                    {
                        marker = 1;
                        break;
                    }
                }
                if(marker == 0) 
                {
                    printf("prime: %d.
    ", i);
                }
            }
            printf("please input an num(q to quit): ");
        }    
        return 0;
    } 

     10、

    #include <stdio.h>
    #define BASE1 17850
    #define BASE2 23900
    #define BASE3 29750
    #define BASE4 14875
    #define TAXRATE1 0.15
    #define TAXRATE2 0.28
    
    
    int main(void)
    {
        int category;
        
        printf("please choose category according the following instruction: 
    ");
        printf("1) bachelor;       2) hoster;
    ");
        printf("3) marry_share;    4) marry_dovorce
    ");
        printf("input your choice(q to quit): ");
        
        while(scanf("%d", &category))
        {
            if(category < 1 || category > 4)
            {
                printf("input error, input 1 - 4(q to quit): ");
                continue;    
            }    
            float salary, tax;
            printf("please input you salary: ");
            scanf("%f", &salary);
            
            switch(category)
            {
                case 1: tax = salary > BASE1 ? BASE1 * TAXRATE1 + (salary - BASE1) * TAXRATE2 : salary * TAXRATE1; break;
                case 2: tax = salary > BASE2 ? BASE2 * TAXRATE1 + (salary - BASE2) * TAXRATE2 : salary * TAXRATE1; break;
                case 3: tax = salary > BASE3 ? BASE3 * TAXRATE1 + (salary - BASE3) * TAXRATE2 : salary * TAXRATE1; break;
                case 4: tax = salary > BASE4 ? BASE4 * TAXRATE1 + (salary - BASE4) * TAXRATE2 : salary * TAXRATE1; break;
            }
                
            printf("your tax: %.2f.
    
    
    ", tax);
            
            printf("please choose category according the following instruction: 
    ");
            printf("1) bachelor;       2) hoster;
    ");
            printf("3) marry_share;    4) marry_dovorce
    ");
            printf("input your choice(q to quit): ");
        }    
        return 0;
    } 

    #include <stdio.h>
    #define SINGLE 17850
    #define HOLDER 23900
    #define MARRY 29750
    #define DIVORCE 14875
    #define BASE_TAX 0.15
    #define EXTRA_TAX 0.28
    
    int main(void)
    {
        char type;
        float salary;
        float tax, salary_taxed;
        
        do
        {
            printf("please select tax type. ther are four types: 
    ");
            printf("1)single        2)holder       3)marry       4)divorced       5)quit:");
            scanf("%c", &type);
            switch(type)
            {
                case '1': 
                printf("enter your salary: ");
                scanf("%f", &salary);
                if(salary <= SINGLE)
                {
                    tax = salary * BASE_TAX;
                    salary_taxed = salary - tax;
                }
                else
                {
                    tax = SINGLE * BASE_TAX + (salary - SINGLE) * EXTRA_TAX;
                    salary_taxed = salary - tax;    
                }
                printf("hi, your salary is %.2f, tax is %.2f,  salary_taxed is %.2f.
    ", salary, tax, salary_taxed);
                break;
                
                case '2':
                printf("enter you salary: ");
                scanf("%f", &salary);
                if(salary <= HOLDER)
                {
                    tax = salary * BASE_TAX;
                    salary_taxed = salary - tax;
                }
                else
                {
                    tax = HOLDER * BASE_TAX + (salary - HOLDER) * EXTRA_TAX;
                    salary_taxed = salary - tax;
                }
                printf("hi, your salary is %.2f, tax is %.2f, salary_taxed is %.2f.
    ", salary, tax, salary_taxed);
                break;
                
                case '3':
                printf("enter your salary: ");
                scanf("%f", &salary);
                if(salary <= MARRY)
                {
                    tax = salary * BASE_TAX;
                    salary_taxed = salary - tax;
                }
                else
                {
                    tax = MARRY * BASE_TAX + (salary - MARRY) * EXTRA_TAX;
                    salary_taxed = salary - tax;
                }
                printf("hi, your salary is %.2f, tax is %.2f, salary_taxed is %.2f.
    ", salary, tax, salary_taxed);
                break;
                
                case '4':
                printf("enter your salary: ");
                scanf("%f", &salary);
                if(salary <= DIVORCE)
                {
                    tax = salary * BASE_TAX;
                    salary_taxed = salary - tax;
                }
                else
                {
                    tax = DIVORCE * BASE_TAX + (salary - DIVORCE) * EXTRA_TAX;
                    salary_taxed = salary - tax;
                }
                printf("hi, your salary is %.2f, tax is %.2f, salary_taxed is %.2f.
    ", salary, tax, salary_taxed);
                break;
                
                case '5':
                    break;
                
                default: 
                printf("wrong type, please retry.
    ");
            }    
            while(getchar() != '
    ')
                continue;
        }
        while(type != '5');
        
        return 0;    
    } 

    11、

    #include <stdio.h>
    #define PRICE_ARTI 2.05
    #define PRICE_BEET 1.15
    #define PRICE_CARROT 1.09
    #define DISCOUNT 0.05
    
    void show_menu(void);
    
    float get_weight(void);
    
    int main(void)
    {
        float w_arti = 0;
        float w_beet = 0;
        float w_carrot = 0;
        char selected;
        float weight, amount, rebate, freight, total;
        do
        {
            show_menu();
            scanf("%c", &selected);
            switch(selected)
            {
                case 'a':
                    w_arti += get_weight();
                    break;
                case 'b':
                    w_beet += get_weight();
                    break;
                case 'c':
                    w_carrot += get_weight();
                    break;
                case 'q':
                    break;
                default:
                    printf("error input, retry!
    ");
                    break;
            }
        while(getchar() != '
    ')
            continue;
        }while(selected != 'q');
        
        amount = w_arti * PRICE_ARTI + w_beet * PRICE_BEET + w_carrot * PRICE_CARROT;
        weight = w_arti + w_beet + w_carrot; 
        
        if(amount >= 100)
            rebate = amount * DISCOUNT;
        else
            rebate = 0;
        
        if(weight <= 5)
            freight = 6.5;
        else if(weight > 5 && weight <= 20)
            freight = 14;
        else
            freight = 14 + (weight - 20) * 0.5;
        total = amount + freight - rebate;
        
        printf("
    
    The price of vegetable:
    artichoke %g$/pound,  beet %g$/pound, carrot %g$/pound.
    ", PRICE_ARTI, PRICE_BEET, PRICE_CARROT);
        printf("you order %g pound artichoke, %g pound beet,  %g pound carrot.
    ", w_arti, w_beet, w_carrot);
        printf("you total order %g pounds,  discount %g$,  amount %g$,  freight %g$,  total  %g$.
    ", weight, rebate, amount, freight, total);
        
        printf("Done
    ");
        
        return 0;
    }
    
    void show_menu(void)
    {
        printf("
    ************************************************************************
    ");
        printf("Enter the char corresponding to the desired vegetable.
    ");
        printf("a) artichoke           b) beet
    ");
        printf("c) carrot              d) quit & checkout
    ");
        printf("please input the vegetable you want to buy(a, b, c or q for quit): ");
        
    }
    
    float get_weight(void)
    {
        float weight;
        printf("please input how many pounds you buy: ");
        scanf("%f", &weight);
        printf("ok, add %g pound to cart.
    ", weight);
        return weight;
    }

    #include <stdio.h>
    #define ARTI_PRICE 2.05
    #define BEET_PRICE 1.15
    #define CARROT_PRICE 1.09
    #define DISCOUNT 0.05
    
    
    int main(void)
    {
        char selected;
        float weight;
        float artisum = 0;
        float beetsum = 0;
        float carrotsum = 0;
        float totalweight;
        float vegeprice;
        float rebate;
        float freight;
        float finalprice;
        
        do
        {
            printf("please choose (a, b or c): 
    ");
            printf("a) arti       b) beet     c) carrot     q) quit and check:  ");
            scanf("%c", &selected);
            
            switch(selected)
            {
                case 'a':
                    while(getchar() != '
    ')
                        continue;
                    printf("input the weight for arti: ");
                    scanf("%f", &weight);
                    artisum += weight;
                    printf("add %.2f pound arti.
    ", weight);
                    break;
                case 'b':
                    while(getchar() != '
    ')
                        continue;
                    printf("input the weight for beet: ");
                    scanf("%f", &weight);
                    beetsum += weight;
                    printf("add %.2f pound beet.
    ", weight);
                    break;
                case 'c':
                    while(getchar() != '
    ')
                        continue;
                    printf("input the weight for carrot: ");
                    scanf("%f", &weight);
                    carrotsum += weight;
                    printf("add %.2f pound carrot.
    ", weight);
                    break;
                case 'q':
                    break;
                default:
                    printf("input error, choose a, b, c or q, retry: ");
            }
            while(getchar() != '
    ')
                continue;
        }
        while(selected != 'q');
        
        if(artisum == 0 && beetsum == 0 && carrotsum == 0 )
        {
            printf("
    you choose nothing!
    ");
        }
        else
        {
            printf("
    
    arti: %.2f$/hr;   beet: %.2f$/hr;    carrot: %.2f$/hr
    ",ARTI_PRICE,BEET_PRICE,CARROT_PRICE);
            totalweight = artisum + beetsum + carrotsum;
            vegeprice = artisum * ARTI_PRICE + beetsum * BEET_PRICE + carrotsum * CARROT_PRICE;
            
            if(vegeprice >= 100)
            {
                rebate = vegeprice * DISCOUNT;
            }
            else
            {
                rebate = 0;
            }
            
            if(totalweight <= 5)
            {
                freight = 6.5;    
            }
            else if(totalweight > 5 && totalweight <= 20)
            {
                freight = 14;
            }
            else
            {
                freight = 14 + (totalweight - 20) * 0.5;
            }
            
            finalprice = vegeprice + freight - rebate;
            
            if(artisum != 0)
                printf("arti weight:       %10.2f.
    ", artisum);
            if(beetsum != 0)
                printf("beet weight:        %10.2f.
    ", beetsum);
            if(carrotsum != 0)
                printf("carrot weitht:   %10.2f.
    ", carrotsum);
            printf("total weight:    %10.2f.
    ", totalweight);
            printf("vegetable price: %10.2f.
    ", vegeprice);
            printf("rebate:          %10.2f.
    ", rebate);
            printf("freight:         %10.2f.
    ", freight);
            printf("finalprice:      %10.2f
    ", finalprice); 
        }
        
        
        
        return 0;
    }

     
  • 相关阅读:
    字节对齐的问题
    Combination Sum 和Combination Sum II
    Combinations
    算法导论 第六章 思考题6-3 Young氏矩阵
    算法导论 第六章 思考题 6-3 d叉堆
    算法导论 第六章 思考题 6-1 用插入的方法建堆
    Binary Tree Maximum Path Sum
    leetcode candy
    《程序设计与算法(二)算法基础》《第五周 分治》快速排序
    【Tesla】特斯拉Autopilot核心传感器解读之毫米波雷达篇
  • 原文地址:https://www.cnblogs.com/liujiaxin2018/p/15174198.html
Copyright © 2011-2022 走看看