怎样用c语言编一个简单的计算器? 用C语言编写一个简单的计算器1

\u600e\u4e48\u7528C\u8bed\u8a00\u8bbe\u8ba1\u4e00\u4e2a\u7b80\u5355\u8ba1\u7b97\u5668\uff1f

#include void add(int a,int b,int c) { c=a+b; printf("%d\t",c); printf("\n"); } void minus(int a,int b,int c) { c=a-b; printf("%d\t",c); printf("\n"); } void multiplication(int a,int b,int c) { c=a*b; printf("%d\t",c); printf("\n"); } void div(int a,int b,int c) { c=(float)a/(float)b; printf("%f\t",c); printf("\n"); } main() { int a,b,c; char p; puts("input A:\n"); scanf("%d",&a); puts("input B:\n"); scanf("%d",&b); puts("input operation:\n"); getchar(); p=getchar(); if(p=='+') add(a,b,c);else if(p=='-') minus(a,b,c);else if(p=='*') multiplication(a,b,c);else if(p=='/') div(a,b,c);else puts("\u6ca1\u6709\u6ce8\u518c\u8fd9\u4e2a\u8fd0\u7b97\u7b26\u53f7\n"); }\u4ee5\u4e0a\u662f\u8bbe\u8ba1\u7684\u4e00\u4e2a\u7b80\u6613\u8ba1\u7b97\u5668\u3002\u53ef\u4ee5\u8fdb\u884c\u76f8\u5e94\u7684\u52a0\u51cf\u4e58\u9664\u3002
\u7b80\u4ecb\uff1aC\u8bed\u8a00\u662f\u4e00\u79cd\u8ba1\u7b97\u673a\u7a0b\u5e8f\u8bbe\u8ba1\u8bed\u8a00\uff0c\u5b83\u65e2\u5177\u6709\u9ad8\u7ea7\u8bed\u8a00\u7684\u7279\u70b9\uff0c\u53c8\u5177\u6709\u6c47\u7f16\u8bed\u8a00\u7684\u7279\u70b9\u3002\u5b83\u7531\u7f8e\u56fd\u8d1d\u5c14\u7814\u7a76\u6240\u7684D.M.Ritchie\u4e8e1972\u5e74\u63a8\u51fa\uff0c1978\u5e74\u540e\uff0cC\u8bed\u8a00\u5df2\u5148\u540e\u88ab\u79fb\u690d\u5230\u5927\u3001\u4e2d\u3001\u5c0f\u53ca\u5fae\u578b\u673a\u4e0a\uff0c\u5b83\u53ef\u4ee5\u4f5c\u4e3a\u5de5\u4f5c\u7cfb\u7edf\u8bbe\u8ba1\u8bed\u8a00\uff0c\u7f16\u5199\u7cfb\u7edf\u5e94\u7528\u7a0b\u5e8f\uff0c\u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u5e94\u7528\u7a0b\u5e8f\u8bbe\u8ba1\u8bed\u8a00\uff0c\u7f16\u5199\u4e0d\u4f9d\u8d56\u8ba1\u7b97\u673a\u786c\u4ef6\u7684\u5e94\u7528\u7a0b\u5e8f\u3002\u5b83\u7684\u5e94\u7528\u8303\u56f4\u5e7f\u6cdb\uff0c\u5177\u5907\u5f88\u5f3a\u7684\u6570\u636e\u5904\u7406\u80fd\u529b\uff0c\u4e0d\u4ec5\u4ec5\u662f\u5728\u8f6f\u4ef6\u5f00\u53d1\u4e0a\uff0c\u800c\u4e14\u5404\u7c7b\u79d1\u7814\u90fd\u9700\u8981\u7528\u5230C\u8bed\u8a00\uff0c\u9002\u4e8e\u7f16\u5199\u7cfb\u7edf\u8f6f\u4ef6\uff0c\u4e09\u7ef4\uff0c\u4e8c\u7ef4\u56fe\u5f62\u548c\u52a8\u753b\uff0c\u5177\u4f53\u5e94\u7528\u6bd4\u5982\u5355\u7247\u673a\u4ee5\u53ca\u5d4c\u5165\u5f0f\u7cfb\u7edf\u5f00\u53d1\u3002

#include
int main() {
double num1 = 0; //\u8f93\u51651
double num2 = 0; //\u8f93\u51652
char ch; //\u64cd\u4f5c
double ret = 0; //\u7ed3\u679c printf( "\u8f93\u5165\u7b2c\u4e00\u4e2a\u6570:" );
scanf( "%lf", &num1 );
printf( "\u8f93\u5165\u7b2c\u4e8c\u4e2a\u6570:" );
scanf( "%lf", &num2 );
printf( "\u64cd\u4f5c[+ - * /]:" );
getchar();
scanf( "%c", &ch ); switch( ch ) {
case '+':
ret = num1 + num2;
break;
case '-':
ret = num1 - num2;
break;
case '*':
ret = num1 * num2;
break;
case '/':
ret = num1 / num2;
break;
default:
break;
}
printf( "\u7ed3\u679c:%.2lf\n", ret ); return 0;
} \u5199\u4e2a\u7b80\u5355\u6613\u61c2\u7684\uff0c\u4f60\u64cd\u4f5c\u8ba1\u7b97\u5668\u7684\u6b65\u9aa4\u5c31\u662f\u7f16\u5199\u7a0b\u5e8f\u7684\u601d\u8def\u5440

//简单计算器,含加减乘除、乘方运算。
#include
#include
#include // malloc()等
#include // INT_MAX等
#include // EOF(=^Z或F6),NULL
#include // atoi()
#include // eof()
#include // floor(),ceil(),abs()
#include // exit()
#include // cout,cin
// 函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
// #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
typedef int Boolean; // Boolean是布尔类型,其值是TRUE或FALSE

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

//***************************************************************************
//栈的储存结构

typedef struct{
//运算符栈
char *base;
char *top;
int stacksize;
}SqStack1;

typedef struct{
//运算数栈
float *base;
float *top;
int stacksize;
}SqStack2;

//***************************************************************************
//以下是运算符栈的基本操作函数

Status InitStack(SqStack1 &S){
//初始化一个栈
S.base=(char *)malloc(STACK_INIT_SIZE*sizeof(char));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}//InitStack

Status DestroyStack(SqStack1 &S){
//销毁栈S
free(S.top);
free(S.base);
return OK;
}//DestroyStack

char GetTop(SqStack1 S){
//若栈不空,则返回S的栈顶元素,并返回OK;否则返回ERROR
if(S.top==S.base)return ERROR;
return *(S.top-1);
}//Gettop

Status Push(SqStack1 &S,char e){
//插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize){
//栈满,追加储存空间
S.base=(char *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}//Push

Status Pop(SqStack1 &S,char &e){
//若栈不空,则删除S的栈顶元素,用e返回其值;并返回OK;否则返回ERROR
if(S.top==S.base)return ERROR;
e=*(--S.top);
return OK;
}//Pop

//***************************************************************************
//以下是运算数栈的基本操作函数

Status InitStack(SqStack2 &S){
//初始化一个栈
S.base=(float *)malloc(STACK_INIT_SIZE*sizeof(float));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}//InitStack

Status DestroyStack(SqStack2 &S){
//销毁栈S
free(S.top);
free(S.base);
return OK;
}//DestroyStack

float GetTop(SqStack2 S){
//若栈不空,则返回S的栈顶元素,并返回OK;否则返回ERROR
if(S.top==S.base)return ERROR;
return *(S.top-1);
}//Gettop

Status Push(SqStack2 &S,float e){
//插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize){
//栈满,追加储存空间
S.base=(float *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(float));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}//Push

Status Pop(SqStack2 &S,float &e){
//若栈不空,则删除S的栈顶元素,用e返回其值;并返回OK;否则返回ERROR
if(S.top==S.base)return ERROR;
e=*(--S.top);
return OK;
}//Pop

//***************************************************************************
//以下是相关的运算符判断函数

char Precede(char A,char B){
//比较运算符A, B的优先关系,A,B的范围仅限于'+','-','*','/','^','(',')','='
//返回'>','<','='
switch(A){
case '+':switch(B){
case '+':return '>';
case '-':return '>';
case '*':return '<';
case '/':return '<';
case '^':return '<';
case '(':return '<';
case ')':return '>';
case '=':return '>';
default:printf("表达式错误!\n");exit(0);
}
case '-':switch(B){
case '+':return '>';
case '-':return '>';
case '*':return '<';
case '/':return '<';
case '^':return '<';
case '(':return '<';
case ')':return '>';
case '=':return '>';
default:printf("表达式错误!\n");exit(0);
}
case '*':switch(B){
case '+':return '>';
case '-':return '>';
case '*':return '>';
case '/':return '>';
case '^':return '<';
case '(':return '<';
case ')':return '>';
case '=':return '>';
default:printf("表达式错误!\n");exit(0);
}
case '/':switch(B){
case '+':return '>';
case '-':return '>';
case '*':return '>';
case '/':return '>';
case '^':return '<';
case '(':return '<';
case ')':return '>';
case '=':return '>';
default:printf("表达式错误!\n");exit(0);
}
case '^':switch(B){
case '+':return '>';
case '-':return '>';
case '*':return '>';
case '/':return '>';
case '^':return '>';
case '(':return '<';
case ')':return '>';
case '=':return '>';
default:printf("表达式错误!\n");exit(0);
}
case '(':switch(B){
case '+':return '<';
case '-':return '<';
case '*':return '<';
case '/':return '<';
case '^':return '<';
case '(':return '<';
case ')':return '=';
case '=':printf("表达式错误!\n");exit(0);
default:printf("表达式错误!\n");exit(0);
}
case ')':switch(B){
case '+':return '>';
case '-':return '>';
case '*':return '>';
case '/':return '>';
case '^':return '>';
case '(':printf("表达式错误!\n");exit(0);
case ')':return '>';
case '=':return '>';
default:printf("表达式错误!\n");exit(0);
}
case '=':switch(B){
case '+':return '<';
case '-':return '<';
case '*':return '<';
case '/':return '<';
case '^':return '<';
case '(':return '<';
case ')':printf("表达式错误!\n");exit(0);
case '=':return '=';
default:printf("表达式错误!\n");exit(0);
}
default:printf("表达式错误!\n");exit(0);
}
}//Precede

Status InOP(char c){
//判断c是否是运算符,是则返回TRUE,否则返回FALSE
switch(c){
case '+':return TRUE;
case '-':return TRUE;
case '*':return TRUE;
case '/':return TRUE;
case '^':return TRUE;
case '(':return TRUE;
case ')':return TRUE;
case '=':return TRUE;
default:return FALSE;
}
}//InOP

//***************************************************************************

float Operate(float a,char theta,float b){
switch(theta){
case '+':return a+b;
case '-':return a-b;
case '*':return a*b;
case '/':
if(b==0){
printf("分母不能为0!\n");
exit(0);
}
else return a/b;
case '^':
if(a==0&&b<=0){
printf("0的指数必须大于0!\n");
exit(0);
}
else return (float)pow(a,b);
default:printf("表达式错误!\n");exit(0);
}
}//Operate

Status EvaluateExpression(){
//算术表达式求值
char c,x,theta,prec;
//c是每次读取的字符,x是存放脱括号后的多余的括号,theta是运算符,prec是c的前一个字符
float a,b,result;//a、b是每次从运算数栈中取出的要进行运算的数,result存放最终结果
float cc,flag,ii,minus=1;
//cc存放由字符串转化而来的浮点数,flag用于标记是否已读取过小数点,
//ii存放小数部分需要缩小的倍数,minus用于记录该数前是否有负号
SqStack1 OPTR;
SqStack2 OPND;
InitStack(OPTR);InitStack(OPND);
Push(OPTR,'=');
prec='=';scanf("%c",&c);
while(c!='='||GetTop(OPTR)!='='){
cc=0;flag=0;ii=10;
if(c=='-'&&(prec=='='||prec=='(')){minus=-1;prec=c;scanf("%c",&c);}
//若某“-”前面是“=”(第一个符号就是“-”)或“(”,则此为负号,不是减号
else if(!InOP(c)){
while(!InOP(c)){
if(c>=48&&c<=57){
if(flag==0)cc=cc*10+c-48;//小数点之前
else if(flag==1){cc=cc+(c-48)/ii;ii*=10;}//小数点之后
else {printf("小数点错误!\n");exit(0);}//小数点有错
}
else if(c=='.')flag++;//读到小数点
else {printf("表达式错误!\n");exit(0);}
prec=c;scanf("%c",&c);
}
cc*=minus;minus=1;
Push(OPND,cc);
}//不是运算符则进OPND栈
else
switch(Precede(GetTop(OPTR),c)){
case '<':Push(OPTR,c);prec=c;scanf("%c",&c);break;//栈顶元素优先级低
case '=':Pop(OPTR,x);prec=c;scanf("%c",&c);break;//脱括号并接收下一字符
case '>'://退栈并将运算结果入栈
Pop(OPTR,theta);
Pop(OPND,b);Pop(OPND,a);
Push(OPND,Operate(a,theta,b));
break;
}
}
result=GetTop(OPND);
printf("%f\n",result);
//DestroyStack(OPTR);
//DestroyStack(OPND);
return OK;
}//EvaluateExpression

void main(){
printf(" **********************\n");
printf(" * 欢迎使用计算器! *\n");
printf(" **********************\n");
printf("请输入表达式,以“=”结束:\n");
printf("(支持实数间的加(+)、减(-)、乘(*)、除(/)、乘方(^)、单目减(-)运算)\n");
EvaluateExpression();
exit (0);
}

#include
<stdio.h>
#include
<stdlib.h>
void
min()
{
float
a,b;
char
op;
printf("输入第一个数:");
scanf("%f",&a);
fflush(stdin);
printf("输入一个运算符+-*
/:");
scanf("%c",&op);
fflush(stdin);
printf("输入第二个数:");
scanf("%f",&b);
fflush(stdin);
switch(op)
{
case
'+':
a=a+b;
break;
case
'-':
a=a-b;
break;
case
'*':
a=a*b;
break;
case
'/':
a=a/b;
break;
default:
printf("+-/*!!!error");
return;
}
printf
("%f\n",a);
return
;
}
int
main()
{
char
ch;
printf("请输入选择\na开始运算c清屏x退出:");
ch=getchar();
while(ch!='x')
{
min();
ch=getchar();
if(ch=='c')
system("cls");
}
return
0;
}

#include <stdlib.h>
#include <math.h>
#include <graphics.h>
#include <stdio.h>
#include <process.h>
#define EXCAPE 27
#define ENTER 13
main(){
int press,i,x,y,x1,y1,ch_z=0;
int dian=0;
char ch='0'; /*input + - * / */
char emp[80],sum[80],*e,*s;
double yuan=0.000000000000;
void init(void);
void clear_z(char *u);
double strtoflt(char *p);
int getkey();
int gd=DETECT, gm;
initgraph(&gd, &gm, "");
e=emp;
s=sum;
init();
x = (getmaxx() / 2) - 120;
y = (getmaxy() / 2) - 150;
x1 = (getmaxx() / 2) + 120;
y1 = (getmaxy() / 2) + 150;
while(1){
press = getkey();
switch(press){
case EXCAPE:
exit(0);
case 47:
bar (x + 10, y + 80 + 10, x + 60 - 10, y + 80 + 60 - 10);
delay(8000);
init();
if (ch!='0'){
switch(ch){
case '/':
if (strtoflt(emp)==0.0){
ch='0';
ch_z=0;
dian=0;
emp[0]='\0';
sum[0]='\0';
e=emp;
s=sum;
outtextxy(x+30,y+40,"error!!!!!");
break;
}
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
break;
case '*':
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
break;
case '+':
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
break;
case '-':
if (strtoflt(sum)>=strtoflt(emp)){
yuan = strtoflt(sum) - strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,"-%0.10f",yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);

}
else{
outtextxy(x+30,y+40,sum);

}
}
ch='/';
ch_z=0;
emp[0]='\0';
e=emp;
dian=0;
break;
case 42:
bar (x + 60 + 10, y + 80 + 10, x + 60 * 2 - 10, y + 80 + 60 - 10);
delay(8000);
init();
if (ch!='0'){
switch(ch){
case '/':
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '*':
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '+':
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '-':
if (strtoflt(sum)>=strtoflt(emp)){
yuan = strtoflt(sum) - strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,"-%0.10f",yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);
e=emp;
}
else
outtextxy(x+30,y+40,sum);
}
ch='*';
ch_z=0;
dian=0;
break;
case 45:
bar (x + 60 * 2 + 10, y + 80 + 10, x + 60 * 3 - 10, y + 80 + 60 - 10);
delay(8000);
init();
if (ch!='0'){
switch(ch){
case '/':
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '*':
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '+':
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '-':
if (strtoflt(sum)>=strtoflt(emp)){
yuan = strtoflt(sum) - strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,"-%0.10f",yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);
e=emp;
}
else
outtextxy(x+30,y+40,sum);
}
ch='-';
ch_z=0;
dian=0;
break;
case 43:
bar (x + 60 * 3 + 10, y + 80 + 10, x + 60 * 4 - 10, y + 80 + 60 - 10);
delay(8000);
init();
if (ch!='0'){
switch(ch){
case '/':
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '*':
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '+':
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '-':
if (strtoflt(sum)>=strtoflt(emp)){
yuan = strtoflt(sum) - strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,"-%0.10f",yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);
e=emp;
}
else
outtextxy(x+30,y+40,sum);
}
ch='+';
ch_z=0;
dian=0;
break;
case 49:
bar (x + 10, y + 80 + 53 + 10, x + 60 - 10, y + 80 + 53 * 2 - 4);
delay(8000);
init();
for (i=0;i<=79;i++){
if (emp[i]=='\0')
break;
}
if (ch_z==0){
*e='1';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 50:
bar (x + 60 + 10, y + 80 + 53 + 10, x + 60 * 2 - 10, y + 80 + 53 * 2 - 4);
delay(8000);
init();
for (i=0;i<=79;i++){
if (emp[i]=='\0')
break;
}
if (ch_z==0){
*e='2';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 51:
bar (x + 60 * 2 + 10, y + 80 + 53 + 10, x + 60 * 3 - 10, y + 80 + 53 * 2 - 4);
delay(8000);
init();
for (i=0;i<=79;i++){
if (emp[i]=='\0')
break;
}
if (ch_z==0){
*e='3';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case ENTER:
bar (x + 60 * 3 + 10, y + 80 + 53 + 10, x + 60 * 4 - 10, y + 80 + 53 * 2 - 4);
delay(8000);
init();
if (ch!='0'){
switch(ch){
case '/':
yuan = strtoflt(sum) / strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '*':
yuan = strtoflt(sum) * strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '+':
yuan = strtoflt(sum) + strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
case '-':
if (strtoflt(sum)>=strtoflt(emp)){
yuan = strtoflt(sum) - strtoflt(emp);
sprintf(sum,"%0.10f",yuan);
}
else{
yuan=strtoflt(emp)-strtoflt(sum);
sprintf(sum,"-%0.10f",yuan);
}
clear_z(sum);
outtextxy(x+30,y+40,sum);
emp[0]='\0';
e=emp;
break;
}
}
else{
if (ch_z==0){
outtextxy(x+30,y+40,emp);
stpcpy(sum,emp);
e=emp;
}
else{
outtextxy(x+30,y+40,sum);
}
}
ch='0';
ch_z=1;
dian=0;
break;
case 52:
bar (x + 10, y + 80 + 53 * 2 + 10, x + 60 - 10, y + 80 + 53 * 3 - 4);
delay(8000);
init();
if (ch_z==0){
*e='4';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 53:
bar (x + 60 + 10, y + 80 + 53 * 2 + 10, x + 60 * 2 - 10, y + 80 + 53 * 3 - 4);
delay(8000);
init();
if (ch_z==0){
*e='5';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 54:
bar (x + 60 * 2 +10, y + 80 + 53 * 2 + 10, x + 60 * 3 - 10, y + 80 + 53 * 3 - 4);
delay(8000);
init();
if (ch_z==0){
*e='6';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 46:
bar (x + 60 * 3 + 10, y + 80 + 53 * 2 + 10, x + 60 * 4 - 10, y + 80 + 53 * 3 - 4);
delay(8000);
init();
if (dian==0){
if (ch_z==0){
*e='.';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
}
else{
if (ch_z==0)
outtextxy(x+30,y+40,emp);
else
outtextxy(x+30,y+40,sum);
}
dian=1;
break;
case 55:
bar (x + 10, y + 80 + 53 * 3 + 10, x + 60 - 10, y + 80 + 53 * 4 - 4);
delay(8000);
init();
if (ch_z==0){
*e='7';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 56:
bar (x + 60 + 10, y + 80 + 53 * 3 + 10, x + 60 * 2 -10, y + 80 + 53 * 4 - 4);
delay(8000);
init();
if (ch_z==0){
*e='8';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 57:
bar (x + 60 * 2 + 10, y + 80 + 53 * 3 + 10, x + 60 * 3 - 10, y + 80 + 53 * 4 - 4);
delay(8000);
init();
if (ch_z==0){
*e='9';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 48:
bar (x + 60 * 3 + 10, y + 80 + 53 * 3 + 10, x + 60 * 4 - 10, y + 80 + 53 * 4 - 4);
delay(8000);
init();
if (ch_z==0){
*e='0';e++;*e='\0';
outtextxy(x+30,y+40,emp);
}
else{
outtextxy(x+30,y+40,sum);
}
break;
case 32:
emp[0]='\0';
sum[0]='\0';
e=emp;
s=sum;
ch='0';
ch_z=0;
dian=0;
init();
break;
case 8:
delay(8000);
for(i=0;i<=79;i++){
if (emp[i]=='\0')
break;
}
if (i==0)
break;
if (i!=79&&i!=0){
i--;
emp[i]='\0';
e=&emp[i];
}
init();
outtextxy(x+30,y+40,emp);
break;
}
}
}
/*---------------------------------------------------------------------*/
void init(void){
int x, y, x1, y1, i, j;
char emp;
x = (getmaxx() / 2) - 120;
y = (getmaxy() / 2) - 150;
x1 = (getmaxx() / 2) + 120;
y1 = (getmaxy() / 2) + 150;
cleardevice();
setbkcolor(3);
setfillstyle(1, 15);
setcolor(15);
settextstyle(1,0,1);
rectangle (x, y, x1, y1);
rectangle (x - 7, y - 7, x1 + 7, y1 + 7);
rectangle (x + 10, y + 10, x1 - 10, y + 80 - 10);
line (x, y + 80, x1, y + 80);
y = y + 80;
for (j = 1; j <= 4; j++){
x = (getmaxx() / 2) - 120;
for (i = 1; i <= 4; i++){
/* bar (x + 10, y + 10, x + 60 - 10, y + 60 - 10);*/
rectangle(x + 10, y + 10, x + 60 - 10, y + 60 - 10);
if (j == 1){
if (i == 1)
outtextxy(x + 20, y + 20, "/");
if (i == 2)
outtextxy(x + 25, y + 20, "*");
if (i == 3)
outtextxy(x + 27, y + 20, "-");
if (i == 4)
outtextxy(x + 25, y + 20, "+");
}
if (j == 2){
if (i == 1)
outtextxy(x + 25, y + 20, "1");
if (i == 2)
outtextxy(x + 25, y + 20, "2");
if (i == 3)
outtextxy(x + 25, y + 20, "3");
if (i == 4)
outtextxy(x + 25, y + 20, "=");
}
if (j == 3){
if (i == 1)
outtextxy(x + 25, y + 20, "4");
if (i == 2)
outtextxy(x + 25, y + 20, "5");
if (i == 3)
outtextxy(x + 25, y + 20, "6");
if (i == 4)
outtextxy(x + 25, y + 20, ".");
}
if (j == 4){
if (i == 1)
outtextxy(x + 25, y + 20, "7");
if (i == 2)
outtextxy(x + 25, y + 20, "8");
if (i == 3)
outtextxy(x + 25, y + 20, "9");
if (i == 4)
outtextxy(x + 25, y + 20, "0");
}
x = x + 60;
}
y = y + 53;
}
}
/*---------------------------------------------------------------------*/
int getkey(){
char lowbyte;
int press;
while(bioskey(1)==0);
press = bioskey(0);
press = press&0xff? press&0xff: press>>8;

return(press);

}
double strtoflt(char *p)
{
double rtl=0.000000000000;
double pnt=0.000000000000;
double t = 10;
int ispoint = 0;
while (*p!='\0'||*p!='.'){
if(*p<'0'||*p>'9')
break;
rtl*=10;
rtl+=*p-'0';
p++;
}
if (*p=='.'){
ispoint=1;
p++;
}
while(ispoint&&*p!='\0'){
pnt+=(double)(*p-'0')/t;
t*=10;
p++;
}
rtl+=pnt;
return (rtl);
}
/*-----------------------------------------------------------------------*/
void clear_z(char u[]){
int i;
for(i=strlen(u)-1;i>=0;i--){
if (u[i]!='0')
break;
}
if (u[i]=='.'){
u[i]='\0';
}
else{
i++;
u[i]='\0';
}
}

  • 鐢–璇█瀹炵幇涓涓畝鍗曠殑璁$畻鍣,瑕佹眰鏈夐潰绉拰浣撶Н杈撳嚭銆
    绛旓細浠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;}
  • 鐢–璇█鎬庝箞鍐欏嚭涓涓绠楀櫒?
    绛旓細娓呮绠楁硶灏卞彲浠ュ緢蹇啓鍑猴細锛1锛夊彧闇杈撳叆2涓彉閲弉鍜宻um,涓攕um=n+sum.锛2锛夌‘瀹歯鐨勮寖鍥翠负n<=100 锛3锛夊惊鐜綋涓 for(n=1;n<=100;n++)sum+=n;锛4锛夋牴鎹C璇█缂栬緫瑙勫垯鍐欏嚭绋嬪簭 鐢╢or寰幆姹傦細include<stdio.h> int main(void){ int n,sum=0;for(n=1;n<=100;n++)sum+=n;printf("1...
  • C璇█缂栫▼绠鍗曡绠楀櫒
    绛旓細include <stdio.h>int num[20]= {0};char op[20]={0};void calc(int cnt){int i=0,m=0;float resultf = 0;for (i=0;i<cnt;i++){if (i==0){resultf = num[i];printf("%d",num[i]);}else{//printf("here int\n");switch (op[m++]){case '+':resultf+=num[i]...
  • 濡備綍鐢╟璇█缂栧啓涓涓畝鏄撹绠楀櫒??
    绛旓細include<stdio.h> int main(){ int i;for(i=0;i<26;i++)printf("%c ",i+'A')锛沠or(i=0;i<26;i++)printf("%c ",i+'a');return 0;}
  • c璇█濡備綍瀹炵幇涓涓灏忓瀷璁$畻鍣
    绛旓細{float a,b,c;printf("please enter number1:")scanf("%f",&a)printf("please enter number2:")scanf("%f",&b)c = (a+b)/2;printf("the result is %.1f\n",c);return 0;} C璇█缂栧啓绋嬪簭鐨勬柟娉曪細visual c++6.0 鎶ラ敊姣旇緝鍑嗙‘锛屼絾姣旇緝闅剧敤銆傛槸寰蒋鎺ㄥ嚭鐨勪竴娆剧紪璇戝櫒锛屾槸涓涓鍔熻兘...
  • 鐢–璇█鍋涓涓绠楀櫒
    绛旓細璁$畻鍣闂鎻忚堪:璁捐涓涓澶氬姛鑳借绠楀櫒,鍙互瀹屾垚鍩烘湰鐨勮绠銆傝璁¤姹:1.鍏峰鏁村瀷鏁版嵁銆佹诞鐐瑰瀷鏁版嵁鐨勭畻鏈(鍔犮佸噺銆佷箻銆侀櫎)杩愮畻鍔熻兘銆備緷娆¤緭鍏ョ涓涓繍绠楁暟銆佽繍绠楃(+,-,*,/)銆佺浜屼釜杩愮畻鏁,鐒跺悗杈撳嚭缁撴灉銆傜粨鏋滃彲浠ヤ綔涓轰笅涓涓繍绠楃殑绗竴杩愮畻鏁般傛寜鈥C鈥欐竻灞,鎸夆楻鈥欒繑鍥 鑿滃崟銆備緥濡:杈撳叆:2+5杈撳嚭:72.瀹炵幇...
  • 鐢–璇█鍋涓涓绠楀櫒,鑳藉疄鐜板姞鍑忎箻闄ゆ贩鍚堣繍绠?
    绛旓細鏄殑锛屽彲浠浣跨敤C璇█缂栧啓涓涓绠楀櫒绋嬪簭锛岃兘澶熷疄鐜板姞銆佸噺銆佷箻銆侀櫎绛夋贩鍚堣繍绠椼備笅闈㈡槸涓涓畝鍗曠殑绀轰緥绋嬪簭锛歚``c include <stdio.h> int main() { char operator;double num1, num2, result;printf("Enter an operator (+, -, *, /): ");scanf("%c", &operator);printf("Enter two ...
  • 鐢–璇█鍋涓涓绠楀櫒,鑳藉疄鐜板姞鍑忎箻闄ゆ贩鍚堣繍绠
    绛旓細鐢–璇█缂栧啓涓涓畝鍗曠殑鍙互杩涜鍔犲噺涔橀櫎杩愮畻娣峰悎杩愮畻鐨勮绠楀櫒鐨勬柟娉曪細1銆佹墦寮visual C++ 6.0-鏂囦欢-鏂板缓-鏂囦欢-C++ Source File锛2銆佽緭鍏ラ澶勭悊鍛戒护鍜屼富鍑芥暟锛歩nclude<stdio.h> /*鍑芥暟澶达細杈撳叆杈撳嚭澶存枃浠*/ void main()/*绌虹被鍨嬶細涓诲嚱鏁*/ 3銆佸畾涔夊彉閲忥細int a,b,d锛 /*瀹氫箟鍙橀噺鐨勬暟鎹被鍨嬩负...
  • C璇█ 璁$畻鍣
    绛旓細case '*':printf("%d*%d=%d\n",data1,data2,data1*data2);break;case '/':if(data2==0)printf("fen mu wei ling cuowu error!\n");else printf("%d/%d=%d\n",data1,data2,data1/data2);break;} }while((ch=getchar())!='y');return 0;} 鍙渶杈撳嚭y鍗冲彲缁撴潫璁$畻鍣 ...
  • 鐢╟璇█缂栧啓涓涓畝鍗曡绠楀櫒绋嬪簭
    绛旓細锛僫nclude锛渟tdio锛巋锛烇紡锛璁$畻鍣 voidmenu锛堬級锛忥紡鑷畾涔夌殑鑿滃崟鐣岄潰 锝 printf锛堬紓锛嶏紞锛嶏技n锛傦級锛沺rintf锛堬紓璇疯緭鍏ヤ綘鐨勯夋嫨锛糿锛傦級锛沺rintf锛堬紓1锛庯紜锛糿锛傦級锛沺rintf锛堬紓2锛庯紞锛糿锛傦級锛沺rintf锛堬紓3锛庯紛锛糿锛傦級锛沺rintf锛堬紓4锛庯紡锛糿锛傦級锛沺rintf锛堬紓锛嶏紞锛嶏技n锛傦級锛涳綕 intmain锛堬級锝 int...
  • 扩展阅读:初学编程必背50个 ... 编程求1000以内的完数 ... 如何自己编程做游戏 ... c++必背入门代码 ... 计算机基础知识100题 ... c语言怎么编译课程表 ... 用c语言编写课程表 ... 编程必背100个代码 ... c语言基础练习100题 ...

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