還有大小寫的問題呢?s和e,聰明的程序,是可以接受大寫和小寫的,而你們的判斷,衹有小寫。

授人以渔,不授人以鱼。
2015-02-01 22:55
2015-02-01 22:55
2015-02-01 22:58
2015-02-01 22:58

2015-02-01 23:00
2015-02-01 23:02
2015-02-01 23:04
2015-02-01 23:07
2015-02-01 23:12
程序代码:
/*
编写简单的计算器。该程序允许用户输入如下的格式算式:
数字 操作符
其中操作符 可以是下面的任意一个:
+ - * / S E
操作符S将计算器中的“记忆数字”设置为输入的数值。操作符E告诉程序节结束执行。如果输入的是算术操作符,那么就把计算器中
的“记忆数字”作为第一个操作数,用户输入的数字作为第二个操作数,计算结果作为“记忆数字”重新保存起来。下面是我们的计算
器运行的一个示意过程:
Begin calculations
10 s 设置记忆数字为10
= 10.000000 显示记忆数字
2/ 除以2
=5.000000 减去55
55-
-50.000000
100.25s 设置记忆数字为100.25
= 100.250000
4 * Multiply(乘以4)
= 401.000000
0 E 结束运行
= 401.000000
End of calculations.
在程序中要求检查除数为 0 和未知的操作符这两种意外情况。
*/
#include <stdio.h>
#include <stdlib.h>
double Memory = 0.0; // 寄存器
// 函數原型
void Show_Memory(void);
// 主程序入口函數
int main(void)
{
double value; // 操作數
char operate; // 操作符
printf_s("\nBegin calculations\n"); // 非vc編譯器改用printf()
do
{
fflush(stdin); // 清空標準輸入流數據以備接收輸入,非標準函數,沒有有效的替代方法!
if (scanf_s("%lf %c", &value, &operate, 1) != 2) // 非vc編譯器改用scanf()
{
/* 注意scanf()的用法,格式控制符%lf和%c之間有空格,表示輸入應用空格分開。實際上不分開
也可以,但由於題目要求用到e作操作符,與C的科學記數法衝突,則與前面的數字連在一起會
造成輸入錯誤。*/
printf_s("value = %f, operate = %c\n", value, operate);
printf_s("ERROR\n");
continue;
}
switch (operate)
{
case 's':
case 'S':
case 'e':
case 'E':
break;
case '+':
value = Memory + value;
break;
case '-':
value = Memory - value;
break;
case '*':
value = Memory * value;
break;
case '/':
value = Memory / value;
break;
default:
printf_s("ERROR\n");
continue;
break;
}
if ((operate != 'e') && (operate != 'E'))
{
Memory = value;
}
Show_Memory();
} while ((operate != 'e') && (operate != 'E'));
printf_s("\nEnd of calculations.\n");
printf_s("\nPress any key to continue...");
fflush(stdin);
getchar();
return EXIT_SUCCESS;
}
// 顯示寄存器内容
void Show_Memory(void)
{
printf_s("= %f\n", Memory);
}

2015-02-02 13:19