c語言模擬計算,c語言模擬計算器輸入兩個整數和一個運算符

本文目錄一覽:

c語言模擬簡單計算,無優先級,只計算加減乘除,輸入沒有空格

#includestdio.h

#includestdlib.h

int main()

{

float a,b;int oper;

printf(“請輸入a,b兩個數\n”);

scanf(“%f %f”,a,b);

printf(“請輸入對應的 + – * /符號,對應的是1234\n”);

scanf(“%d”,oper);

float c1=a+b,c2=a-b,c3=a*b,c4=a/b;

switch(oper)

{

case 1: printf(“%f\n”,c1);break;

case 2: printf(“%f\n”,c2);break;

case 3: printf(“%f\n”,c3);break;

case 4:if(b==0) {printf(“除數為0,不可進行運算\n”);exit(-1);}

printf(“%f\n”,c4);break;

}

return 0;

}

C語言模擬計算器的功能,要求至少能實現基本四則運算(加減乘除功能),要求提示明確.能用/*說明代碼意思最好

#include

#include

using

namespace

std;

int

main()

{

int

a,b;//a是輸出結果,b是臨時輸入數據

char

x;//x是標點符號輸入

cina;//先輸入第一個數

while(1)//由於不知道運算式一共多長,所以用一個死循環不斷讀取

{

cinx;//輸入運算符

if(x.

c語言模擬計算器四則混合運算

//此算法只能進行整數四則混合運算,也不支持括號

//按下面的格式輸入表達式(末尾無=)

//10-5+4+6/2*14*8/4-5*7+2-4*6/2-10*4-6/3

#includestdio.h

int jisuan(int num1,char op1,int num2)

{

switch(op1)

{

case ‘*’:

return num1*num2;

case ‘/’:

return num1/num2;

case ‘+’:

return num1+num2;

case ‘-‘:

return num1-num2;

}

}

int process(int num1,char op1,int num2)

{

int r,num3;

char op2;

if(‘\n’!=(op2=getchar()))

{

scanf(“%d”,num3);

if(‘+’==op2 || ‘-‘==op2)

{

num1=jisuan(num1,op1,num2);

r=process(num1,op2,num3);

}

else if(‘*’==op2 || ‘/’==op2)

{

if(‘/’==op1)

{

num1=jisuan(num1,op1,num2);

r=process(num1,op2,num3);

}

else

{

num2=jisuan(num2,op2,num3);

r=process(num1,op1,num2);

}

}

}

else

{

r=jisuan(num1,op1,num2);

}

return r;

}

int main()

{

int num1,num2;

char op;

printf(“請輸入一個表達式:”);

scanf(“%d%c%d”,num1,op,num2);

printf(“=%d\n”,process(num1,op,num2));

return 0;

}

C語言 設計一個 模擬計算器程序

#include dos.h /*DOS接口函數*/

#include math.h /*數學函數的定義*/

#include conio.h /*屏幕操作函數*/

#include stdio.h /*I/O函數*/

#include stdlib.h /*庫函數*/

#include stdarg.h /*變量長度參數表*/

#include graphics.h /*圖形函數*/

#include string.h /*字符串函數*/

#include ctype.h /*字符操作函數*/

#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; /* 用於讀x和y方向縱橫比*/

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; /*設置x的坐標值*/

y = height/2; /*設置y的坐標值*/

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.”); /*輸出字符串”0.”*/

x =2*width-width/2; /*設置x的坐標值*/

y =2*height+height/2; /*設置y的坐標值*/

for( j=0 ; j4 ; ++j ) /*畫按鈕*/

{

for( i=0 ; i5 ; ++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]);

/*將字符保存到str2中*/

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); /*移動光標到x,y位置*/

arrow(); /*顯示光標*/

putimage(x,y,rar,XOR_PUT);

m=0;

n=0;

strcpy(str2,””); /*設置str2為空串*/

while((v=specialkey())!=45) /*當壓下Alt+x鍵結束程序,否則執行下面的循環*/

{

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]; /*將字符保存到變量c中*/

if(isdigit(c)||c==’.’) /*判斷是否是數字或小數點*/

{

if(flag==-1) /*如果標誌為-1,表明為負數*/

{

strcpy(str2,”-“); /*將負號連接到字符串中*/

flag=1;

} /*將標誌值恢復為1*/

sprintf(temp,”%c”,c); /*將字符保存到字符串變量temp中*/

strcat(str2,temp); /*將temp中的字符串連接到str2中*/

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,””); /*將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) /*如果str2為空,說明是負號,而不是減號*/

flag=-1; /*設置負數標誌*/

else

{

num1=atof(str2); /*將第二個操作數轉換為浮點數*/

strcpy(str2,””); /*將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,””); /*將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,””); /*將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,””); /*將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,””); /*將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; /*做x的y次方*/

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); /*將結果保存到temp中*/

outtextxy(5*width,height,temp); /*顯示結果*/

}

if(c==’c’)

{

num1=0; /*將兩個操作數複位0,符號標誌為1*/

num2=0;

flag=1;

strcpy(str2,””); /*將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); /*如果選擇了q回車,結束計算程序*/

}

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 );/*將當前視口信息裝入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=key0xff? key0xff:key8; /*只取特殊鍵的掃描值,其餘為0*/

return(key); /*返回鍵值*/

}

原創文章,作者:NZKZR,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/331416.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NZKZR的頭像NZKZR
上一篇 2025-01-16 15:46
下一篇 2025-01-16 15:46

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 如何輸入三個整數,並輸出最大值Python

    對於初學者來說,輸入三個整數並輸出它們的最大值可能是一個比較基礎的問題。然而,它卻包含了Python中許多基本知識點的應用,因此學習它可以讓我們更好地理解Python編程語言。 一…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Python隨機生成100內的10個整數

    本文將從以下幾個方面詳細闡述Python隨機生成100內的10個整數: 一、random庫介紹 在Python中,生成隨機數可以使用random庫。random庫包括兩種類型的函數…

    編程 2025-04-29
  • 條件運算符(?:)是什麼意思?

    條件運算符(?:)是JavaScript中的一種特殊的運算符,也是許多編程語言中相似語法的一部分。它可以允許我們在一個簡單、一行的語句中完成條件判斷和賦值操作,非常方便。 1.語法…

    編程 2025-04-29
  • 全能編程開發工程師必備技能——如何優化大整數的計算

    本文將會為你分享如何解決大整數計算問題,以9999999967為例,我們將從多個方面對其做詳細闡述,並給出完整的代碼示例。 一、大整數的表示方法 在計算機中,我們通常採用二進制數來…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 整數的因子包含自身嗎

    本篇文章將從數學概念的角度、常用算法的應用、程序實現的方法等多個方面,對整數的因子包含自身的問題進行詳細闡述。 一、質因數分解法 將整數進行質因數分解,若分解結果中所有質因子的指數…

    編程 2025-04-29

發表回復

登錄後才能評論