C语言计算器(上)
接下来对代码由浅入深
No.1
简易计算器,具有加减乘除,平方,立方和退出功能:
*计算保留两位小数
a--加法 b--减法 c--乘法 d--除法 e--开放 f--平方 g--立方 q--退出
运行示例:
&欢迎使用简易计算机&
请输入以下字母:
a:加法 b:减法 c:乘方 d:除法
e:开方 f:平方 g:立方 q:退出
请输入你的选项:e
请输入数值:5
2.00的开方等于2.24
代码示例:
代码:
#include<stdio.h>
#include <math.h>
float num1,num2;
float *p1=&num1,*p2=&num2;
void input1(){
printf("请输入数值:");
scanf("%f",p1);
}
void input2(){
printf("请输入两个数值,中间用空格隔开:");
scanf("%f %f",p1,p2);
}
void add(){
input2();
printf("%.2f加%.2f等于%.2f",*p1,*p2,*p1+*p2);
}
void sub(){
input2();
printf("%.2f减%.2f%等于%.2f",*p1,*p2,*p1-*p2);
}
void mul(){
input2();
printf("%.2f乘与%.2f等于%.2f",*p1,*p2,*p1*(*p2));
}
void count_d(){
input2();
printf("%.2f除于%.2f等于%.2f",*p1,*p2,*p1/(*p2));
}
void count_e(){
input1();
printf("%.2f的开方等于%.2f",*p1,sqrt(*p1));
}
void count_f(){
input1();
printf("%.2f的平方等于%.2f",*p1,*p1*(*p1));
}
void count_g(){
input1();
printf("%.2f的立方等于%.2f",*p1,pow(*p1,3));
}
int main(){
char in;
printf("***欢迎使用简易计算机***\n");
printf("--------------------------------");
printf("a. 加法\t\t b.减法 ");
printf("c. 乘法 d. 除法 ");
printf("e. 开方\t\t f.平方 ");
printf("g. 立方\t\t q.退出 ");
printf("--------------------------------");
printf("请输入你的选项:");
scanf("%c",&in);
switch(in){
case 'a' :
add();break;
case 'b' :
sub();break;
case 'c' :
mul();break;
case 'd' :
count_d();break;
case 'e':
count_e();break;
case 'f':
count_f();break;
case 'g' :
count_g();break;
case 'q' :
break}
}
代码分析:在运行代码是必须先要输入特定字母,接下来进行此次算法;此外对加减乘除只限于两个数之间的运算,此代码没有实用性(微笑)。
No.2
进阶计算器
*本计算器可进行加减乘除,开方,乘方;
*可对数累计运算a->加法 b->减法 c->乘法 d->除法 e->开放 f->乘方 o->当前值 p->清零 q--退出
运行代码
#include<stdio.h>
#include <math.h>
float num1,num2,sum=0;
float *p1=&num1,*p2=&num2,*ps=∑
char in,*pc=∈
int ojbk=0,*pi=&ojbk;
void input1(){
printf("亲!请输入数值:");
scanf("%f",p1);
}
void input2(){
printf("亲!请输入两个数值,中间用空格隔开:");
scanf("%f %f",p1,p2);
}
void input3(){
printf("请再次输入数值:");
scanf("%f",p2);
}
void add(){
if(*pi==0){
input2();
*ps=*p1+*p2;
*pi=1;
}
else{
input3();
*ps+=*p2;
}
printf("=%.2f\n",*ps);
}
void sub(){
if(*pi==0){
input2();
*ps=*p1-*p2;
*pi=1;
}
else{
input3();
*ps-=*p2;
}
printf("=%.2f\n",*ps);
}
void mul(){
if(*pi==0){
input2();
*ps=*p1*(*p2);
*pi=1;
}
else{
input3();
*ps*=*p2;
}
printf("=%.2f\n",*ps);
}
void count_d(){
if(*pi==0){
input2();
*ps=*p1/(*p2);
*pi=1;
}
else{
input3();
*ps/=*p2;
}
printf("=%.2f\n",*ps);
}
void count_e(){
if(*pi==0){
input1();
*ps=sqrt(*p1);
*pi=1;
}
else{
*p1=*ps;
*ps=sqrt(*ps);
}
printf("%.2f的开方等于%f\n",*p1,*ps);
*p1=*ps;
}
void count_f(){
if(*pi==0){
input2();
*ps=pow(*p1,*p2);
*pi=1;
}
else{
*p1=*ps;
input3();
*ps=pow(*ps,*p2);
}
printf("%.2f的%.2f次方等于%f\n",*p1,*p2,*ps);
*p1=*ps;
}
void count_o(){
printf("值:%.2f\n",*ps);
}
void part()
{
printf("请输入你的选项:");
switch(*pc=getchar()){
case 'a' :
add();
break;
case 'b' :
sub();break;
case 'c' :
mul();break;
case 'd' :
count_d();break;
case 'e':
count_e();break;
case 'f':
count_f();break;
case 'o' :
count_o();break;
case 'p':
*pi=0;
*ps=0;
printf("已清零\n");
break;
}
}
int main()
{
printf("&欢迎使用进阶计算机&\n");
printf("请输入以下字母:\na:加法 b:减法 c:乘法 d:除法\ne:开方 f:乘方\np:清零 q:退出\n");
do{
part();
}while(*pc!='q');
return 0;
}
代码示例:
这个代码有个小bug,就是在输入选项的时候会多打出来一个“请输入你的选项”。
此毛病没看出来咋回事,应该是多循环了一次。
此次计算器代码就这两个,后续还会再编一个高级的,嘿嘿!