C语言,switch语句
C Language, Switch Statement
void main()
{
printf(" IT Magey \n");
int code;
printf("\nEnter item code : T");
scanf("%d", &code);
double price;
printf("Enter item price : ");
scanf("%lf", &price);
double dct;
printf("Enter discount ('%%') : ");
scanf("%lf", &dct );
char m;
printf("Enter payment mode (F or I): ");
scanf("%c \n", &m);
switch (m)
{
case 'F':
case 'f':
printf("\n");
printf("Payment Details \n");
printf("-----------------------------\n");
printf("Item Code : T003256\n");
printf("Item price: USD 2342.80\n");
double dct1=price*dct/100;
printf( "Discount: USD%lf \n", dct1);
double amount1=price-dct1;
printf("Amount to pay: USD%lf", amount1 );
break;
case 'I':
case 'i':
printf("\n");
int mth;
printf("Enter number of installments (months) : ");
scanf("%d", &mth);
printf("\n");
printf("Payment Details \n");
printf("-----------------------------\n");
printf("Item Code : T003256\n");
printf("Item price: USD 2342.80\n");
double dct2=price*dct/100;
printf( "Discount: USD%lf \n", dct2);
double amount2=price-dct1;
printf("Amount to pay: USD%lf", amount2 );
printf("\n");
printf("Number of installments : %d \n", mth);
double amount3=price/mth;
printf(" Amount to pay per installement : USD%lf", amount3 );
break;
default:
printf("Please select only F or I");
}
这里是新手,除了默认输出外,我的 switch 语句不会显示任何输出。尽管如此,我还是向它添加了(中断)。如果除了 switch 语句之外还有关于此程序的其他问题,请将它们也列出来。谢谢:)
刚开始使用这个网站,我正在尝试填写更多详细信息,以满足详细信息太少的错误:/
编辑#1:
所以把switch('m')改成switch(m)后,我的输出还是一样。如果我尝试使用 if..else if,我希望我的输出只显示 'F' 或 'f' 代码,我得到的是所有 'I' 和 'i'包含代码。
switch语句中传递的参数是一个字符常量'm'
,而不是你要检查的变量m
你必须这样通过:
switch (m) {
//your code goes here
}
澄清 AbdulBasit 的答案,该答案大部分是正确的,但并未说明代码编译但给出错误答案的原因。
正如 AbdulBasit 所指出的,switch ('m')
使用的是单个字符 'm'——实际上它本身并不是一个字符串——但它是完全有效的代码。
代码的意思是--
- 将字符'm'与下列情况下的值进行比较并执行匹配。
- 比较 'm' 与 'F' 和 'f'。是的,为了非常准确,这是从第一个案例到第二个案例的两个案例。
- 不匹配,尝试下一个案例。
- 比较 'm' 与 'I' 和 'i'。
- 不匹配,尝试下一个案例。
- 没有下一个案例。如果存在,请尝试默认大小写。
- 执行默认情况——告诉用户他们需要输入'F'或'I'.
正如 AbdulBasit 指出的那样,虽然 scanf()
确实将用户输入读入变量 m
,但开关是 运行 与常量字符 'm'
的比较。
void main()
{
printf(" IT Magey \n");
int code;
printf("\nEnter item code : T");
scanf("%d", &code);
double price;
printf("Enter item price : ");
scanf("%lf", &price);
double dct;
printf("Enter discount ('%%') : ");
scanf("%lf", &dct );
char m;
printf("Enter payment mode (F or I): ");
scanf("%c \n", &m);
switch (m)
{
case 'F':
case 'f':
printf("\n");
printf("Payment Details \n");
printf("-----------------------------\n");
printf("Item Code : T003256\n");
printf("Item price: USD 2342.80\n");
double dct1=price*dct/100;
printf( "Discount: USD%lf \n", dct1);
double amount1=price-dct1;
printf("Amount to pay: USD%lf", amount1 );
break;
case 'I':
case 'i':
printf("\n");
int mth;
printf("Enter number of installments (months) : ");
scanf("%d", &mth);
printf("\n");
printf("Payment Details \n");
printf("-----------------------------\n");
printf("Item Code : T003256\n");
printf("Item price: USD 2342.80\n");
double dct2=price*dct/100;
printf( "Discount: USD%lf \n", dct2);
double amount2=price-dct1;
printf("Amount to pay: USD%lf", amount2 );
printf("\n");
printf("Number of installments : %d \n", mth);
double amount3=price/mth;
printf(" Amount to pay per installement : USD%lf", amount3 );
break;
default:
printf("Please select only F or I");
}
这里是新手,除了默认输出外,我的 switch 语句不会显示任何输出。尽管如此,我还是向它添加了(中断)。如果除了 switch 语句之外还有关于此程序的其他问题,请将它们也列出来。谢谢:)
刚开始使用这个网站,我正在尝试填写更多详细信息,以满足详细信息太少的错误:/
编辑#1: 所以把switch('m')改成switch(m)后,我的输出还是一样。如果我尝试使用 if..else if,我希望我的输出只显示 'F' 或 'f' 代码,我得到的是所有 'I' 和 'i'包含代码。
switch语句中传递的参数是一个字符常量'm'
,而不是你要检查的变量m
你必须这样通过:
switch (m) {
//your code goes here
}
澄清 AbdulBasit 的答案,该答案大部分是正确的,但并未说明代码编译但给出错误答案的原因。
正如 AbdulBasit 所指出的,switch ('m')
使用的是单个字符 'm'——实际上它本身并不是一个字符串——但它是完全有效的代码。
代码的意思是--
- 将字符'm'与下列情况下的值进行比较并执行匹配。
- 比较 'm' 与 'F' 和 'f'。是的,为了非常准确,这是从第一个案例到第二个案例的两个案例。
- 不匹配,尝试下一个案例。
- 比较 'm' 与 'I' 和 'i'。
- 不匹配,尝试下一个案例。
- 没有下一个案例。如果存在,请尝试默认大小写。
- 执行默认情况——告诉用户他们需要输入'F'或'I'.
正如 AbdulBasit 指出的那样,虽然 scanf()
确实将用户输入读入变量 m
,但开关是 运行 与常量字符 'm'
的比较。