#include <stdio.h>

int i, party;
char x = ' ';
float total = 0, perCost = 0;
main(){

            switch (toupper(x)) {
                case 'A':
                    printf("Combo A: Friend Chicken with slaw [price: 4.25]");
                    perCost = 4.24;
                    break;
                case 'B':
                    printf("Combo B: Roast beef with mashed potato [price: 5.75]");
                    perCost = 5.75;
                    break;
                case 'C':
                    printf("Combo A: Fish and chips [price: 5.25]");
                    perCost = 5.25;
                    break;
                case 'D':
                    printf("Combo A: soup and salad [price: 3.74]");
                    perCost = 3.75;
                    break;
                default:
                    perCost = 0;
                    break;
            }

    printf("Enter Party Total: ");
    scanf("%d", &party);
    for (i = 0; i < party; i++) {
            printf("Enter item ordered [A/B/C/D/X]: ");
            scanf("%c%*c", &x);
    }
    total = total + perCost;
    printf("%f\n", total);
}

什么原因导致我的编程无法从switch语句中获取?

最佳答案

根据给定的代码,当执行第一次到达switch()时,x的值是' ',因此通过执行switch()给出perCost = 0执行switch()中的默认条件,使您相信程序din获取了switch()(注意,执行再也不会回到这里)
为了达到你所期望的效果,在switch()循环中给出for (i = 0; i < party; i++),特别是在scanf下面。
注意total = total + perCost;是错误的,到现在为止,它不会计算总数,而只给出您最后一个组合的perCost,这也应该在循环中。
你的程序中需要一个#include <cctype.h>

关于c - 从For循环中获取Switch语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7898469/

10-13 09:52