2015-02-23 21 views
-3

在案例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中,發給我一個錯誤,指出已經聲明瞭一些變量

+2

您正在重新定義每個'case'語句中的變量。您應該將'switch'上面的聲明移到每個case的值上。 – 2015-02-23 23:23:19

+0

或者,您可以將每個case的聲明放在一個單獨的塊中。但通過一切手段,正確縮進您的代碼! – chqrlie 2015-02-23 23:27:05

+1

它沒有縮進? – 2015-02-23 23:40:38

回答

0

您不應該在不使用大括號的情況下在case的內部聲明變量,除此之外它不是必需的,因爲您可以在switch之前申報。

而且,scanf("%d", P);是問題,"%d"說明符scanf()需要一個int指針,所以它應該是

scanf("%d", &P); 

,你需要檢查返回值,這should be 1

該鏈接將幫助您更好地瞭解如何使用scanf()

+0

這是個*問題,但並不是被問到的問題。 – immibis 2015-02-23 23:48:55