为什么总是输出error

来源:百度知道 编辑:UC知道 时间:2024/06/30 20:31:30
#include <stdio.h>
void main()
{
double bonus1,bonus2,bonus3,bonus4,bonus5,bonus6,bonus7,bonus,c;
int a,b;
printf("输入星期几的序号和工作小时数:");
scanf("%d %d",&a,&b);
bonus1=b*20;
bonus2=b*20;
bonus3=b*20;
bonus4=b*20;
bonus5=b*20;
bonus6=b*60;
bonus7=b*60;
switch(a){
case '1': printf("bonus=bonus1-b*20*0.045,c=bonus1");
break;
case '2':printf("bonus=bonus2-b*20*0.045,c=bonus2");
break;
case '3':printf("bonus3-b*20*0.045,c=bonus3");
break;
case '4':printf("bonus=bonus4-b*20*0.045,c=bonus4");
break;
case '5':printf("bonus=bonus5-b*20*0.045,c=bonus5");
break;
case '6':printf("bonus=bonus6-b*60*0.045,c=bonus6");
break;
case '7':printf("bonus=bonus7-b*60*0.045,c=bonus7"

你的a是int。而的case分支都是字符类型的,如你写的'1'
实际比较的是他们的ASCII码值,所以一直不会相等。执行default
你把case的分支都改为int类型的数字吧,如1

给你修改好了 编译通过了 你的错误是把case 中的数字不要加单引号。加了单引号就表示ASCII码而不是数字了所以输出的全是error

#include <stdio.h>
void main()
{
double bonus1,bonus2,bonus3,bonus4,bonus5,bonus6,bonus7,bonus,c;
int a,b;
printf("输入星期几的序号和工作小时数:");
scanf("%d%d",&a,&b);
bonus1=b*20;
bonus2=b*20;
bonus3=b*20;
bonus4=b*20;
bonus5=b*20;
bonus6=b*60;
bonus7=b*60;

switch(a)
{
case 1: printf("bonus=bonus1-b*20*0.045,c=bonus1");
break;
case 2:printf("bonus=bonus2-b*20*0.045,c=bonus2");
break;
case 3:printf("bonus3-b*20*0.045,c=bonus3");
break;
case 4:printf("bonus=bonus4-b*20*0.045,c=bonus4");
break;
case 5:printf("bonus=bonus5-b*20*0.045,c=bonus5");
break;
case 6:printf("b