中易网

用C语言设计一个简单计算器

答案:5  悬赏:10  
解决时间 2021-01-16 23:47
  • 提问者网友:遮云壑
  • 2021-01-16 19:00
用C语言设计一个简单计算器
最佳答案
  • 二级知识专家网友:行路难
  • 2021-01-16 20:04
#include 
void add(int a,int b,int c) 

 c=a+b; 
 printf("%d ",c); 
 printf("
"); 

void minus(int a,int b,int c) 

 c=a-b; 
 printf("%d ",c); 
 printf("
"); 

void multiplication(int a,int b,int c) 

 c=a*b; 
 printf("%d ",c); 
 printf("
"); 

void div(int a,int b,int c) 

 c=(float)a/(float)b; 
 printf("%f ",c); 
 printf("
"); 

main() 

 int a,b,c; 
 char p; 
 puts("input A:
"); 
 scanf("%d",&a); 
 puts("input B:
"); 
 scanf("%d",&b); 
 puts("input operation:
"); 
 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("没有注册这个运算符号
"); 
}以上是设计的一个简易计算器。可以进行相应的加减乘除。
简介:
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
全部回答
  • 1楼网友:举杯邀酒敬孤独
  • 2021-01-17 00:33
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define UP 0x48
#define DOWN 0x50
#define LEFT 0x4b
#define RIGHT 0x4d
#define ENTER 0x0d
void *rar;
struct palettetype palette;
int GraphDriver;
int GraphMode;
int ErrorCode;
int MaxColors;
int MaxX, MaxY;
double AspectRatio;
void drawboder(void);
void initialize(void);
void computer(void);
void changetextstyle(int font, int direction, int charsize);
void mwindow(char *header);
int specialkey(void) ;
int arrow();

int main()
{
initialize();
computer();
closegraph();
return(0);
}

void initialize(void)
{
int xasp, yasp;
GraphDriver = DETECT;
initgraph( &GraphDriver, &GraphMode, "" );

ErrorCode = graphresult();
if( ErrorCode != grOk )
{
printf("Graphics System Error: %s\n",
grapherrormsg( ErrorCode ) );
exit( 1 );
}
getpalette( &palette );
MaxColors = getmaxcolor() + 1;
MaxX = getmaxx();
MaxY = getmaxy();
getaspectratio( &xasp, &yasp );
AspectRatio = (double)xasp/(double)yasp;
}

void computer(void)
{
struct viewporttype vp;
int color, height, width;
int x, y,x0,y0, i, j,v,m,n,act,flag=1;
float num1=0,num2=0,result;
char cnum[5],str2[20]={""},c,temp[20]={""};
char str1[]="1230.456+-789*/Qc=^%";
mwindow( "Calculator" );
color = 7;
getviewsettings( &vp );
width=(vp.right+1)/10;
height=(vp.bottom-10)/10 ;
x = width /2;
y = height/2;
setfillstyle(SOLID_FILL, color+3);
bar( x+width*2, y, x+7*width, y+height );

setcolor( color+3 );
rectangle( x+width*2, y, x+7*width, y+height );

setcolor(RED);
outtextxy(x+3*width,y+height/2,"0.");
x =2*width-width/2;
y =2*height+height/2;
for( j=0 ; j<4 ; ++j )
{
for( i=0 ; i<5 ; ++i )
{
setfillstyle(SOLID_FILL, color);
setcolor(RED);
bar( x, y, x+width, y+height );
rectangle( x, y, x+width, y+height );
sprintf(str2,"%c",str1[j*5+i]);

outtextxy( x+(width/2), y+height/2, str2);
x =x+width+ (width / 2) ;
}
y +=(height/2)*3;
x =2*width-width/2;
}
x0=2*width;
y0=3*height;
x=x0;
y=y0;
gotoxy(x,y);
arrow();
putimage(x,y,rar,XOR_PUT);
m=0;
n=0;
strcpy(str2,"");
while((v=specialkey())!=45)
{
while((v=specialkey())!=ENTER)
{
putimage(x,y,rar,XOR_PUT);
if(v==RIGHT)
if(x>=x0+6*width)

{
x=x0;
m=0;
}
else
{
x=x+width+width/2;
m++;
}
if(v==LEFT)
if(x<=x0)
{
x=x0+6*width;
m=4;
}
else
{
x=x-width-width/2;
m--;
}
if(v==UP)
if(y<=y0)
{
y=y0+4*height+height/2;
n=3;
}
else
{
y=y-height-height/2;
n--;
}
if(v==DOWN)
if(y>=7*height)
{
y=y0;
n=0;
}
else
{
y=y+height+height/2;
n++;
}
putimage(x,y,rar,XOR_PUT);
}
c=str1[n*5+m];
if(isdigit(c)||c=='.')
{
if(flag==-1)
{
strcpy(str2,"-");
flag=1;
}
sprintf(temp,"%c",c);
strcat(str2,temp);
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,str2);
}
if(c=='+')
{
num1=atof(str2);
strcpy(str2,"");
act=1;
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");
}
if(c=='-')
{
if(strcmp(str2,"")==0)
flag=-1;
else
{
num1=atof(str2);
strcpy(str2,"");
act=2;
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");
}
}
if(c=='*')
{
num1=atof(str2);
strcpy(str2,"");
act=3;
setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");
}
if(c=='/')
{
num1=atof(str2);
strcpy(str2,"");
act=4;
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");
}
if(c=='^')
{
num1=atof(str2);
strcpy(str2,"");
act=5;
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");
}
if(c=='%')
{
num1=atof(str2);
strcpy(str2,"");
act=6;
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");
}
if(c=='=')
{
num2=atof(str2);
switch(act)
{
case 1:result=num1+num2;break;
case 2:result=num1-num2;break;
case 3:result=num1*num2;break;
case 4:result=num1/num2;break;
case 5:result=pow(num1,num2);break;
case 6:result=fmod(num1,num2);break;
}
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
sprintf(temp,"%f",result);
outtextxy(5*width,height,temp);
}
if(c=='c')
{
num1=0;
num2=0;
flag=1;
strcpy(str2,"");
setfillstyle(SOLID_FILL,color+3);
bar(2*width+width/2,height/2,15*width/2,3*height/2);
outtextxy(5*width,height,"0.");
}
if(c=='Q')exit(0);
}
putimage(x,y,rar,XOR_PUT);
return;
}

void mwindow( char *header )
{
int height;
cleardevice();
setcolor( MaxColors - 1 );
setviewport( 20, 20, MaxX/2, MaxY/2, 1 );
height = textheight( "H" );
settextstyle( DEFAULT_FONT, HORIZ_DIR, 1 );
settextjustify( CENTER_TEXT, TOP_TEXT );
outtextxy( MaxX/4, 2, header );
setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 );
drawboder();
}
void drawboder(void)
{
struct viewporttype vp;
setcolor( MaxColors - 1 );
setlinestyle( SOLID_LINE, 0, NORM_WIDTH );
getviewsettings( &vp );
rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top );
}

int arrow()
{
int size;
int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4};
setfillstyle(SOLID_FILL,2);
fillpoly(8,raw);
size=imagesize(4,4,16,16);
rar=malloc(size);
getimage(4,4,16,16,rar);
putimage(4,4,rar,XOR_PUT);
return 0;
}

int specialkey(void)
{
int key;
while(bioskey(1)==0);
key=bioskey(0);
key=key&0xff? key&0xff:key>>8;
return(key);
}
  • 2楼网友:西岸风
  • 2021-01-17 00:05
你用VB编写更简单
  • 3楼网友:蕴藏春秋
  • 2021-01-16 22:46
好的…
  • 4楼网友:西岸风
  • 2021-01-16 21:32
//一个具有两个数加减乘除功能的计算器
#include
void main()
{
int a,b,c;
char ch,ch1;
printf("请输入表达式如 5+6= 然后按回车键:");
scanf("%d%c%d%c",&a,&ch,&b,&ch1);
switch(ch)
{
case '+':
c=a+b;
printf("%d+%d=%d\n",a,b,c);
break;
case '-':
c=a-b;
printf("%d-%d=%d\n",a,b,c);
break;
case '*':
c=a*b;
printf("%d*%d=%d\n",a,b,c);
break;
case '/':
c=a/b;
printf("%d/%d=%d\n",a,b,c);
break;
default:
printf("输入表达式错误或该计算器不具备 %ch 功能\n",ch);

}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息