C语言实现第一至第四版计算器
关注重工黑大帅,学习不迷路
第一版计算器:
实现功能:从键盘输入字符串(可包含数字或字符串),最终输出结果只显示数字,不能打印带有大写字母或小写字母的字符串。
第二版计算器:
实现功能:实现数字的加减乘除功能
第三版计算器:
实现功能:实现数字的加减乘除,新增功能是包括小数计算
第四版计算器:
实现功能:实现数字的加减乘除,包括小数运算,新增功能是实现运算符的优先级运算
代码实现:
//第一版计算器
#include
#include
void cyj(){char h[666]="";scanf("%s",h);int lenth=strlen(h);char w[666]={0};int j=0;for(int i=0;i<lenth;i++){if(h[i]>='0'&&h[i]<='9'){w[j]=h[i];j++;if((h[i+1]>='a'&&h[i+1]<='z')||(h[i+1]>='A'&&h[i+1]<='Z')){break;}}if((h[i]>='a'&&h[i]<='z')||(h[i]>='A'&&h[i]<='Z')){printf("");}}printf("%s\n",h);printf("%s\n",w);
}int main(){cyj();return 0;}
//第二版计算器
#include
#include
main(){char ch[20],b[20];int k=0,j=0,m,a[20],y=0;;gets(ch);m=strlen(ch);for(int i=0;i<=m;i++){if(ch[i]>='0'&&ch[i]<='9'){y=y*10+ch[i]-48;}if(ch[i]<'0'||ch[i]>'9'){b[j]=ch[i];j++;a[k]=y;k++;y=0;}}puts(b);for(int p=0;p<k;p++)printf("%d ",a[p]);float sum =a[0];for (int o = 1; o < k; o++){if (b[o-1] == '+')sum = sum + a[o];if (b[o-1] == '-')sum = sum - a[o];if (b[o-1] == '*')sum = sum * a[o];if (b[o-1] == '/')sum = sum / a[o]; }printf("\n%f",sum);
}
//第三版计算器
#include
#include
main(){char ch[20],b[20];int k=0,j=0,m;float a[20],y=0,p=1;gets(ch);m=strlen(ch);for(int i=0;i<=m;i++){if(ch[i]>='0'&&ch[i]<='9'&&p==1){y=y*10+ch[i]-48;if(ch[i+1]=='.'){p=p/10;i++;continue;}}if(ch[i]>='0'&&ch[i]<='9'&&p<1){y=y+(ch[i]-48)*p;}if(ch[i]<'0'||ch[i]>'9'){b[j]=ch[i];j++;a[k]=y;k++;y=0;p=1;}}puts(b);for(int t=0;t<k;t++)printf("%f ",a[t]);float sum =a[0];for (int o = 1; o < k; o++){if (b[o-1] == '+')sum = sum + a[o];if (b[o-1] == '-')sum = sum - a[o];if (b[o-1] == '*')sum = sum * a[o];if (b[o-1] == '/')sum = sum / a[o]; }printf("\n%f",sum);
}
//第四版计算器(实现方式1)
#include
#include
main(){float str1(char ch1,float m,float sum);char ch[20],b[20];int k=0,j=0,m,i;float a[20],y=0,p=1;char str(char ch);gets(ch);m=strlen(ch);for(i=0;i<=m;i++){if(str(ch[i])&&p==1){y=y*10+ch[i]-48;if(ch[i+1]=='.'){p=p/10;i++;continue;}}if(ch[i]>='0'&&ch[i]<='9'&&p<1){y=y+(ch[i]-48)*p;}if(!str(ch[i])){b[j]=ch[i];j++;a[k]=y;k++;y=0;p=1;}}puts(b);for(i=0;i<k;i++)printf("%f ",a[i]);float sum =a[0];for (i = 1; i < k; i++){sum=str1(b[i-1],a[i],sum);}printf("\n%f",sum);
}
char str(char ch){if(ch>='0'&&ch<='9')return 1;elsereturn 0;
}
float str1(char ch1,float m,float sum){if (ch1 == '+')sum = sum + m;if (ch1 == '-')sum = sum - m;if (ch1 == '*')sum = sum * m;if (ch1 == '/')sum = sum / m; return sum;
}
//第四版计算器(实现方式2)
#include
#include
main(){char ch[20],b[20];int k=0,j=0,m,i;float a[20],y=0,p=1;gets(ch);m=strlen(ch);//取出数字字符放入整形数组中取出字符放入另一个字符数组中 for( i=0;i<=m;i++){if(ch[i]>='0'&&ch[i]<='9'&&p==1){y=y*10+ch[i]-48;if(ch[i+1]=='.'){p=p/10;i++;continue;}}if(ch[i]>='0'&&ch[i]<='9'&&p<1){y=y+(ch[i]-48)*p;}if(ch[i]<'0'||ch[i]>'9'){b[j]=ch[i];j++;a[k]=y;k++;y=0;p=1;}}//分别输出取得的整形数组和字符数组 puts(b);for( i=0;i<k;i++)printf("%f ",a[i]);//先算乘除 for(i=0;i<j;i++){if(b[i]=='*'){a[i]=a[i]*a[i+1];for(m=i;m<j-1;m++){b[m]=b[m+1];}j--;for( m=i+1;m<k-1;m++){a[m]=a[m+1];}k--;}if(b[i]=='/'){a[i]=a[i]/a[i+1];for( m=i;m<j-1;m++){b[m]=b[m+1];}j--;for( m=i+1;m<k-1;m++){a[m]=a[m+1];}k--;}}//求加减 float sum =a[0];for ( i = 1; i < k; i++){if (b[i-1] == '+')sum = sum + a[i];if (b[i-1] == '-')sum = sum - a[i];}printf("\n%f",sum);
}
//第四版计算器(实现方式3)
#include
#include
void main(){float str1(char ch1,float m,float sum);char ch[20],b[20];int k=0,j=0,m,i;float a[20],y=0,p=1;char str(char ch);gets(ch);m=strlen(ch);for(i=0;i<=m;i++){if(str(ch[i])&&p==1){y=y*10+ch[i]-48;if(ch[i+1]=='.'){p=p/10;i++;continue;}}if(ch[i]>='0'&&ch[i]<='9'&&p<1){y=y+(ch[i]-48)*p;}if(!str(ch[i])){b[j]=ch[i];j++;a[k]=y;k++;y=0;p=1;}}//输出找出的两个数组puts(b);for(i=0;i<k;i++)printf("%f ",a[i]);//乘除for(i=0;i<j;i++){if(b[i]=='*'){a[i]=a[i]*a[i+1];for(m=i;m<j-1;m++){b[m]=b[m+1];}j--;for(m=i+1;m<k-1;m++){a[m]=a[m+1];}k--;}if(b[i]=='/'){a[i]=a[i]/a[i+1];for(m=i;m<j-1;m++){b[m]=b[m+1];}j--;for(m=i+1;m<k-1;m++){a[m]=a[m+1];}k--;}}float sum =a[0];for (i = 1; i < k; i++){sum=str1(b[i-1],a[i],sum);}printf("\n%f",sum);
}
//判断是否有数值字符
char str(char ch){if(ch>='0'&&ch<='9')return 1;elsereturn 0;
}//加减
float str1(char ch1,float m,float sum){if (ch1 == '+')sum = sum + m;if (ch1 == '-')sum = sum - m;return sum;
}
//第四版计算器(实现方式4)
#include
#include
#include
int i,j=0,k=0,m;//定义全局变量
int main(){double f(char ch[]);//函数定义 void sc(char a[],double b[]);//函数定义 double jj(char a[],double b[]);//函数定义 char ch[20],a[20];double b[20];gets(ch);//输入字符数学算式 m=strlen(ch);//取输入字符数组的长度 for(i=0;i<m;i++){b[k]=f(ch);k++;//调用函数 a[j]=ch[i];j++;//提取输入字符数组中的运算符 }//输出提取出来的值 puts(a);for(i=0;i<k;i++)printf("%f ",b[i]);//先做乘除法 for(i=0;i<j;i++){if(a[i]=='*'||a[i]=='/'){sc(a,b);//乘除法函数调用 } }//输出乘除运行后的数组值 puts(a);for(i=0;i<k;i++)printf("%f ",b[i]);printf("\n%f",jj(a,b));//加减运算函数的调用及最后结果的输出 } //求字符数组中的数学数字函数
double f(char ch[]){char p[10]={0};int s=0;for( ;i<m;i++){if(ch[i]>='0'&&ch[i]<='9'||ch[i]=='.'){p[s]=ch[i];s++;}else{break;}}return atof(p);
}//单个乘除运算函数
void sc(char a[],double b[]){if(a[i]=='*'){b[i]=b[i]*b[i+1];}if(a[i]=='/'){b[i]=b[i]/b[i+1];}for(m=i+1;m<k-1;m++){b[m]=b[m+1];}k--;for(m=i;m<j-1;m++){a[m]=a[m+1];}j--;}
//加减运算函数
double jj(char a[],double b[]){double sum=b[0];for(i=0;i<j;i++){if(a[i]=='+'){sum=sum+b[i+1];}if(a[i]=='-'){sum=sum-b[i+1];}}return sum;
}
您的点赞和关注是我学习的强大动力之一
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
