




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言簡易計算器完整注釋版整理:junG制作yang_ccutinclude /*DOS 接口函數*/#include /*數學函數的定義*/#include /* 屏幕操作函數 */#include /*I/O函數*/#include /* 庫函數 */#include /* 變量長度參數表*/#include /* 圖形函數*/#include /* 字符串函數 */#include /* 字符操作函數 */#define UP 0 x48/* 光標上移鍵 */#define DOWN 0 x50 /* 光標下移鍵 */#define LEFT 0 x4b /* 光標左移鍵 */#defi
2、ne RIGHT 0 x4d /* 光標右移鍵 */#define ENTER 0 x0d /* 回車鍵*/void *rar;/*全局變量,保存光標圖象*/struct palettetype palette; /* 使用調色板信息*/int GraphDriver; /* 圖形設備驅動*/int GraphMode; /* 圖形模式值*/int ErrorCode; /* 錯誤代碼*/int MaxColors; /*可用顏色的最大數值*/int MaxX, MaxY; /*屏幕的最大分辨率*/double AspectRatio; /* 屏幕的像素比*/void drawboder(vo
3、id); /* 畫邊框函數 */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。;/*設置系統進入圖形模式*/comput
4、er(); /*運行計算器*/closegraph();/*系統關閉圖形模式返回文本模式*/return(0);/* 結束程序*/*設置系統進入圖形模式*/void initialize(void)int xasp, yasp; /*用于讀x和y方向縱橫比*/GraphDriver = DETECT; /* 自動檢測顯示器*/ initgraph( &GraphDriver, &GraphMode,);/*初始化圖形系統*/ErrorCode = graphresult(); /* 讀初始化結果 */if( ErrorCode != grOk ) /*如果初始化時出現錯誤*/printf(Gr
5、aphics System Error: %sn,grapherrormsg( ErrorCode ) ); /* 顯示錯誤代碼 */exit( 1 ); /* 退出 */工getpalette( &palette ); /*讀面板信息*/MaxColors = getmaxcolor() + 1; /* 讀取顏色的最大值*/MaxX = getmaxx(); /* 讀屏幕尺寸 */MaxY = getmaxy(); /* 讀屏幕尺寸 */getaspectratio( &xasp, &yasp ); /* 拷貝縱橫比到變量中*/AspectRatio = (double)xasp/(doub
6、le)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 cnum5,str220=,c,temp20=;char str1=”1230.456+-789*/Qc=A%”;/*定義字符串在按鈕圖形上顯示的符號*/mwindow( Calculator ); /* 顯示主窗
7、口 */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 ); /
8、*設置淡綠顏色邊框線*/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 ; i=x0+6*width)/*如果右移,移到尾,則移動到最左邊字符位置*/x=x0;m
9、=0;elsex=x+width+width/2;m+;/*否則,右移到下一個字符位置*/if(v=LEFT) /*左移箭頭時新位置計算*/if(x=x0)x=x0+6*width;m=4;/*如果移到頭,再左移,則移動到最右邊字符位置*/elsex=x-width-width/2;m-;/*否則,左移到前一個字符位置*/if(v=UP) /*上移箭頭時新位置計算*/if(y=7*height) y=y0;n=0;/*如果移到尾,再下移,則移動到最上邊字符位置*/elsey=y+height+height/2; n+;/*否則,移到下邊一個字符位置*/putimage(x,y,rar,XOR_
10、PUT); /*在新的位置顯示光標箭頭*/c=str1n*5+m; /*將字符保存到變量。中*/if(isdigit(c)|c=.) /*判斷是否是數字或小數點*/if(flag=-1) /*如果標志為-1,表明為負數*/strcpy(str2,-); /*將負號連接到字符串中*/ flag=1;/*將標志值恢復為1*/sprintf(temp,%c”,c); /*將字符保存到字符串變量t emp中*/ strcat(str2,temp); /* 將 t emp 中的字符串連接到 Ustr 2 中 */ setfillstyle(SOLID_FILL,color+3);bar(2*width+
11、width/2,height/2,15*width/2,3*height/2);outtextxy(5*width,height,str2); /* 顯示字符串 */if(c=+)num1=atof(str2); /*將第一個操作數轉換為浮點數*/ strcpy(str2,); /* 將 str 2 清空 */ 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.”); /* 顯示字符
12、串 */if(c=-)if(strcmp(str2,)=0) /*如果str2為空,說明是負號,而不是減號*/ flag=-1; /*設置負數標志*/ elsenum1=atof(str2); /*將第二個操作數轉換為浮點數*/ strcpy(str2,); /* 將 str 2 清空 */ 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.”); /* 顯示字符串
13、*/if(c=*)num1=atof(str2); /*將第二個操作數轉換為浮點數*/strcpy(str2,); /* 將 str 2 清空 */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,); /* 將 str 2 清空 */act=4; /
14、*做計算除法標志值*/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=K)num1=atof(str2); /*將第二個操作數轉換為浮點數*/strcpy(str2,); /* 將 str 2 清空 */act=5; /*做計算乘方標志值*/setfillstyle(SOLID_FILL,color+3); /*設置用淡綠色實體填充 */ bar(2*width+width/2,h
15、eight/2,15*width/2,3*height/2); /*畫矩形 */ outtextxy(5*width,height,0.”); /* 顯示字符串 */if(c=%)num1=atof(str2); /*將第二個操作數轉換為浮點數*/strcpy(str2,); /* 將 str 2 清空 */act=6; /*做計算模運算乘方標志值*/setfillstyle(SOLID_FILL,color+3); /*設置用淡綠色實體填充 */ bar(2*width+width/2,height/2,15*width/2,3*height/2); /*畫矩形 */ outtextxy(5
16、*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 次方 */c
17、ase 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(
18、str2,); /* 將 str 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=Q)exit(0); /*如果選擇了4回車,結束計算程序*/putimage(x,y,rar,XOR_PUT); /*在退出之前消去光標箭頭*/return; /* 返回 */*窗口函數*/void mwindow( char *header )int height;cleardevice(); /*清除圖形屏幕*/setcolor( MaxColors - 1 ); /*設置當前顏色為白色*/setviewport( 20, 20,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交警實習心得與體會(8篇)
- 掌握核心公路工程試題及答案詳解
- 網絡可視化技術的實際工作案例試題及答案
- 弘揚工匠精神的心得體會(20篇)
- 計算機四級軟件測試改革趨勢試題及答案
- 2025公路運輸合同新范本(16篇)
- 2025成人教育自我鑒定(7篇)
- 網絡工程師考試基本知識及試題與答案
- 有線與無線網絡特點試題及答案
- 數字語言試題及答案
- 中醫診斷學教材
- 計算機科學與技術專業畢業論文
- 2023年中電信數智科技有限公司招聘筆試題庫及答案解析
- 羅斯公司理財chap001全英文題庫及答案
- GB/T 5861-2003液壓快換接頭試驗方法
- GB/T 28886-2012建筑用塑料門
- GB/T 16422.2-2022塑料實驗室光源暴露試驗方法第2部分:氙弧燈
- GB/T 1508-2002錳礦石全鐵含量的測定重鉻酸鉀滴定法和鄰菲啰啉分光光度法
- 集體備課教案表格模板
- GB 34914-2021凈水機水效限定值及水效等級
- GB 15831-2006鋼管腳手架扣件
評論
0/150
提交評論