啊哈,这次更新内容有点多,我发个上次和这次的源代码,大家可以自己比较一下,不想看也可以不看。
上次的:
/*我在此再次致谢我的第一任C++老师,the book!
没有它,这个程序无从完成。
悲!系统原装计算器!*/
#include<bits/stdc++.h>
#define err !isfinite(c)
using namespace std;
int main(){
double a, b, c;unsigned Start, End;string i;
Start = time(NULL);
printf("计算器欢迎您的光临!");
start:
printf("\n请选择您要计算的运算方式(如加减乘除)或命令(命令帮助请输入/help),请输入加减乘除的符号(如 + - * /),否则将运算失败。\n");
printf("目前支持加减乘除和乘方;开平方\t对应符号+ - * / ^ ^/\n");
cin >> i; //困扰我多年的scanf string问题!
if((i != "+") and (i != "-") and (i != "*") and (i != "/") and (i != "^") and (i != "^/") and (i != "/help") and (i != "/sr") and (i != "/cls") and (i != "/exit") and (i != "/shut")){
srand(unsigned(time(NULL)));
unsigned errq = rand() % 4;
printf("\n");
if(errq == 0) printf("Error(一定有bug)");
else if(errq == 1) printf("你说啥?");
else if(errq == 2) printf("傻");
else if(errq == 3) printf("what?");
printf("\n\n");
system("pause");
goto start;
}
if(i == "^/"){
if(a == 1){
printf("\n\nError\n");
system("pause");
goto start;
}
printf("请输入要开平方的数字:");
scanf("%lf", &a);
c = sqrt(a);
goto stop;
}
if(i == "/help"){
printf("\n1、/cls:清空屏幕,重新从头运行;\n2、/sr:显示程序源代码;\n3、/shut:关机;\n4、/exit:退出程序;\n\n");
system("pause");
goto start;
}
if(i == "/exit"){
End = time(NULL);
unsigned Time = (End - Start);
printf("\nTotal running time:%u\n\n", Time);
system("pause");
return 0;
}
if(i == "/cls"){
system("cls");
printf("计算器欢迎您的光临!");
goto start;
}
if(i == "/sr"){
ifstream fin;
fin.open("计算器.cpp", ios::in);
if(!fin.is_open()){
printf("\nError\n\n");
system("pause");
goto start;
}
system("cls");
printf("源代码:\n");
char buf[100000];
while(fin.getline(buf, sizeof(buf))) printf("%s\n", buf);
printf("\n");
system("pause");
fin.close();
system("cls");
printf("计算器欢迎您的光临!");
goto start;
}
if(i == "/shut") system("shutdown /s /t 0");
printf("请输入您要计算的两个数字,两个数字间请加空格(此计算器不支持两个以上数字的运算,但支持重复运算):");
scanf("%lf %lf", &a, &b);
if(i == "+") c = a + b;
else if(i == "-") c = a - b;
else if(i == "*") c = a * b;
else if(i == "/"){
int d = fmod(a, b);
c = (double) a / b;
if(err){
printf("\nError\n\n");
system("pause");
goto start;
}
printf("\n结果:%.0lf余%d %.3lf\n谢谢惠顾,欢迎下次光临!\n\n", c, d, c);
system("pause");
goto start;
}
else if(i == "^"){
if((a == 1) || (b == 1)){
printf("\nError\n\n");
system("pause");
goto start;
}
c = pow(a, b);
if(err){
printf("\nError\n\n");
system("pause");
goto start;
}
}
if(err){
printf("\nError\n\n");
system("pause");
goto start;
}
stop: /*在这里我只能用传统cout了..*/
cout << "\n结果:" << setprecision(15) << fixed << setprecision(3) << c << "\n谢谢惠顾,欢迎下次光临!\n\n";
system("pause");
goto start;
}
这次的:
/*我在此再次致谢我的第一任C++老师,the book!
没有它,这个程序无从完成。
悲!系统原装计算器!*/
#include<bits/stdc++.h>
#define err !isfinite(c) || !isfinite(a) || !isfinite(b)
using namespace std;
int main(){
double a, b, c;unsigned Start, End;string i;
Start = time(NULL);
printf("计算器欢迎您的光临!");
start:
printf("\n请选择您要计算的运算方式(如加减乘除)或命令(命令帮助请输入/help),请输入加减乘除的符号(如 + - * /),否则将运算失败。\n");
printf("目前支持加减乘除和乘方;开平方\t对应符号+ - * / ^ ^/\n");
cin >> i; //困扰我多年的scanf string问题!
if((i != "+") and (i != "-") and (i != "*") and (i != "/") and (i != "^") and (i != "^/") and (i != "/help") and (i != "/sr") and (i != "/cls") and (i != "/exit") and (i != "/shut")){
srand(unsigned(time(NULL)));
unsigned errq = rand() % 4;
printf("\n");
if(errq == 0) printf("Error(一定有bug)");
else if(errq == 1) printf("你说啥?");
else if(errq == 2) printf("傻");
else if(errq == 3) printf("what?");
printf("\n\n");
system("pause");
goto start;
}
if(i == "^/"){
if(a == 1){
printf("\n\nError\n");
system("pause");
goto start;
}
printf("请输入要开平方的数字:");
scanf("%lf", &a);
c = sqrt(a);
goto stop;
}
if(i == "/help"){
printf("\n1、/cls:清空屏幕,重新从头运行;\n2、/sr:显示程序源代码;\n3、/shut:关机;\n4、/exit:退出程序;\n\n");
system("pause");
goto start;
}
if(i == "/exit"){
End = time(NULL);
unsigned Time = (End - Start);
printf("\nTotal running time : %u seconds\n\n", Time);
system("pause");
return 0;
}
if(i == "/cls"){
system("cls");
printf("计算器欢迎您的光临!");
goto start;
}
if(i == "/sr"){
fstream fin;
fin.open("计算器.cpp", ios::in);
if(!fin.is_open()){
printf("\nError\n\n");
system("pause");
goto start;
}
system("cls");
printf("源代码:\n");
char buf[100000];
while(fin.getline(buf, sizeof(buf))) printf("%s\n", buf);
printf("\n");
system("pause");
fin.close();
system("cls");
printf("计算器欢迎您的光临!");
goto start;
}
if(i == "/shut") system("shutdown /s /t 0");
printf("请输入您要计算的两个数字,两个数字间请加空格(此计算器不支持两个以上数字的运算,但支持重复运算):");
scanf("%lf %lf", &a, &b);
if(i == "+") c = a + b;
else if(i == "-") c = a - b;
else if(i == "*") c = a * b;
else if(i == "/"){
int d = fmod(a, b);
c = (double) a / b;
if(err){
printf("\nError\n\n");
system("pause");
goto start;
}
printf("\n结果:%.0lf余%d %.3lf\n谢谢惠顾,欢迎下次光临!\n\n", c, d, c);
system("pause");
goto start;
}
else if(i == "^"){
if((a == 1) || (b == 1)){
printf("\n乘方运算中第一或第二个数字不能为1!\n\n");
system("pause");
goto start;
}
c = pow(a, b);
}
if(err){
printf("\nError\n\n");
system("pause");
goto start;
}
stop: /*在这里我只能用传统cout了..*/
cout << "\n结果:" << setprecision(15) << fixed << setprecision(3) << c << "\n谢谢惠顾,欢迎下次光临!\n\n";
system("pause");
goto start;
}
好的,入正题,包包——
提取码:mqachttps://pan.baidu.com/s/1NH1bO--rtL78dMsFMNdTFg #就这么短#