【问题标题】:What's wrong in this code?这段代码有什么问题?
【发布时间】:2015-04-25 11:15:04
【问题描述】:

在案例 1 中,不检查任何错误,但在案例 2、3、4 和 5 中,向我发送一个错误,表明某些变量已被声明

//Autor 
#include <stdio.h>
#include <windows.h>

int main ()
{
    char nom[25];
    int Co;
    int P;
    int op;
    printf("\t\t La Nacional");
    printf("\n\n");
    printf("\t\t Menu\n\n");
    printf(" 1.Arrachera\n 2.Costillas\n 3.Alitas\n 4.Cabrito\n 5.Camarones\n");
    printf("\n\n");
    printf(" Nombre de cliente:");
    scanf("%s",nom);
    printf("\n Elija una opcion:");
    scanf("%d", &op);
    printf("\n\n");
    switch(op)
    {
    case 1:
        printf(" Arrachera\n");
        printf("\n\n");
        printf(" El combo incluye");
        printf("\n Ensalada\n Tortillas\n Salchicha\n Refresco");
        printf("\n Precio: $250");
        printf("\n\n");
        printf(" Cantidad de combos:");
        scanf("%d", &Co);
        long A=(Co*250);
        printf("\n\n");
        printf(" Su subtotal es: %ld" ,A);
        long Tt= (A*.16)+ A;
        printf("\n\n");
        printf(" Su total es: %ld" ,Tt);
        printf("\n\n");
        printf(" Con cuanto va a pagar?");
        scanf("%d" ,P);
        long F=(Tt-P);
        printf("\n\n");
        printf(" Su cambio es: %ld", F);
        break;

    case 2:
        printf("El combo de Costillas incluye:");
        printf("\nEnsalada\nTortillas\n Salsa BBQ\nRefresco");
        printf("\nPrecio: $200");
        printf("\n\n");
        printf(" Cantidad de combos:");
        scanf("%d", &Co);
        long A=(Co*200);
        printf("\n\n");
        printf(" Su subtotal es: %ld" ,A);
        long Tt= (A*.16)+ A;
        printf("\n\n");
        printf(" Su total es: %ld" ,Tt);
        printf("\n\n");
        printf(" Con cuanto va a pagar?");
        scanf("%d" ,P);
        long F=(Tt-P);
        printf("\n\n");
        printf(" Su cambio es: %ld", F)
        break;

    case 3:
        printf("El combo de Alitas incluye:");
        printf("\nEnsalada\nSalsa\nAderezo\nRefresco");
        printf("\nPrecio: $150");
        printf("\n\n");
        printf(" Cantidad de combos:");
        scanf("%d", &Co);
        long A=(Co*150);
        printf("\n\n");
        printf(" Su subtotal es: %ld" ,A);
        long Tt= (A*.16)+ A;
        printf("\n\n");
        printf(" Su total es: %ld" ,Tt);
        printf("\n\n");
        printf(" Con cuanto va a pagar?");
        scanf("%d" ,P);
        long F=(Tt-P);
        printf("\n\n");
        printf(" Su cambio es: %ld", F)
        break;

    case 4:
        printf("El combo de Cabrito incluye:");
        printf("\nEnsalada\nPapa\nQueso\nCebolla\nRefresco");
        printf("\nPrecio: $210");
        printf("\n\n");
        printf(" Cantidad de combos:");
        scanf("%d", &Co);
        long A=(Co*210);
        printf("\n\n");
        printf(" Su subtotal es: %ld" ,A);
        long Tt= (A*.16)+ A;
        printf("\n\n");
        printf(" Su total es: %ld" ,Tt);
        printf("\n\n");
        printf(" Con cuanto va a pagar?");
        scanf("%d" ,P);
        long F=(Tt-P);
        printf("\n\n");
        printf(" Su cambio es: %ld", F)
        break;

    case 5:
        printf("El combo de Camarones Empanizados incluye:");
        printf("\nEnsalada\nGalletas\nPapas\nArroz\nRefresco");
        printf("\nPrecio: $200");
        printf("\n\n");
        printf(" Cantidad de combos:");
        scanf("%d", &Co);
        long A=(Co*200);
        printf("\n\n");
        printf(" Su subtotal es: %ld" ,A);
        long Tt= (A*.16)+ A;
        printf("\n\n");
        printf(" Su total es: %ld" ,Tt);
        printf("\n\n");
        printf(" Con cuanto va a pagar?");
        scanf("%d" ,P);
        long F=(Tt-P);
        printf("\n\n");
        printf(" Su cambio es: %ld", F)
        break;

    default:
        printf("La opcion no existe");
        break;
    }
    printf("\n");
    system("pause");
    return 0;
}

在案例 1 中,不检查任何错误,但在案例 2、3、4 和 5 中,向我发送一个错误,表明某些变量已被声明

【问题讨论】:

  • 您正在重新定义每个 case 语句中的变量。您应该将声明移到switch 上方,并为每个case 设置值..
  • 另外,您可以将每个案例的语句放在单独的块中。但无论如何,正确缩进你的代码!

标签: c compiler-errors dev-c++


【解决方案1】:

你不应该在case中声明变量而不使用大括号,而且这不是必须的,因为你可以在switch之前声明它们。

另外,scanf("%d", P); 是问题所在,scanf()"%d" 说明符需要一个 int 指针,所以它应该是

scanf("%d", &P);

你需要检查它的返回值,should be 1

该链接将帮助您更好地了解如何使用scanf()

【讨论】:

  • 这是一个问题,但不是被问到的问题。
猜你喜欢
  • 2018-09-09
相关资源
最近更新 更多