[問題]請問 c語言三個運算子
版上的各位大家好
小弟自學C語言
用的書是洪維恩老師寫的 "C語言教學手冊"
目前唸到選擇性敘述的switch
裡面有個範例是可以計算兩個運算子的
唸完後小弟突發奇想想寫寫看三個運算子的
所以就用dev c++寫了以下程式碼
/*switch的應用*/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(void)
{
int a,b,c,d;
char oper1,oper2;
printf("Now! You can enter a equation: ");
scanf("%d %c %d %c %d",&b,&oper1,&c,&oper2,&d);
printf("This is :%d+%d+%d=%d\n\n",b,c,d,b+c+d);
switch(oper1)
{
case'+':
switch(oper2)
{
case'+':
printf("%d+%d+%d=%d\n",b,c,d,b+c+d);
break;
case'-':
printf("%d+%d-%d=%d\n",b,c,d,b+c-d);
break;
case'*':
printf("%d+%d*%d=%d\n",b,c,d,b+c*d);
break;
case'/':
printf("%d+%d/%d=%d\n",b,c,d,(float)b+c/d);
break;
default:
printf("Please don't do this again.\n");
}
case'-':
switch(oper2)
{
case'+':
printf("%d-%d+%d=%d\n",b,c,d,b-c+d);
break;
case'-':
printf("%d-%d-%d=%d\n",b,c,d,b-c-d);
break;
case'*':
printf("%d-%d*%d=%d\n",b,c,d,b-c*d);
break;
case'/':
printf("%d-%d/%d=%d\n",b,c,d,(float)b-c/d);
break;
default:
printf("Please don't do this again.\n");
}
case'*':
switch(oper2)
{
case'+':
printf("%d*%d+%d=%d\n",b,c,d,b*c+d);
break;
case'-':
printf("%d*%d-%d=%d\n",b,c,d,b*c-d);
break;
case'*':
printf("%d*%d*%d=%d\n",b,c,d,b*c*d);
break;
case'/':
printf("%d*%d/%d=%d\n",b,c,d,(float)b*c/d);
break;
default:
printf("Please don't do this again.\n");
}
case'/':
switch(oper2)
{
case'+':
printf("%d/%d+%d=%d\n",b,c,d,(float)b/c+d);
break;
case'-':
printf("%d/%d-%d=%d\n",b,c,d,(float)b/c-d);
break;
case'*':
printf("%d/%d*%d=%d\n",b,c,d,(float)b/c*d);
break;
case'/':
printf("%d/%d/%d=%d\n",b,c,d,(float)b*c/d);
break;
default:
printf("Please don't do this again.\n");
}
default:
printf("Please don't do this again.\n");
}
system("pause");
return 0;
}
程式可以跑
結果出來的卻不是那麼一回事
例如我輸入3+2+4
結果卻是跑出
3+2+4=9
3-2+4=5
3*2+4=10
3/2+4=0
Please don't do this again.
這一堆東西
其實版上的明眼人一看
現在應該在捧腹大笑
小弟實在是野人獻曝了
但還是厚著臉皮想請教大家
我是犯了什麼邏輯上的錯誤呢??
還請神人不吝賜教~~~感恩!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.21.235.246
推
12/22 10:43, , 1F
12/22 10:43, 1F
→
12/22 10:43, , 2F
12/22 10:43, 2F
推
12/22 10:53, , 3F
12/22 10:53, 3F
→
12/22 10:53, , 4F
12/22 10:53, 4F
→
12/22 11:34, , 5F
12/22 11:34, 5F
→
12/22 11:35, , 6F
12/22 11:35, 6F