C语言简易计算器项目
C语言项目练习之简易计算器
#include <stdio.h>
#include <math.h>
int main(int argc, const char *argv[])
{
int data1,data2,xunhuan4,mode = 1;
char op;
start:
printf("该计算器有普通计算模式(1)特殊模式(2):\n");
scanf("%d",&mode);
if(mode == 1){
printf("||||||||||||||||||||模式1||||||||||||||||||||||||||\n");
printf(" \n \n \n data1 op data2\n");
input:
scanf("%d %c %d",&data1,&op,&data2);
switch(op){
case '+':
printf("%d %c %d = %d\n",data1,op,data2,data1+data2);
break;
case '-':
printf("%d %c %d = %d\n",data1,op,data2,data1-data2);
break;
case '*':
printf("%d %c %d = %d\n",data1,op,data2,data1*data2);
break;
case '/':
if(data2 == 0){
printf("分母是零,请重新输入:");
goto input;}
else{
printf("%d %c %d = %.3f\n",data1,op,data2,(float)data1/data2);//防止整除取整,强制转换data1为浮点型
break;}
default: printf("该计算器没有此功能,请重新输入:");
goto input;
}
goto loop;
}
else if(mode == 2){
printf("||||||||||||||||||||模式2|||||||||||||||||||||||||\n \n \n \n");
printf("(1)开平方 (2)平方 \n");
printf("(3)进制转换 (4)正在开发...\n");
int mode_2 = 0;
printf("\n \n请输入模式(1/2/3/4): ");
scanf("%d",&mode_2);
if(mode_2 == 1){
float mode_2_var1;
printf("_--------------------------模式1(开平方)---------------------\n \n");
printf("输入格式为 --- num :");
scanf("%f",&mode_2_var1);
printf("%f",sqrt(mode_2_var1));
goto loop;
}
else if(mode_2 == 2){
printf("----------------------------模式2(平方)------------------------\n \n");
printf("输入格式为 ---a b----(a的b次方)");
float mode_2_2_var1,mode_2_2_var2;
scanf("%f %f",&mode_2_2_var1,&mode_2_2_var2);
printf("%.1f的%.1f次方为%.2f\n",mode_2_2_var1,mode_2_2_var2,pow(mode_2_2_var1,mode_2_2_var2));
goto loop;
}
else if(mode_2 == 3){
printf("----------------------------模式3(进制转换) ---------------------\n \n");
printf("请先输入数据的进制:");
int mode_2_3_var3;
jinzhi:
scanf("%d",&mode_2_3_var3);
printf("输入格式为-----a c-----(a的b进制表示)(只能转换16,10,8进制)--------");
int mode_2_3_var1,mode_2_3_var2,mode_2_3_jinzhi,mode_2_3_number;
jinzhi2:
switch (mode_2_3_var3){//输入数据的键入格式
case 8:
scanf("%o %d",&mode_2_3_number,&mode_2_3_jinzhi);
break;
case 10:
scanf("%d %d",&mode_2_3_number,&mode_2_3_jinzhi);
break;
case 16:
scanf("%x %d",&mode_2_3_number,&mode_2_3_jinzhi);
break;
default: printf("你的进制数输入错误,请重新输入:");
goto jinzhi;}
switch(mode_2_3_jinzhi){
case 8:
printf("%o\n",mode_2_3_number);
break;
case 10:
printf("%d\n",mode_2_3_number);
break;
case 16:
printf("%#x\n",mode_2_3_number);
break;
default:
printf("进制输入错误,请重新输入:");
goto jinzhi2;
}
}
else if(mode_2 == 4){
printf("开发人员正在开发,敬请期待!\n");
goto loop;
}
loop:
printf("如果要继续输入请输入1,退出请按0\n");
scanf("%d",&xunhuan4);
if(xunhuan4 == 1){
goto start;}
else if(xunhuan4 == 0){
goto end;}
}
end:
printf("--------------------欢迎使用此计算器,再见!”---------------------------\n");
return 0;
}