• 大小: 8KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: 计算器  

资源简介

这是一个界面用glade3设计,代码用c实现的一个功能俱全的计算器。

资源截图

代码片段和文件信息

#include 
#include 

   /*创建一个指向GtkWidget类型的指针(创建文本框使用)*/
static GtkWidget *entry;

   /*创建全局变量:名为“fnum”(双精度,第一个输入量);
                     “snum”(双精度,第二个输入量)*/
gdouble fnum = 0;
gdouble snum = 0;

   /*创建全局控制变量:名为“num_count”(整型,控制输入位数);
                          “operator”(整型,控制输入的运算符号);
                          “first_num”(布尔型,控制输入的次数);
                          “have_result”(布尔型,为重新进行计算作好准备)*/
gint     num_count =0;
gint     operator = 0;
gboolean first_num = TRUE;
//gboolean first_num_equal = FALSE;
gboolean have_dot = FALSE; //小数点
gboolean have_result = FALSE;
gchar    number[100];



/*........................................................................ */
//清除函数:ClearReset()
//1:清除屏幕上的内容(TURE);2:初始化变量并清屏(FALSE)

void ClearReset(gboolean clear_only)
        {
            /*初始化number[100]等,分配内存空间*/
            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“);
            }       



/*---------------------------------------------------------------------------------- */
//按下数字时的回调函数:PressNum()

void PressNum(GtkButton *buttongpointer data)
        {
            /*创建一个指向字符的指针变量:“num“(用来操作输入量)*/
            const gchar *num;             
            int i;
                                 
            /*控制输入数字的位数*/
            if(num_count == 9)
            return;
          
            /*输入位数记数*/
            num_count++;
          
            /*通过button的label获取每次输入的数值(字符串型)*/
            num=gtk_button_get_label(GTK_BUTTON(button));
          
            /*g_strlcat() 可以用来组合每次输入数字(字符串)起到累加作用*/
            i=g_strlcat(numbernum100);

                                
            /*输入第一个数和第二个数的控制开关strtod()是把字符串转换为gdouble型*/
            if(first_num )
            {
            /*第一次输入*/
            fnum=strtod(numberNULL);

            }         
            else
            {
                    /*第二次输入*/
                    /*防止除法时除数为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];
                   }
            }
                  
            /*把输入的数字显示出来*/
            gtk_entry_set_text(GTK_ENTRY(entry)number);

            //g_print(“F:%f\n“fnum);
            //g_print(“S:%f\n“snum);

        }



/*--------

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-11-30 02:36  glade3设计的计算器\
     文件       15235  2011-10-17 00:49  glade3设计的计算器\glade_counter.c
     文件       11914  2011-10-17 00:51  glade3设计的计算器\counter.glade
     文件          99  2011-10-17 01:05  glade3设计的计算器\readme
     文件       16384  2011-10-14 01:57  glade3设计的计算器\.callbacks.c.swo
     文件         137  2011-10-17 01:25  glade3设计的计算器\Makefile

评论

共有 条评论