資源簡(jiǎn)介
這是一個(gè)界面用glade3設(shè)計(jì),代碼用c實(shí)現(xiàn)的一個(gè)功能俱全的計(jì)算器。

代碼片段和文件信息
#include?
#include?
???/*創(chuàng)建一個(gè)指向GtkWidget類型的指針(創(chuàng)建文本框使用)*/
static?GtkWidget?*entry;
???/*創(chuàng)建全局變量:名為“fnum”(雙精度,第一個(gè)輸入量);
?????????????????????“snum”(雙精度,第二個(gè)輸入量)*/
gdouble?fnum?=?0;
gdouble?snum?=?0;
???/*創(chuàng)建全局控制變量:名為“num_count”(整型,控制輸入位數(shù));
??????????????????????????“operator”(整型,控制輸入的運(yùn)算符號(hào));
??????????????????????????“first_num”(布爾型,控制輸入的次數(shù));
??????????????????????????“have_result”(布爾型,為重新進(jìn)行計(jì)算作好準(zhǔn)備)*/
gint?????num_count?=0;
gint?????operator?=?0;
gboolean?first_num?=?TRUE;
//gboolean?first_num_equal?=?FALSE;
gboolean?have_dot?=?FALSE;?//小數(shù)點(diǎn)
gboolean?have_result?=?FALSE;
gchar????number[100];
/*........................................................................?*/
//清除函數(shù):ClearReset()
//1:清除屏幕上的內(nèi)容(TURE);2:初始化變量并清屏(FALSE)
void?ClearReset(gboolean?clear_only)
????????{
????????????/*初始化number[100]等,分配內(nèi)存空間*/
????????????gint?i?=?0;
????????????for(i?=?0;i<100;i++)
????????????????number[i]?=?‘\0‘;
????????????fnum?=?0;
????????????snum?=?0;
????????????operator?=?0;
????????????num_count?=?0;
????????????first_num?=?TRUE;
????????????have_dot?=?FALSE;
????????????have_result?=?FALSE;
????????????//first_num_equal?=?FALSE;
????????????/*清除屏幕*/
????????????if(clear_only?=?TRUE)
???????????????gtk_entry_set_text(GTK_ENTRY(entry)“0“);
????????????}???????
/*----------------------------------------------------------------------------------?*/
//按下數(shù)字時(shí)的回調(diào)函數(shù):PressNum()
void?PressNum(GtkButton?*buttongpointer?data)
????????{
????????????/*創(chuàng)建一個(gè)指向字符的指針變量:“num“(用來操作輸入量)*/
????????????const?gchar?*num;?????????????
????????????int?i;
?????????????????????????????????
????????????/*控制輸入數(shù)字的位數(shù)*/
????????????if(num_count?==?9)
????????????return;
??????????
????????????/*輸入位數(shù)記數(shù)*/
????????????num_count++;
??????????
????????????/*通過button的label獲取每次輸入的數(shù)值(字符串型)*/
????????????num=gtk_button_get_label(GTK_BUTTON(button));
??????????
????????????/*g_strlcat()?可以用來組合每次輸入數(shù)字(字符串)起到累加作用*/
????????????i=g_strlcat(numbernum100);
????????????????????????????????
????????????/*輸入第一個(gè)數(shù)和第二個(gè)數(shù)的控制開關(guān)strtod()是把字符串轉(zhuǎn)換為gdouble型*/
????????????if(first_num?)
????????????{
????????????/*第一次輸入*/
????????????fnum=strtod(numberNULL);
????????????}?????????
????????????else
????????????{
????????????????????/*第二次輸入*/
????????????????????/*防止除法時(shí)除數(shù)為0*/
????????????????????if(num_count?==?1);
????????????????????snum=strtod(numberNULL);
????
????????????????????if(num_count?==?1?&&?operator?==4?&&?snum?==?0)
????????????????????//gtk_entry_set_text(GTK_ENTRY(entry)“ERROR“);
????????????????????return;
????????????}
???????????if?(number[0]==‘0‘?&&?number[1]!=‘.‘?&&num_count>=2?)
????????????{
???????????????????gint?i;
???????????????for?(i?=0?;?i<100;?i++)
???????????????????{???
??????????????????????number[i]?=?number[i+1];
???????????????????}
????????????}
??????????????????
????????????/*把輸入的數(shù)字顯示出來*/
????????????gtk_entry_set_text(GTK_ENTRY(entry)number);
????????????//g_print(“F:%f\n“fnum);
????????????//g_print(“S:%f\n“snum);
????????}
/*--------
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-11-30?02:36??glade3設(shè)計(jì)的計(jì)算器\
?????文件???????15235??2011-10-17?00:49??glade3設(shè)計(jì)的計(jì)算器\glade_counter.c
?????文件???????11914??2011-10-17?00:51??glade3設(shè)計(jì)的計(jì)算器\counter.glade
?????文件??????????99??2011-10-17?01:05??glade3設(shè)計(jì)的計(jì)算器\readme
?????文件???????16384??2011-10-14?01:57??glade3設(shè)計(jì)的計(jì)算器\.callbacks.c.swo
?????文件?????????137??2011-10-17?01:25??glade3設(shè)計(jì)的計(jì)算器\Makefile
評(píng)論
共有 條評(píng)論