这段代码有什么问题?
What's wrong in this code?
在情况 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: 0");
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: 0");
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: 0");
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: 0");
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: 0");
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
之前声明它们。
此外,scanf("%d", P);
是问题所在,scanf()
的 "%d"
说明符需要一个 int
指针,所以它应该是
scanf("%d", &P);
并且您需要检查 return 的值,即 should be 1
。
link 将帮助您更好地理解如何使用 scanf()
。
在情况 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: 0");
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: 0");
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: 0");
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: 0");
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: 0");
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
之前声明它们。
此外,scanf("%d", P);
是问题所在,scanf()
的 "%d"
说明符需要一个 int
指针,所以它应该是
scanf("%d", &P);
并且您需要检查 return 的值,即 should be 1
。
link 将帮助您更好地理解如何使用 scanf()
。