我们对于计算器的功能已经非常熟悉了,这个计算器包括 二进制,八进制,十进制,十六进制,四种格式。格式之间可以相互切换。
能够实现的的运算有,加减乘除 最基本的功能,还有比如 tan sin cos Exp x^y x^3 x^2 n! log ln 求倒数 And Not Or Mod Int取整 等
首先定义头文件,将程序需要的全局变量定义在头文件myhead.h当中,包括两个参与运算的变量,小数点标识,运算符标识,进制标识,以及GTK+图形界面编程中常用的元件指针。
源码如下所示:myhead.h
<span style="font-size:18px;">#include <gtk/gtk.h>
double a,b; /*两个参与运算的数*/
double p=0;
int hasdot; /*是否有小点数*/
int method; /*用于区别不同的运算*/
int principle; /*标识不同的进制*/
char out[20]="0";
GtkWidget *window; /*这部分时定义元件*/
GtkWidget *vbox; /*垂直框*/
GtkWidget *table1; /*表格一*/
GtkWidget *table2; /*表格二*/
GSList *group;
GtkWidget *radio; /*单选按钮*/
GtkWidget *entry; /*文本框*/
GtkWidget *button1; /*42个按钮*/
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *button4;
GtkWidget *button5;
GtkWidget *button6;
GtkWidget *button7;
GtkWidget *button8;
GtkWidget *button9;
GtkWidget *button10;
GtkWidget *button11;
GtkWidget *button12;
GtkWidget *button13;
GtkWidget *button14;
GtkWidget *button15;
GtkWidget *button16;
GtkWidget *button17;
GtkWidget *button18;
GtkWidget *button19;
GtkWidget *button20;
GtkWidget *button21;
GtkWidget *button22;
GtkWidget *button23;
GtkWidget *button24;
GtkWidget *button25;
GtkWidget *button26;
GtkWidget *button27;
GtkWidget *button28;
GtkWidget *button29;
GtkWidget *button30;
GtkWidget *button31;
GtkWidget *button32;
GtkWidget *button33;
GtkWidget *button34;
GtkWidget *button35;
GtkWidget *button36;
GtkWidget *button37;
GtkWidget *button38;
GtkWidget *button39;
GtkWidget *button40;
GtkWidget *button41;
GtkWidget *button42;</span>
下面是十六进制显示界面: show_Hex_window.c
<span style="font-size:18px;">#include <gtk/gtk.h>
void show_Hex_window()
{
gtk_button_set_label(GTK_BUTTON(button1)," ");
gtk_widget_show(button1);
gtk_button_set_label(GTK_BUTTON(button2)," ");
gtk_widget_show(button2);
gtk_button_set_label(GTK_BUTTON(button3)," ");
gtk_widget_show(button3);
gtk_button_set_label(GTK_BUTTON(button4)," ");
gtk_widget_show(button4);
gtk_button_set_label(GTK_BUTTON(button6)," ");
gtk_widget_show(button6);
gtk_button_set_label(GTK_BUTTON(button14),"7");
gtk_widget_show(button14);
gtk_button_set_label(GTK_BUTTON(button15),"4");
gtk_widget_show(button15);
gtk_button_set_label(GTK_BUTTON(button18),"A");
gtk_widget_show(button18);
gtk_button_set_label(GTK_BUTTON(button19),"8");
gtk_widget_show(button19);
gtk_button_set_label(GTK_BUTTON(button20),"5");
gtk_widget_show(button20);
gtk_button_set_label(GTK_BUTTON(button21),"2");
gtk_widget_show(button21);
gtk_button_set_label(GTK_BUTTON(button23),"B");
gtk_widget_show(button23);
gtk_button_set_label(GTK_BUTTON(button24),"9");
gtk_widget_show(button24);
gtk_button_set_label(GTK_BUTTON(button25),"6");
gtk_widget_show(button25);
gtk_button_set_label(GTK_BUTTON(button26),"3");
gtk_widget_show(button26);
gtk_button_set_label(GTK_BUTTON(button28),"C");
gtk_widget_show(button28);
gtk_button_set_label(GTK_BUTTON(button33),"D");
gtk_widget_show(button33);
gtk_button_set_label(GTK_BUTTON(button38),"E");
gtk_widget_show(button38);
gtk_button_set_label(GTK_BUTTON(button42),"F");
gtk_widget_show(button42);
}
</span>
十进制显示界面 show_Dec_window.c
<span style="font-size:18px;">#include <gtk/gtk.h>
void show_Dec_window()
{
gtk_button_set_label(GTK_BUTTON(button1),"pi");
gtk_widget_show(button1);
gtk_button_set_label(GTK_BUTTON(button2),"sin");
gtk_widget_show(button2);
gtk_button_set_label(GTK_BUTTON(button3),"cos");
gtk_widget_show(button3);
gtk_button_set_label(GTK_BUTTON(button4),"tan");
gtk_widget_show(button4);
gtk_button_set_label(GTK_BUTTON(button6),"Exp");
gtk_widget_show(button6);
gtk_button_set_label(GTK_BUTTON(button14),"7");
gtk_widget_show(button14);
gtk_button_set_label(GTK_BUTTON(button15),"4");
gtk_widget_show(button15);
gtk_button_set_label(GTK_BUTTON(button18)," ");
gtk_widget_show(button18);
gtk_button_set_label(GTK_BUTTON(button19),"8");
gtk_widget_show(button19);
gtk_button_set_label(GTK_BUTTON(button20),"5");
gtk_widget_show(button20);
gtk_button_set_label(GTK_BUTTON(button21),"2");
gtk_widget_show(button21);
gtk_button_set_label(GTK_BUTTON(button23)," ");
gtk_widget_show(button23);
gtk_button_set_label(GTK_BUTTON(button24),"9");
gtk_widget_show(button24);
gtk_button_set_label(GTK_BUTTON(button25),"6");
gtk_widget_show(button25);
gtk_button_set_label(GTK_BUTTON(button26),"3");
gtk_widget_show(button26);
gtk_button_set_label(GTK_BUTTON(button28)," ");
gtk_widget_show(button28);
gtk_button_set_label(GTK_BUTTON(button33)," ");
gtk_widget_show(button33);
gtk_button_set_label(GTK_BUTTON(button38)," ");
gtk_widget_show(button38);
gtk_button_set_label(GTK_BUTTON(button42)," ");
gtk_widget_show(button42);
}
</span>
八进制显示界面 show_Oct_window.c
<span style="font-size:18px;">#include <gtk/gtk.h>
void show_Oct_window()
{
gtk_button_set_label(GTK_BUTTON(button1)," ");
gtk_widget_show(button1);
gtk_button_set_label(GTK_BUTTON(button2)," ");
gtk_widget_show(button2);
gtk_button_set_label(GTK_BUTTON(button3)," ");
gtk_widget_show(button3);
gtk_button_set_label(GTK_BUTTON(button4)," ");
gtk_widget_show(button4);
gtk_button_set_label(GTK_BUTTON(button6)," ");
gtk_widget_show(button6);
gtk_button_set_label(GTK_BUTTON(button14),"7");
gtk_widget_show(button14);
gtk_button_set_label(GTK_BUTTON(button15),"4");
gtk_widget_show(button15);
gtk_button_set_label(GTK_BUTTON(button18)," ");
gtk_widget_show(button18);
gtk_button_set_label(GTK_BUTTON(button19)," ");
gtk_widget_show(button19);
gtk_button_set_label(GTK_BUTTON(button20),"5");
gtk_widget_show(button20);
gtk_button_set_label(GTK_BUTTON(button21),"2");
gtk_widget_show(button21);
gtk_button_set_label(GTK_BUTTON(button23)," ");
gtk_widget_show(button23);
gtk_button_set_label(GTK_BUTTON(button24)," ");
gtk_widget_show(button24);
gtk_button_set_label(GTK_BUTTON(button25),"6");
gtk_widget_show(button25);
gtk_button_set_label(GTK_BUTTON(button26),"3");
gtk_widget_show(button26);
gtk_button_set_label(GTK_BUTTON(button28)," ");
gtk_widget_show(button28);
gtk_button_set_label(GTK_BUTTON(button33)," ");
gtk_widget_show(button33);
gtk_button_set_label(GTK_BUTTON(button38)," ");
gtk_widget_show(button38);
gtk_button_set_label(GTK_BUTTON(button42)," ");
gtk_widget_show(button42);
}
</span>
二进制显示界面 show_Bin_window.
<span style="font-size:18px;">#include <gtk/gtk.h>
void show_Bin_window()
{
gtk_button_set_label(GTK_BUTTON(button1)," ");
gtk_widget_sh