linux下面用C语言设计实现一个计算器

本文介绍了如何在Linux环境下使用C语言设计一个功能丰富的计算器,支持二进制、八进制、十进制和十六进制之间的转换,并包含多种数学运算,如三角函数、指数、对数等。程序通过全局变量管理状态,并利用GTK+库创建图形界面。
摘要由CSDN通过智能技术生成



我们对于计算器的功能已经非常熟悉了,这个计算器包括 二进制,八进制,十进制,十六进制,四种格式。格式之间可以相互切换。


能够实现的的运算有,加减乘除  最基本的功能,还有比如  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
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值