回复 57楼 QQ346957135
return 后面加break 不是多余的么?
#include<stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> //函数声明: double NumberParse(int temp_number_integer[],int temp_number_decemal[],int integer,int decemal); //此函数根据提供的整数部分和小数部分及(integer整数部分的数字个数)和(decemal小数部分的数字个数)返回实数 double NumberDeal(double number_one,double number_two,char deal);//实现两个实数的加减乘除的函数 void main() { int temp_number_integer[200];//整数部分 int temp_number_decemal[200];//小数部分 int integer =0;//输入整数部分的计数器 int decemal =0;//输入小数部分的计数器 int sign =1;//用来标记小数点 char deal;//记录运算符 char type;//临时变量,存储每次输入的字符 double number_one=0; double number_two=0;//对两个实数作初始化 int k=0;//用来标记负号 printf("这是一个加减乘除计算器,(输入格式为:4*5=):\n");//注意格式 while((type=getch())!=27)//循环输入,输入为ESC时跳出循环 { if(type==46)//小数点,46为小数点的ASCII码 { printf("%c",'.'); sign =0; } else if(type>=49&&type<=57)//0到9 { printf("%d",type-48); if(sign==1)//输入整数部分 { temp_number_integer[integer] =(int)type-48; integer++; } else//输入小数部分 { temp_number_decemal[decemal] =(int)type-48; decemal++; } } else { if(type=='=')//等号情况为最后输出,各值要进行初始化操作用于下次循环 { number_two =NumberParse(temp_number_integer,temp_number_decemal,integer,decemal); integer =0; decemal =0; sign =1; printf("%c",'='); printf("%f",NumberDeal(number_one,number_two,deal)); printf("%c",10); number_one=0; number_two=0; } else if(k==0&&type==45)//输入为负号且不是作为运算符 { printf("%c",type); k=1; } else //其他情况 { printf("%c",type); deal =type; if(number_one==0&&k==1)//第一个数为负实数 { number_one =(-1)*NumberParse(temp_number_integer,temp_number_decemal,integer,decemal); integer =0; decemal =0; sign =1;//初始化 } else//第一个数为正实数 { number_one =NumberParse(temp_number_integer,temp_number_decemal,integer,decemal); integer =0; decemal =0; sign =1;//初始化 } } } } exit(0); } //以下较为简单,不做注释 double NumberParse(int temp_number_integer[200],int temp_number_decemal[200],int integer,int decemal) { int i=0; double number=0; while(integer>0) { number=number + temp_number_integer[i]*pow((double)10,integer-1);//pow(x,y),计算x的次幂 integer --; i++; } if(decemal!=0) { i=0; while(i<=decemal) { number =number + temp_number_decemal[i]*pow(0.1,i+1); decemal --; i++; } } return number; } double NumberDeal(double number_one,double number_two,char deal) { switch(deal) { case '+' :return number_one+number_two;break; case '-' :return number_one-number_two;break; case '*' :return number_one*number_two;break; case '/' :return number_one/number_two;break; } }