當前位置:編程學習大全網 - 源碼下載 - 7參數計算源代碼

7參數計算源代碼

# include & ltdos.h & gt/*DOS接口函數*/

# include & ltmath.h & gt/*數學函數的定義*/

# include & ltconio.h & gt/*屏幕操作功能*/

# include & ltstdio.h & gt/*I/O功能*/

# include & ltstdlib.h & gt/*庫函數*/

# include & ltstdarg.h & gt/*可變長度參數表*/

# include & ltgraphics.h & gt/*圖形功能*/

# include & ltstring.h & gt/*字符串函數*/

# include & ltctype.h & gt/*字符操作功能*/

#define UP 0x48 /*光標向上鍵*/

#define DOWN 0x50 /*光標向下鍵*/

#定義左0x4b /*光標左鍵*/

#定義右0x4d /*光標右鍵*/

#define ENTER 0x0d /* Enter */

void * rar/*全局變量,保存光標圖像*/

struct palettetype調色板;/*使用調色板信息*/

int GraphDriver/*圖形設備驅動程序*/

int GraphMode/*圖形模式值*/

int錯誤代碼;/*錯誤代碼*/

int MaxColors/*可用顏色的最大數量*/

int MaxX,MaxY/*屏幕的最高分辨率*/

雙面翻;/*屏幕的像素比率*/

void draw boder(void);/*繪制邊框函數*/

void初始化(void);/*初始化函數*/

void電腦(void);/*計算器計算功能*/

void changetextstyle(int font,int direction,int charsize);/*更改文本樣式功能*/

void m window(char * header);/*窗口函數*/

int special key(void);/*獲取特殊按鍵功能*/

int arrow();/*設置箭頭光標功能*/

/*主函數*/

int main()

{

initialize();/*設置系統進入圖形模式*/

計算機();/*運行計算器*/

closegraph();/*系統關閉圖形模式並返回到文本模式*/

return(0);/*結束程序*/

}

/*設置系統進入圖形模式*/

void初始化(void)

{

int xasp,yasp/*用於讀取X和Y方向的縱橫比*/

GraphDriver = DETECT/*自動檢測顯示*/

init graph(& amp;graph driver & amp;GraphMode,“”;

/*初始化圖形系統*/

error code = graph result();/*讀取初始化結果*/

if( ErrorCode!= grOk) /*如果在初始化過程中出現錯誤*/

{

printf("圖形系統錯誤:%s\n ",

grapherrormsg(error code));/*顯示錯誤代碼*/

退出(1);/*退出*/

}

get palette(& amp;調色板);/*讀取面板信息*/

max colors = get maxcolor()+1;/*讀取顏色的最大值*/

MaxX = get MaxX();/*讀取屏幕尺寸*/

MaxY = get MaxY();/*讀取屏幕尺寸*/

getaspectratio(& amp;xasp & amp;yasp);/*將縱橫比復制到變量中*/

aspectation =(double)xasp/(double)yasp;/*計算縱橫比*/

}

/*計算器功能*/

無效計算機(無效)

{

struct viewporttype vp/*定義視口類型變量*/

int顏色、高度、寬度;

int x,y,x0,y0,I,j,v,m,n,act,flag = 1;

float num1=0,num2=0,結果;/*操作數和計算結果變量*/

char cnum[5],str2[20]={""},c,temp[20]= { " " };

夏爾·str1[]="1230.456+-789*/qc=^%”;/*定義要在按鈕圖形上顯示的字符串符號*/

mwindow(“計算器”);/*顯示主窗口*/

顏色= 7;/*設置灰色值*/

getview settings(& amp;VP);/*讀取當前窗口的大小*/

寬度=(VP . right+1)/10;/*設置按鈕寬度*/

height =(VP . bottom-10)/10;/*設置按鈕高度*/

x =寬度/2;/*設置x的坐標值*/

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

setfillstyle(SOLID_FILL,color+3);

bar(x+寬度*2,y,x+7 *寬度,y+高度);

/*繪制壹個二維矩形條來顯示操作數和結果*/

setcolor(顏色+3);/*設置淺綠色邊框線*/

矩形(x+寬度*2,y,x+7 *寬度,y+高度);

/*繪制矩形邊框線*/

setcolor(紅色);/*將顏色設置為紅色*/

out textxy(x+3 *寬度,y+高度/2," 0。");/*輸出字符串“0”*/

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

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

for(j = 0;j & lt4 ;++j) /*繪制壹個按鈕*/

{

for(I = 0;我& lt5 ;++i)

{

setfillstyle(SOLID_FILL,color);

setcolor(紅色);

bar( x,y,x+寬度,y+高度);/*畫壹個矩形條*/

矩形(x,y,x+寬度,y+高度);

sprintf(str2," %c ",str 1[j * 5+I]);

/*保存str2中的字符*/

outtextxy( x+(寬度/2),y+高度/2,str 2);

x = x+寬度+(寬度/2);/*移動列坐標*/

}

y +=(高度/2)* 3;/*移動線坐標*/

x = 2 *寬度-寬度/2;/*重置列坐標*/

}

x0 = 2 *寬度;

y0 = 3 *高度;

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 & gt;= x0+6 *寬度)

/*如果向右移動並移動到末尾,則移動到最左邊的字符位置*/

{

x = x0

m = 0;

}

其他

{

x = x+寬度+寬度/2;

m++;

}/*否則,向右移動到下壹個字符位置*/

If(v==LEFT) /*向左移動箭頭時新位置的計算*/

if(x & lt;=x0)

{

x = x0+6 *寬度;

m = 4;

}/*如果移動到頭部,然後向左移動,則移動到最右邊的字符位置*/

其他

{

x = x-寬度-寬度/2;

m-;

}/*否則,向左移動到前壹個字符位置*/

If(v==UP) /*向上移動箭頭時新位置的計算*/

if(y & lt;=y0)

{

y = y0+4 *高度+高度/2;

n = 3;

}/*如果移動到頭部然後向上移動,則移動到底部字符位置*/

其他

{

y = y-height-height/2;

n-;

}/*否則,移動到壹個字符的高位*/

If(v==DOWN) /*向下移動箭頭時新位置的計算*/

如果(y & gt= 7 *高)

{

y = y0

n = 0;

}/*如果移動到末尾然後向下移動,則移動到頂部字符位置*/

其他

{

y = y+身高+身高/2;

n++;

}/*否則,移動到下壹個字符位置*/

putimage(x,y,rar,XOR _ PUT);/*在新位置顯示光標箭頭*/

}

c = str 1[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);

條形(2 *寬+寬/2,高/2,15 *寬/2,3 *高/2);

outtextxy(5 *寬,高,str 2);/*顯示字符串*/

}

if(c=='+')

{

num 1 = atof(str 2);/*將第壹個操作數轉換為浮點數*/

strcpy(str2," ");/*空str2 */

act = 1;/*進行計算並添加標誌值*/

setfillstyle(SOLID_FILL,color+3);

條形(2 *寬+寬/2,高/2,15 *寬/2,3 *高/2);

out textxy(5 *寬,高," 0。");/*顯示字符串*/

}

if(c=='-')

{

If(strcmp(str2," ")==0) /*如果str2為空,則表示減號,而不是負號*/

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

其他

{

num 1 = atof(str 2);/*將第二個操作數轉換為浮點數*/

strcpy(str2," ");/*空str2 */

act = 2;/*計算減法標誌值*/

setfillstyle(SOLID_FILL,color+3);

條形(2 *寬+寬/2,高/2,15 *寬/2,3 *高/2);/*畫壹個矩形*/

out textxy(5 *寬,高," 0。");/*顯示字符串*/

}

}

if(c=='* ')

{

num 1 = atof(str 2);/*將第二個操作數轉換為浮點數*/

strcpy(str2," ");/*空str2 */

act = 3;/*做乘法標誌值的計算*/

setfillstyle(SOLID_FILL,color+3);條形(2 *寬+寬/2,高/2,15 *寬/2,3 *高/2);

out textxy(5 *寬,高," 0。");/*顯示字符串*/

}

if(c=='/')

{

num 1 = atof(str 2);/*將第二個操作數轉換為浮點數*/

strcpy(str2," ");/*空str2 */

act = 4;/*做計算除法標誌值*/

setfillstyle(SOLID_FILL,color+3);

條形(2 *寬+寬/2,高/2,15 *寬/2,3 *高/2);

out textxy(5 *寬,高," 0。");/*顯示字符串*/

}

if(c=='^')

{

num 1 = atof(str 2);/*將第二個操作數轉換為浮點數*/

strcpy(str2," ");/*空str2 */

act = 5;/*計算功率符號值*/

setfillstyle(SOLID_FILL,color+3);/*設置為用淺綠色實體填充*/

條形(2 *寬+寬/2,高/2,15 *寬/2,3 *高/2);/*畫壹個矩形*/

out textxy(5 *寬,高," 0。");/*顯示字符串*/

}

if(c=='% ')

{

num 1 = atof(str 2);/*將第二個操作數轉換為浮點數*/

strcpy(str2," ");/*空str2 */

act = 6;/*計算模冪標誌值*/

setfillstyle(SOLID_FILL,color+3);/*設置為用淺綠色實體填充*/

條形(2 *寬+寬/2,高/2,15 *寬/2,3 *高/2);/*畫壹個矩形*/

out textxy(5 *寬,高," 0。");/*顯示字符串*/

}

if(c=='= ')

{

num 2 = atof(str 2);/*將第二個操作數轉換為浮點數*/

開關(act) /*根據操作符號計算*/

{

案例1:結果= num 1+num 2;打破;/*添加*/

情況二:結果= num 1-num 2;打破;/*做減法*/

情況三:結果= num 1 * num 2;打破;/*做乘法*/

情況4:結果= num 1/num 2;打破;/*做除法*/

情況5:結果=pow(num1,num 2);打破;/*使x成為y的冪*/

情況6:結果=fmod(num1,num 2);打破;/*做模運算*/

}

setfillstyle(SOLID_FILL,color+3);/*設置為用淺綠色實體填充*/

條形(2 *寬+寬/2,高/2,15 *寬/2,3 *高/2);/*覆蓋結果區域*/

sprintf(temp," %f ",result);/*將結果保存在temp中*/

outtextxy(5 *寬度、高度、溫度);/*顯示結果*/

}

if(c=='c ')

{

num 1 = 0;/*將兩個操作數重置為0,符號sign為1*/

num 2 = 0;

flag = 1;

strcpy(str2," ");/*空str2 */

setfillstyle(SOLID_FILL,color+3);/*設置為用淺綠色實體填充*/

條形(2 *寬+寬/2,高/2,15 *寬/2,3 *高/2);/*覆蓋結果區域*/

out textxy(5 *寬,高," 0。");/*顯示字符串*/

}

if(c = = ' Q ')exit(0);/*如果選擇了Q Enter,則結束計算程序*/

}

putimage(x,y,rar,XOR _ PUT);/*退出前移除光標箭頭*/

返回;/* Return */

}

/*窗口函數*/

void mwindow( char *header)

{

int高度;

clear device();/*清除圖形屏幕*/

set color(max colors-1);/*將當前顏色設置為白色*/

setviewport( 20,20,MaxX/2,MaxY/2,1);/*設置視口大小*/

height = text height(" 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);/*設置視口大小*/

draw boder();/*繪制邊框*/

}

Void drawboder(void) /*繪制邊框*/

{

struct viewporttype vp/*定義視口類型變量*/

set color(max colors-1);/*將當前顏色設置為白色*/

setlinestyle( SOLID_LINE,0,NORM _ WIDTH);/*設置畫線方法*/

getview settings(& amp;VP);/*將當前視口信息加載到vp指向的結構中*/

矩形(0,0,vp.right-vp.left,VP . bottom-VP . top);/*繪制矩形邊框*/

}

/*設計鼠標圖形功能*/

整數箭頭()

{

int大小;

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(大小);/*分配內存區域*/

getimage(4,4,16,16,rar);/*存儲光標箭頭圖像*/

putimage(4,4,rar,XOR _ PUT);/*擦除光標箭頭圖像*/

返回0;

}

/*關鍵功能*/

int specialkey(void)

{

int鍵;

while(BIOS key(1)= = 0);/*等待鍵盤輸入*/

key = BIOS key(0);/*鍵盤輸入*/

鑰匙=鑰匙& amp0xff?鑰匙和鑰匙。0x ff:key & gt;& gt8;/*只取特殊鍵的掃描值,其余為0*/

回車鍵;/*返回鍵值*/

}

  • 上一篇:直播答題解決方案哪個水平成熟?
  • 下一篇:微信朋友圈JSSDK分享自定義圖片文字
  • copyright 2024編程學習大全網