c语言设计一个简单的计算器程序 C语言编程:输入两个操作数和一个运算符,编程实现简单的计算器...

\u7528switch\u8bed\u53e5\u7f16\u7a0b\u8bbe\u8ba1\u4e00\u4e2a\u7b80\u5355\u7684\u8ba1\u7b97\u5668\u7a0b\u5e8f

#include
int main( )
{
double a, b;
char op;
scanf("%lf%c%lf", &a, &op, &b);
switch (op)
{
case '+':
printf("%lf + %lf = %lf\n", a, b, a + b);
break;
case '-':
printf("%lf - %lf = %lf\n", a, b, a - b);
break;
case '*':
printf("%lf * %lf = %lf\n", a, b, a * b);
break;
case '/':
if (b != 0)
printf("%lf / %lf = %lf\n", a, b, a / b);
else
printf("\u9664\u6570\u4e0d\u80fd\u662f0! \n");
break;
}
}

\u5982\u679c\u6211\u7684\u56de\u7b54\u4f60\u8fd8\u6ee1\u610f\u8bb0\u5f97\u9009\u4e2a\u6ee1\u610f\u7b54\u6848\u54e6#include
void main()
{
float a,b;
char c;
printf("\u8bf7\u8f93\u5165\u4e24\u4e2a\u64cd\u4f5c\u6570:");
scanf("%f",&a);
scanf("%f",&b);
getchar();
printf("\u8bf7\u9009\u62e9\u64cd\u4f5c\u8fd0\u7b97:");
scanf("%c",&c);
switch(c)
{
case '+':
printf("\u7ed3\u679c\u662f:%f\n",a+b);
break;
case '-':
printf("\u7ed3\u679c\u662f:%f\n",a-b);
break;
case '*':
printf("\u7ed3\u679c\u662f:%f\n",a*b);
break;
case '/':
printf("\u7ed3\u679c\u662f:%f\n",a/b);
break;
default:
printf("\u65e0\u6b64\u64cd\u4f5c!");
}

}

#include<stdio.h>//计算器

voidmenu()//自定义的菜单界面

printf("--------------------\n");

printf("请输入你的选择\n");

printf("1.+\n");

printf("2.-\n");

printf("3.*\n");

printf("4./\n");

printf("--------------------\n");

intmain()

inti=0;

intj=0;

intnum=0;//计算结果存放在nun

intselect=0;//选择的选项存放在select

do//do-while先执行再判断循环条件,即可实现重复计算功能

menu();//打印出菜单界面

scanf("%d",&select);//输入你的选项

printf("请输入计算值:");

scanf("%d%d",&i,&j);//输入要计算的数值

switch(select)

case1:

printf("%d+%d=%d\n",i,j,num=i+j);//实现加法功能

break;

case2:

printf("%d-%d=%d\n",i,j,num=i-j);//实现减法功能

break;

case3:

printf("%d*%d=%d\n",i,j,num=i*j);//实现乘法功能

break;

case4:

printf("%d-%d=%d\n",i,j,num=i/j);//实现除法功能

break;

default:

printf("输入有误重新选择");

break;

}while(select);

return0;

运行结果:

扩展资料:

return表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。

return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。



#include<<a href="https://www.baidu.com/s?wd=stdio.h&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4ryfLuADkP1bYmvD3nhmz0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPH6srjc4rH61" target="_blank" class="baidu-highlight">stdio.h</a>>

void main() { float x,y,z; char c;

scanf("%f%c%f",&x,&c,&y);

switch ( c ) {

case '+': z=x+y; break;

case '-': z=x-y; break;

case '*': z=x*y; break;

case '/': z=( y==0 )?(0):(x/y); break;

default: z=0; break;

}

printf("%f%c%f=%f
",x,c,y,z);

}



#include
#include
#include
#include
#define MaxQSize 80

float qlist[MaxQSize],qlist1[MaxQSize],qlist2[MaxQSize]; //定义三个全局队列
int front=0,rear=0,front1=0,front2=0,rear1=0,rear2=0,count=0,count1=0,count2=0;//定义三个队列头结点、尾结点、数据个数
main()
{
char c[80];
void Enter(float),pop(),ClearStack();
printf("input string:(n:sin,o:cos,s:sqrt)\n");
while(gets(c),*c!='q' ||*c!='Q')
{
switch(*c)
{
case '+':
case '*':
case 's':
case 'n': //求SIN
case 'o': //求COS
case '/': //将符号入第一个队列
{
if(count==MaxQSize)
{
printf("Quere overflow!");
exit(1);
}
count++;
qlist[rear]=*c;
rear=(rear+1)%MaxQSize;
break;}
case '-':
{
if(strlen(c)>1) //如果是负号,则将负号和数一起入第二个队列
Enter(atof(c));
else //否则,说明是减号,入第一队列
if(count==MaxQSize)
{
printf("Quere overflow!");
exit(1);
}
count++;
qlist[rear]=*c;
rear=(rear+1)%MaxQSize;
break;}
case '=':
pop(); //显示结果
break;
case 'c':
ClearStack();
break;
case 'q':
ClearStack();
exit(1);
default:
Enter(atof(c));
break;
}
}
return 0;
}

void Enter(float num) //将数据入第二个队列
{
if(count1==MaxQSize)
{
printf("Queue overflow!\n");
exit(1);
}
count1++;
qlist1[rear1]=num;
rear1=(rear1+1)%MaxQSize;

}

void ClearStack() //将三个队列清空
{
count=0;
count1=0;
count2=0;
front=0;
rear=0;
front1=0;
rear1=0;
front2=0;
rear2=0;
}

void pop() //显示结果
{
float QFront(float num1,float num2,char *temp);
float num1,num2;
float sum;
char temp;
temp=qlist[front]; //将第一个队列中的头结点读出来
while(count1!=0) //判断第二个队列是否有数
{
temp=qlist[front]; //将队列中头结点读出来
sum=QFront(num1,num2,&temp);
count--;
front=(front+1)%MaxQSize;//将第一个队列头指针加1
}
if(count!=0 && temp=='s')
sum=sqrt(qlist2[front2]);
if(count!=0 && temp=='n')
sum=sin(qlist2[front2]);
if(count!=0 && temp=='o')
sum=cos(qlist2[front2]);
printf("%f",sum);
}

float QFront(float num1,float num2,char *temp)
{
float number,numb1;
float QFront1();
void QInsert(float);
num1=QFront1(); //先读出一个数
switch(*temp)
{
case '+':
if(count2==0)
{
num2=QFront1();//读出第二个数
number=num1+num2;
QInsert(number);//将结果存入第三个队列
}
else
{
number=num1+qlist2[front2];
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;

case '-':
if(count2==0)
{
num2=QFront1();
number=num1-num2;
printf("number=%f\n",number);
QInsert(number);
}
else
{
number=qlist2[front2]-num1;
printf("number=%f\n",number);
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;

case '*':
if(count2==0) //如果第三个队列中没有数据,则从第二个队列中读出一个数据
{
num2=QFront1();
number=num1*num2;
QInsert(number);
}
else //否则,从第三个队列中读出数据
{
number=qlist2[front2]*num1;
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;
case '/':
if(count2==0)
{
num2=QFront1();
if(num2==0)
{
printf("divied by 0");
ClearStack();
exit(1);
}
else
{
number=num1/num2;
QInsert(number);
}
}
else
{
if(num1==0)
{
printf("divide by 0");
ClearStack();
exit(1);
}
else
{
number=qlist2[front2]/num1;
front2=(front2+1)%MaxQSize;
QInsert(number);
}
}
break;

case 's':
if(count2==0)
{
number=sqrt(num1);
QInsert(number);
}
else
{
number=sqrt(qlist2[front2]);
printf("number=%d\n",number);
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;
case 'n':
if(count2==0)
{
number=sin(num1);
QInsert(number);
}
else
{
number=sin(qlist2[front2]);
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;

case 'o':
if(count2==0)
{
number=cos(num1);
printf("number=%d\n",number);
QInsert(number);
}
else
{
number=cos(qlist2[front2]);
printf("number=%d\n",number);
front2=(front2+1)%MaxQSize;
QInsert(number);
}
break;
}
return number;
}

float QFront1() //从第一个数据读数据
{
float temp;
if(count1==0)
{
printf("Deleting from an empty queue!\n");
exit(1);
}
temp=qlist1[front1];
count1--;
front1=(front1+1)%MaxQSize;
return temp;
}

void QInsert(float number) //将结果存入第三个队列
{
if(count2==MaxQSize)
{
printf("Queue overflow!\n");
exit(1);
}
count2++;
qlist2[rear2]=number;
rear2=(rear2+1)%MaxQSize;
}

其实这个程序用链表实现更好,但是由于时间关系,所以用了数组。当然,这个程序还不是很完善,还有很多地方需要改进,比如可以用图形界面来进行操作、可以将三个队列放入一个结构体中等。

/*
2013年12月23日 12:43:46
目的:计算器的实现
*/

# include <stdio.h>
# include <ctype.h>
# include <math.h>

char get_choice(void); //获取用户输入的选项,并建立目
char get_first(void); //获取用户输入的选项,并剔除错误输入
float get_int(void); //获取用户输入的计算值
float add(void); //定义加法函数
float subtraction(void); //定义减法函数
float multiplication(void); //定义乘法函数
float division(void); //定义除法函数
float extract(void); //定义开方函数
float square(void); //定义平方函数
float cube(void); //定义立方函数

int count = 0;
int main(void)
{
char choice;

printf("***欢迎使用由小钱制作的计算器***\n");
choice = get_choice();
while(choice != 'q')
{
switch(choice)
{
case 'a':
add(); break;
case 'b':
subtraction(); break;
case 'c':
multiplication(); break;
case 'd':
division(); break;
case 'e':
extract(); break;
case 'f':
square(); break;
case 'g':
cube(); break;
default :
printf("您输入有误,请重新输入:"); break;
}
fflush(stdin);
choice = get_choice();
}

printf("bye");

return 0;
}

//获取用户输入的选项,并建立目录
char get_choice(void)
{
char ch;
int a = 0;

//建立目录

printf("\n--------------------------------\n");
printf("a. 加法\t\t\tb. 减法\nc. 乘法\t\t\td. 除法\n");
printf("e. 开方\t\t\tf. 平方\ng. 立方\t\t\tq. 退出\n");
printf("--------------------------------\n");
printf("请输入你的选项:");

ch = get_first();
while(ch == ' ' || ch == '\n' || ch == '\t')
ch = get_first();

//判断用户输入的选项是否有误
while((ch<'a' || ch>'g') && ch !='q')
{
putchar(ch);
printf(" 你输入的选项有误,请重新输入:");
ch = get_first();

}

return ch;
}

//获取用户输入的选项,并剔除错误输入
char get_first(void)
{
char ch;

ch = getchar();

//剔除由用户输入选项时产生的换行符
while(ch == '\n')
{
ch = getchar();
}

return ch;
}

//获取用户输入的计算值
float get_int(void)
{
float input;
char ch;
int a;

if(count == 0)
printf("亲!请输入数值:");
if(count == 1)
printf("亲!请输入第一个数值:");
if(count == 2)
printf("亲!请输入第二个数值:");

a = scanf("%f", &input);

//判断用户的输入是否为一个数值
while(a != 1)
{
//剔除用户输入错误的字符
while((ch = getchar()) != '\n')
{
putchar(ch);
printf(" 不是一个数值,请输入例如3、111.2、或者-1");
a = scanf("%f", &input);
}
}

return input;
}

//定义加法函数
float add(void)
{
float i, j, sum;

count = 0;
count = count+1;
i = get_int();
count = count+1;
j = get_int();
sum = i + j;

printf("%.2f + %.2f = %.2f\n", i, j, sum);

return sum;
}

//定义减法函数
float subtraction(void)
{
float i, j, sum;

count = 0;
count = count+1;
i = get_int();
count = count+1;
j = get_int();
sum = i - j;

printf("%.2f - %.2f = %.2f\n", i, j, sum);

return sum;
}

//定义乘法函数
float multiplication(void)
{
float i, j, sum;

count = 0;
count = count+1;
i = get_int();
count = count+1;
j = get_int();
sum = i * j;

printf("%.2f * %.2f = %.2f\n", i, j, sum);

return sum;
}

//定义除法函数
float division(void)
{
float i, j, sum;

count = 0;
count = count+1;
i = get_int();
count = count+1;
j = get_int();

//判断除数是否为0
while(j == 0)
{
printf("除数不能为0\n请重新输入!!!\n");
j = get_int();
}
sum = i / j;

printf("%.2f / %.2f = %.2f\n", i, j, sum);

return sum;
}

//定义开方函数
float extract(void)
{
float i, sum;

count = 0;
i = get_int();
//判断开方数是否小于0,如果小于0,则让用户重新输入
while(i < 0)
{
printf("请输入大于0的数值\n");
i = get_int();
}
sum = sqrt(i);

printf("%.2f的开方等于%.2f\n", i, sum);

return sum;
}

//定义平方函数
float square(void)
{
float i, sum;

count = 0;
i = get_int();
sum = i * i;

printf("%.2f的平方等于%.2f\n", i, sum);

return sum;
}

//定义立方函数
float cube(void)
{
float i, sum;

count = 0;
i = get_int();
sum = i * i * i;

printf("%f的立方等于%.3f\n", i, sum);

return sum;
}

#include<cstdio>
int main()
{
for(;;){
int a,b;
char c;
scanf("%d %d %c",&a,&b,&c);
if(c=='+'){
printf("%d",a+b);
}
if(c=='-'){
printf("%d",a-b);
}
if(c=='*'){
printf("%d",a*b);
}
if(c=='/'){
printf("%d",a/b);
}
}
return 0;
}

  • 鎬庝箞鐢C璇█缂栧啓璁$畻鍣ㄧ▼搴?
    绛旓細></</</#include <stdio.h></int main() {</ char operator;</ double num1, num2, result;</ printf("娆㈣繋鏉ュ埌C璇█璁$畻鍣锛佽杈撳叆杩愮畻绗 (+, -, *, /): ");</ scanf("%c", &operator);</ printf("璇疯緭鍏ヤ袱涓暟瀛: ");</ scanf("%lf %lf", &num1...
  • C璇█鎬庢牱缂栧啓涓涓绠楀櫒?
    绛旓細1銆佹柊寤涓涓宸ョ▼鍜.c鏂囦欢 锛岃緭鍏ュご鏂囦欢鍜屼富鍑芥暟銆2銆佸畾涔 鍙橀噺绫诲瀷锛岃緭鍏ユ暟瀛椼3銆佺敤while璇彞鍒ゆ柇鏁板瓧鏄惁鍦1鍒4鑼冨洿鍐呫4銆佽皟鐢ㄥ嚱鏁般5銆佺敤涓涓猣or璇彞杈撳嚭銆6銆佺紪璇戙佽繍琛 锛屽緱鍒版渶鍚庣殑缁撴灉銆
  • c璇█璁捐涓涓畝鍗曠殑璁$畻鍣ㄧ▼搴
    绛旓細do锛忥紡do锛峸hile鍏堟墽琛屽啀鍒ゆ柇寰幆鏉′欢锛屽嵆鍙疄鐜伴噸澶璁$畻鍔熻兘 锝 menu锛堬級锛涳紡锛忔墦鍗板嚭鑿滃崟鐣岄潰 scanf锛堬紓锛卍锛傦紝锛唖elect锛夛紱锛忥紡杈撳叆浣犵殑閫夐」 printf锛堬紓璇疯緭鍏ヨ绠楀硷細锛傦級锛泂canf锛堬紓锛卍锛卍锛傦紝锛唅锛岋紗j锛夛紱锛忥紡杈撳叆瑕佽绠楃殑鏁板 switch锛坰elect锛夛經 case1锛歱rintf锛堬紓锛卍锛嬶紖d锛濓紖d锛糿锛...
  • c璇█銆傜紪涓涓杩愮畻鍣ㄧ▼搴銆傝姹傝兘瀹炵幇涓や釜鏁扮殑鍔犲噺涔橀櫎鍥涚杩愮畻銆傝緭鍏...
    绛旓細c=a*b;printf("%f*%f=%f\n",a,b,c);break;case '/':switch(b==0){ case 1:printf("杈撳叆鏈夎锛岃閲嶈瘯:"); break;case 0:c=a/b;printf("%f/%f=%f\n",a,b,c);break;}break;default:printf("杈撳叆琛ㄨ揪寮忛敊璇垨璇璁$畻鍣涓嶅叿澶 %ch 鍔熻兘\n",ch);} } 杩欎釜绋嬪簭璇曡繃浜嗭紝瀹屽叏鑳...
  • 鎬庢牱鐢C璇█缂栧啓涓涓畝鍗曠殑鍙互杩涜鍔犲噺涔橀櫎杩愮畻娣峰悎杩愮畻鐨勮绠楀櫒?
    绛旓細鐢C璇█缂栧啓涓涓畝鍗曠殑鍙互杩涜鍔犲噺涔橀櫎杩愮畻娣峰悎杩愮畻鐨勮绠楀櫒鐨勬柟娉曪細1銆佹墦寮visual C++ 6.0-鏂囦欢-鏂板缓-鏂囦欢-C++ Source File锛2銆佽緭鍏ラ澶勭悊鍛戒护鍜屼富鍑芥暟锛歩nclude<stdio.h> /*鍑芥暟澶达細杈撳叆杈撳嚭澶存枃浠*/ void main()/*绌虹被鍨嬶細涓诲嚱鏁*/ 3銆佸畾涔夊彉閲忥細int a,b,d锛 /*瀹氫箟鍙橀噺鐨勬暟鎹被鍨嬩负...
  • 鐢C璇█瀹炵幇涓涓畝鍗曠殑璁$畻鍣,瑕佹眰鏈夐潰绉拰浣撶Н杈撳嚭銆
    绛旓細浠g爜濡備笅锛歩nclude<stdio.h>int main(){float a,b,c,d;scanf("%f %f",&a,&b);//杈撳叆闀垮拰瀹絚=a*b;d=2*(a+b);printf("S=%.2f L=%.2f\n",c,d);//S鏄潰绉紝L鏄懆闀縭eturn 0;}
  • 鐢c璇█缂涓涓绠楀櫒绋嬪簭,鑳藉瀹炵幇鍩烘湰鐨勫姞鍑忎箻闄,鑳藉杈撳嚭杩愮畻瀵硅薄...
    绛旓細include <stdio.h>int main(void){double a, b;int chose;printf("娆㈣繋浣跨敤鎴鐨勮绠楀櫒\n");while (1){printf("***\n");printf("1銆佷袱鏁扮浉鍔燶n");printf("2銆佷袱鏁扮浉鍑廫n");printf("3銆佷袱鏁扮浉涔榎n");printf("4銆佷袱鏁扮浉闄n");printf("5銆侀鍑篭n");printf("***\n");scanf(...
  • ...鐢╯witch璇彞缂栫▼璁捐涓涓畝鍗曠殑璁$畻鍣ㄧ▼搴銆傝姹傛牴鎹
    绛旓細甯繖鍐欎竴涓C璇█鐨绋嬪簭绠鍗曠殑璁$畻鍣ㄧ▼搴忕敤switch璇彞缂栫▼璁捐涓涓畝鍗曠殑璁$畻鍣ㄧ▼搴銆傝姹傛牴鎹敤鎴蜂粠閿洏杈撳叆琛ㄨ揪寮: 鎿嶄綔鏁1 杩愮畻绗p 鎿嶄綔鏁2 璁$畻琛ㄨ揪寮忕殑鍊,鎸囧畾鐨勭畻鏈繍绠楃涓哄姞(+)銆佸噺(-)銆佷箻(*)銆侀櫎(/)杈撳叆:鎿嶄綔鏁癮 杩愮畻绗p 鎿嶄綔鏁癰,鍏朵腑a,b鍧囦负鏁存暟,涓旂粷瀵瑰煎皬浜100,op涓+銆-銆*銆/涔嬩竴杈撳嚭 ...
  • 鎬庝箞鐢C璇█缂栧啓涓涓畝鍗曡绠楀櫒绋嬪簭銆
    绛旓細1銆侀鍏堝湪鎵撳紑鐨C璇█杞欢绐楀彛涓紝鍦∕ain鍑芥暟鐨勪笂鏂癸紝鍐欎笂闃朵箻鍑芥暟鐨勬鏋讹紝濡備笅鍥炬墍绀恒2銆佺劧鍚庡畾涔涓涓鍙橀噺銆恟esult銆戯紝濡備笅鍥炬墍绀恒3銆佺劧鍚庤緭鍏f鍒ゆ柇璇彞锛屽氨鍙互鍐欎笅绋嬪簭鐨勫叧閿鍙ワ紝濡備笅鍥炬墍绀恒4銆佹帴涓嬫潵灏卞彲浠ヨ皟鐢ㄨ緭鍑猴紝濡備笅鍥炬墍绀恒5銆佹渶鍚庣偣鍑昏繍琛岋紝濡備笅鍥炬墍绀猴紝灏卞彲浠ヨ繍琛屾祴璇曘
  • 鐢C璇█鍋涓涓绠楀櫒,鑳藉疄鐜板姞鍑忎箻闄ゆ贩鍚堣繍绠?
    绛旓細鏄殑锛屽彲浠ヤ娇鐢C璇█缂栧啓涓涓璁$畻鍣ㄧ▼搴锛岃兘澶熷疄鐜板姞銆佸噺銆佷箻銆侀櫎绛夋贩鍚堣繍绠椼備笅闈㈡槸涓涓畝鍗曠殑绀轰緥绋嬪簭锛歚``c include <stdio.h> int main() { char operator;double num1, num2, result;printf("Enter an operator (+, -, *, /): ");scanf("%c", &operator);printf("Enter two ...
  • 扩展阅读:c语言代码生成器 ... c++编写简单计算器 ... c#制作简易计算器 ... 万能计算器 ... c语言简易计算器 ... c语言新手入门代码 ... c语言小型计算器 ... 简单计算器编程代码 ... c#编写一个简易计算器 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网