當前位置:編程學習大全網 - 源碼下載 - 如何用C語言寫壹個小計算器

如何用C語言寫壹個小計算器

# include & ltstdlib.h & gt

# include & ltmath.h & gt

# include & ltgraphics.h & gt

# include & ltstdio.h & gt

# include & ltprocess.h & gt

#定義EXCAPE 27

#定義輸入13

main(){

int press,I,x,y,x1,y1,ch _ z = 0;

int Dian = 0;

char ch =“0”;/ *輸入+ - * / */

char emp[80],sum[80],*e,* s;

雙元= 0.000000000000;

void init(void);

void clear _ z(char * u);

double strtoflt(char * p);

int getkey();

int gd=DETECT,GM;

init graph(& amp;gd,& ampgm,“”;

e = emp

s =總和;

init();

x =(get maxx()/2)-120;

y =(get maxy()/2)-150;

x 1 =(get maxx()/2)+120;

y 1 =(get maxy()/2)+150;

while(1){

press = getkey();

開關(按下){

案例摘錄:

退出(0);

案例47:

bar (x + 10,y + 80 + 10,x + 60 - 10,y+80+60-10);

延時(8000);

init();

如果(ch!='0'){

開關(通道){

案例“/”:

if (strtoflt(emp)==0.0){

ch =“0”;

ch _ z = 0;

Dian = 0;

EMP[0]= ' \ 0 ';

sum[0]= ' \ 0 ';

e = emp

s =總和;

outtextxy(x+30,y+40,"錯誤!!!!!");

打破;

}

元= strtoflt(sum)/strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

打破;

大小寫' * ':

元= strtoflt(sum)* strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

打破;

大小寫“+”:

袁= strtoflt(sum)+strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

打破;

大小寫'-':

if (strtoflt(sum)>=strtoflt(emp)){

袁= strtoflt(sum)-strtoflt(EMP);

sprintf(sum," %0.10f ",元);

}

否則{

袁= strtoflt(EMP)-strtoflt(sum);

sprintf(sum,"-%0.10f ",元);

}

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

}

}

否則{

if (ch_z==0){

outtextxy(x+30,y+40,EMP);

stpcpy(sum,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

}

ch = '/';

ch _ z = 0;

EMP[0]= ' \ 0 ';

e = emp

Dian = 0;

打破;

案例42:

bar (x + 60 + 10,y + 80 + 10,x + 60 * 2 - 10,y+80+60-10);

延時(8000);

init();

如果(ch!='0'){

開關(通道){

案例“/”:

元= strtoflt(sum)/strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫' * ':

元= strtoflt(sum)* strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫“+”:

袁= strtoflt(sum)+strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫'-':

if (strtoflt(sum)>=strtoflt(emp)){

袁= strtoflt(sum)-strtoflt(EMP);

sprintf(sum," %0.10f ",元);

}

否則{

袁= strtoflt(EMP)-strtoflt(sum);

sprintf(sum,"-%0.10f ",元);

}

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

}

}

否則{

if (ch_z==0){

outtextxy(x+30,y+40,EMP);

stpcpy(sum,EMP);

e = emp

}

其他

outtextxy(x+30,y+40,sum);

}

ch = ' *

ch _ z = 0;

Dian = 0;

打破;

案例45:

bar (x + 60 * 2 + 10,y + 80 + 10,x + 60 * 3 - 10,y+80+60-10);

延時(8000);

init();

如果(ch!='0'){

開關(通道){

案例“/”:

元= strtoflt(sum)/strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫' * ':

元= strtoflt(sum)* strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫“+”:

袁= strtoflt(sum)+strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫'-':

if (strtoflt(sum)>=strtoflt(emp)){

袁= strtoflt(sum)-strtoflt(EMP);

sprintf(sum," %0.10f ",元);

}

否則{

袁= strtoflt(EMP)-strtoflt(sum);

sprintf(sum,"-%0.10f ",元);

}

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

}

}

否則{

if (ch_z==0){

outtextxy(x+30,y+40,EMP);

stpcpy(sum,EMP);

e = emp

}

其他

outtextxy(x+30,y+40,sum);

}

ch = '-';

ch _ z = 0;

Dian = 0;

打破;

案例43:

bar (x + 60 * 3 + 10,y + 80 + 10,x + 60 * 4 - 10,y+80+60-10);

延時(8000);

init();

如果(ch!='0'){

開關(通道){

案例“/”:

元= strtoflt(sum)/strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫' * ':

元= strtoflt(sum)* strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫“+”:

袁= strtoflt(sum)+strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫'-':

if (strtoflt(sum)>=strtoflt(emp)){

袁= strtoflt(sum)-strtoflt(EMP);

sprintf(sum," %0.10f ",元);

}

否則{

袁= strtoflt(EMP)-strtoflt(sum);

sprintf(sum,"-%0.10f ",元);

}

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

}

}

否則{

if (ch_z==0){

outtextxy(x+30,y+40,EMP);

stpcpy(sum,EMP);

e = emp

}

其他

outtextxy(x+30,y+40,sum);

}

ch = '+';

ch _ z = 0;

Dian = 0;

打破;

案例49:

bar (x + 10,y + 80 + 53 + 10,x + 60 - 10,y+80+53 * 2-4);

延時(8000);

init();

for(I = 0;我& lt=79;i++){

if (emp[i]=='\0 ')

打破;

}

if (ch_z==0){

* e = ' 1 ';e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例50:

bar (x + 60 + 10,y + 80 + 53 + 10,x + 60 * 2 - 10,y+80+53 * 2-4);

延時(8000);

init();

for(I = 0;我& lt=79;i++){

if (emp[i]=='\0 ')

打破;

}

if (ch_z==0){

* e = ' 2e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例51:

bar (x + 60 * 2 + 10,y + 80 + 53 + 10,x + 60 * 3 - 10,y+80+53 * 2-4);

延時(8000);

init();

for(I = 0;我& lt=79;i++){

if (emp[i]=='\0 ')

打破;

}

if (ch_z==0){

* e = ' 3e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例輸入:

bar (x + 60 * 3 + 10,y + 80 + 53 + 10,x + 60 * 4 - 10,y+80+53 * 2-4);

延時(8000);

init();

如果(ch!='0'){

開關(通道){

案例“/”:

元= strtoflt(sum)/strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫' * ':

元= strtoflt(sum)* strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫“+”:

袁= strtoflt(sum)+strtoflt(EMP);

sprintf(sum," %0.10f ",元);

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

大小寫'-':

if (strtoflt(sum)>=strtoflt(emp)){

袁= strtoflt(sum)-strtoflt(EMP);

sprintf(sum," %0.10f ",元);

}

否則{

袁= strtoflt(EMP)-strtoflt(sum);

sprintf(sum,"-%0.10f ",元);

}

clear _ z(sum);

outtextxy(x+30,y+40,sum);

EMP[0]= ' \ 0 ';

e = emp

打破;

}

}

否則{

if (ch_z==0){

outtextxy(x+30,y+40,EMP);

stpcpy(sum,EMP);

e = emp

}

否則{

outtextxy(x+30,y+40,sum);

}

}

ch =“0”;

ch _ z = 1;

Dian = 0;

打破;

案例52:

bar (x + 10,y + 80 + 53 * 2 + 10,x + 60 - 10,y+80+53 * 3-4);

延時(8000);

init();

if (ch_z==0){

* e = ' 4e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例53:

bar (x + 60 + 10,y + 80 + 53 * 2 + 10,x + 60 * 2 - 10,y+80+53 * 3-4);

延時(8000);

init();

if (ch_z==0){

* e = ' 5e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例54:

bar (x + 60 * 2 +10,y + 80 + 53 * 2 + 10,x + 60 * 3 - 10,y+80+53 * 3-4);

延時(8000);

init();

if (ch_z==0){

* e = ' 6e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例46:

bar (x + 60 * 3 + 10,y + 80 + 53 * 2 + 10,x + 60 * 4 - 10,y+80+53 * 3-4);

延時(8000);

init();

if (dian==0){

if (ch_z==0){

*e= ' . ';e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

}

否則{

if (ch_z==0)

outtextxy(x+30,y+40,EMP);

其他

outtextxy(x+30,y+40,sum);

}

Dian = 1;

打破;

案例55:

bar (x + 10,y + 80 + 53 * 3 + 10,x + 60 - 10,y+80+53 * 4-4);

延時(8000);

init();

if (ch_z==0){

* e = ' 7e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例56:

bar (x + 60 + 10,y + 80 + 53 * 3 + 10,x + 60 * 2 -10,y+80+53 * 4-4);

延時(8000);

init();

if (ch_z==0){

* e = ' 8e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例57:

bar (x + 60 * 2 + 10,y + 80 + 53 * 3 + 10,x + 60 * 3 - 10,y+80+53 * 4-4);

延時(8000);

init();

if (ch_z==0){

* e = ' 9e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例48:

bar (x + 60 * 3 + 10,y + 80 + 53 * 3 + 10,x + 60 * 4 - 10,y+80+53 * 4-4);

延時(8000);

init();

if (ch_z==0){

* e = ' 0e++;* e = ' \ 0

outtextxy(x+30,y+40,EMP);

}

否則{

outtextxy(x+30,y+40,sum);

}

打破;

案例32:

EMP[0]= ' \ 0 ';

sum[0]= ' \ 0 ';

e = emp

s =總和;

ch =“0”;

ch _ z = 0;

Dian = 0;

init();

打破;

案例8:

延時(8000);

for(I = 0;我& lt=79;i++){

if (emp[i]=='\0 ')

打破;

}

如果(i==0)

打破;

如果(我!= 79 & amp& amp我!=0){

I-;

EMP[I]= ' \ 0 ';

e = & ampEMP[I];

}

init();

outtextxy(x+30,y+40,EMP);

打破;

}

}

}

/* - */

void init(void){

int x,y,x1,y1,I,j;

char emp

x =(get maxx()/2)-120;

y =(get maxy()/2)-150;

x 1 =(get maxx()/2)+120;

y 1 =(get maxy()/2)+150;

clear device();

setbkcolor(3);

setfillstyle(1,15);

set color(15);

settextstyle(1,0,1);

矩形(x,y,x1,y 1);

矩形(x - 7,y - 7,x1 + 7,y 1+7);

矩形(x + 10,y + 10,x1 - 10,y+80-10);

線(x,y + 80,x1,y+80);

y = y+80;

for(j = 1;j & lt= 4;j++){

x =(get maxx()/2)-120;

for(I = 1;我& lt= 4;i++){

/* bar (x + 10,y + 10,x + 60 - 10,y+60-10);*/

矩形(x + 10,y + 10,x + 60 - 10,y+60-10);

if (j == 1){

if (i == 1)

outtextxy(x + 20,y + 20,“/”);

如果(i == 2)

outtextxy(x + 25,y + 20,“*”);

如果(i == 3)

outtextxy(x + 27,y + 20,"-");

如果(i == 4)

outtextxy(x + 25,y + 20,"+");

}

if (j == 2){

if (i == 1)

outtextxy(x + 25,y + 20," 1 ");

如果(i == 2)

outtextxy(x + 25,y + 20," 2 ");

如果(i == 3)

outtextxy(x + 25,y + 20," 3 ");

如果(i == 4)

outtextxy(x + 25,y + 20," = ");

}

if (j == 3){

if (i == 1)

outtextxy(x + 25,y + 20," 4 ");

如果(i == 2)

outtextxy(x + 25,y + 20," 5 ");

如果(i == 3)

outtextxy(x + 25,y + 20," 6 ");

如果(i == 4)

outtextxy(x + 25,y + 20," ");

}

if (j == 4){

if (i == 1)

outtextxy(x + 25,y + 20," 7 ");

如果(i == 2)

outtextxy(x + 25,y + 20," 8 ");

如果(i == 3)

outtextxy(x + 25,y + 20," 9 ");

如果(i == 4)

outtextxy(x + 25,y + 20," 0 ");

}

x = x+60;

}

y = y+53;

}

}

/* - */

int getkey(){

char lowbyte

int press

while(BIOS key(1)= = 0);

按= BIOS key(0);

新聞=新聞& amp0xff?新聞與出版。0x ff:press & gt;& gt8;

返回(按);

}

double strtoflt(char *p)

{

雙RTL = 0.000000000000;

double pnt = 0.000000000000

雙t = 10;

int is point = 0;

while (*p!='\0'||*p!='.'){

if(* p & lt;0 ' | | * p & gt'9')

打破;

RTL * = 10;

RTL+= * p-' 0 ';

p++;

}

if (*p== ' . '){

is point = 1;

p++;

}

while(ispoint & amp;& amp*p!='\0'){

pnt+=(double)(* p-' 0 ')/t;

t * = 10;

p++;

}

RTL+= pnt;

返回(RTL);

}

/* - */

void clear_z(char u[]){

int I;

for(I = strlen(u)-1;我& gt=0;我- ){

if (u[i]!='0')

打破;

}

if (u[i]== ' . '){

u[I]= ' \ 0 ';

}

否則{

i++;

u[I]= ' \ 0 ';

}

}

  • 上一篇:為什麽說開放源代碼促進Linux的發展?
  • 下一篇:申請遊戲著作權的材料有哪些
  • copyright 2024編程學習大全網