亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? scicomm.c

?? 計(jì)算器源代碼c。和windows自帶的功能差不多。很多科學(xué)計(jì)算還沒有加入。
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
            nPrecNum=nTempCom=nLastCom=nOpCode=nParNum=bChangeOp=FALSE;
            nFE = FMT_FLOAT;    // back to the default number format
            bNoPrevEqu=TRUE;

            /* clear the paranthesis status box indicator, this will not be
                cleared for CENTR */

            SetDlgItemText(g_hwndDlg, IDC_PARTEXT, szBlank);

            /* fall through */

        case IDC_CENTR: /* Clear only temporary values.                       */
            NumObjAssign( &ghnoNum, HNO_ZERO );

            if (!nCalc)
            {
                // Clear the INV, HYP indicators & leave (=xx indicator active

                SetBox (IDC_INV, bInv=FALSE);
                SetBox (IDC_HYP, bHyp=FALSE);
            }

            bError=FALSE;
            CIO_vClear(&gcio);
            gbRecord = TRUE;
            DisplayNum ();
            break;

        case IDC_STAT: /* Shift focus to Statistix Box if it's active.       */
            if (hStatBox)
                SetFocus(hStatBox);
            else
                SetStat (TRUE);
            break;

        case IDC_BACK:
            // Divide number by the current radix and truncate.
            // Only allow backspace if we're recording.
            if (gbRecord)
            {
                if (!CIO_bBackspace(&gcio))
                    MessageBeep(0);

                DisplayNum();
            }
            else
                MessageBeep(0);
            break;

        /* EQU enables the user to press it multiple times after and      */
        /* operation to enable repeats of the last operation.  I don't    */
        /* know if I can explain what the hell I did here...              */
        case IDC_EQU:
            do {
                // BUGBUG: a static HNUMOBJ will cause a memory leak as it won't get freed
                static HNUMOBJ  hnoHold;

                /* Last thing keyed in was an operator.  Lets do the op on*/
                /* a duplicate of the last entry.                         */
                if ((nLastCom >= IDC_AND) && (nLastCom <= IDC_PWR))
                    NumObjAssign( &ghnoNum, ghnoLastNum );

                if (nOpCode) /* Is there a valid operation around?        */
                {
                    /* If this is the first EQU in a string, set hnoHold=ghnoNum */
                    /* Otherwise let ghnoNum=hnoTemp.  This keeps ghnoNum constant */
                    /* through all EQUs in a row.                         */
                    if (bNoPrevEqu)
                        NumObjAssign(&hnoHold, ghnoNum);
                    else
                        NumObjAssign(&ghnoNum, hnoHold);

                    /* Do the current or last operation.                  */
                    DoOperation (nOpCode, &ghnoNum, ghnoLastNum);
                    NumObjAssign(&ghnoLastNum, ghnoNum );

                    /* Check for errors.  If this wasn't done, DisplayNum */
                    /* would immediately overwrite any error message.     */
                    if (!bError)
                        DisplayNum ();

                    /* No longer the first EQU.                           */
                    bNoPrevEqu=FALSE;
                }
                else if (!bError)
                    DisplayNum();

                if (nPrecNum==0 || nCalc==1)
                    break;

                nOpCode=nPrecOp[--nPrecNum];
                if (NumObjOK( ghnoPrecNum[nPrecNum] ))
                    NumObjAssign(&ghnoLastNum , ghnoPrecNum[nPrecNum]);
                else
                    NumObjAssign(&ghnoLastNum, HNO_ZERO);
                bNoPrevEqu=TRUE;
            } while (nPrecNum >= 0);

            bChangeOp=FALSE;
            break;


        case IDC_OPENP:
        case IDC_CLOSEP:
            nx=0;
            if (wParam==IDC_OPENP)
                nx=1;

            // -IF- the Paren holding array is full and we try to add a paren
            // -OR- the paren holding array is empty and we try to remove a
            //      paren
            // -OR- the the precidence holding array is full
            if ((nParNum >= 25 && nx) || (!nParNum && !nx)
                || ( (nPrecNum >= 25 && nPrecOp[nPrecNum-1]!=0) ) )
            {
                MessageBeep(0);
                break;
            }

            if (nx)
            {
                /* Open level of parentheses, save number and operation.   */
                NumObjAssign( &ghnoParNum[nParNum], ghnoLastNum);
                nOp[nParNum++]=nOpCode;

                /* save a special marker on the precedence array */
                nPrecOp[nPrecNum++]=0 ;

                NumObjAssign( &ghnoLastNum, HNO_ZERO );
                nTempCom=0;
                nOpCode=IDC_ADD;
            }
            else
            {
                /* Get the operation and number and return result.         */
                DoOperation (nOpCode, &ghnoNum, ghnoLastNum);

                /* now process the precedence stack till we get to an
                    opcode which is zero. */

                while (nOpCode = nPrecOp[--nPrecNum])
                {
                    if (NumObjOK( ghnoPrecNum[nPrecNum] ))
                        NumObjAssign(&ghnoLastNum , ghnoPrecNum[nPrecNum]);
                    else
                        NumObjAssign(&ghnoLastNum, HNO_ZERO);

                    DoOperation (nOpCode, &ghnoNum, ghnoLastNum);
                }

                /* now get back the operation and opcode at the begining
                    of this paranthesis pair */

                nParNum -= 1;
                NumObjAssign( &ghnoLastNum, ghnoParNum[nParNum] );
                nOpCode=nOp[nParNum];

                /* if nOpCode is a valid operator then set bChangeOp to
                    be true else set it false */

                if  (nOpCode)
                    bChangeOp=TRUE;
                else
                    bChangeOp=FALSE ;
            }

            /* Set the "(=xx" indicator.                     */
            lstrcpy(szJunk, TEXT("(="));
            lstrcat(szJunk, UToDecT(nParNum, szTemp));
            SetDlgItemText(g_hwndDlg, IDC_PARTEXT,
                           (nParNum) ? (szJunk) : (szBlank));

            if (bError)
                break;

            if (nx)
            {
                /* Build a display string of nParNum "("'s.  */
                for (nx=0; nx < nParNum; nx++)
                    szJunk[nx]=TEXT('(');

                szJunk[nx]=0; /* Null-terminate.  */
                SetDlgItemText(g_hwndDlg, IDC_DISPLAY, szJunk);
                bChangeOp=FALSE;
            }
            else
                DisplayNum ();
            break;

        case IDM_QWORD:
        case IDM_DWORD:
        case IDM_WORD:
        case IDM_BYTE:
        case IDM_DEG:
        case IDM_RAD:
        case IDM_GRAD:

            if (!F_INTMATH())
            {
                // in decimal mode, these buttons simply set a flag which is
                // passed to the ratpak to handle angle conversions

                if (xwParam(IDM_DEG, IDM_GRAD))
                {
                    nDecMode = (ANGLE_TYPE)(wParam - IDM_DEG);

                    CheckMenuRadioItem(GetSubMenu(GetMenu(g_hwndDlg), 1),
                                       IDM_DEG, IDM_GRAD, IDM_DEG+nDecMode,
                                       MF_BYCOMMAND);
                
                    CheckRadioButton(g_hwndDlg, IDC_DEG, IDC_GRAD, 
                                     IDC_DEG+nDecMode);
                }
            }
            else
            {
                if (xwParam(IDM_DEG, IDM_GRAD))
                {
                    // if in hex mode, but we got a decimal key press this
                    // likely is the accelorator.  map this to the correct key

                    wParam=IDM_DWORD+(wParam-IDM_DEG);
                }
                
                if ( gbRecord )
                {
                    CIO_vConvertToNumObj(&ghnoNum, &gcio);
                    gbRecord = FALSE;
                }

                // Compat. mode BaseX: Qword, Dword, Word, Byte
                nHexMode = (int)(wParam - IDM_QWORD);
                switch (nHexMode)
                {
                    case 0: dwWordBitWidth = 64; break;
                    case 1: dwWordBitWidth = 32; break;
                    case 2: dwWordBitWidth = 16; break;
                    case 3: dwWordBitWidth =  8; break;
                    default:
                        ASSERT( 0 );    // Invalid Word Size
                        break;
                }

                // different wordsize means the new wordsize determines
                // the precision

                BaseOrPrecisionChanged();

                CheckMenuRadioItem(GetSubMenu(GetMenu(g_hwndDlg), 1),
                                   IDM_QWORD, IDM_BYTE, IDM_QWORD+nHexMode,
                                   MF_BYCOMMAND);

                CheckRadioButton(g_hwndDlg, IDC_QWORD, IDC_BYTE, 
                                 IDC_QWORD+nHexMode);
               
            }


            // BUGBUG: the call to display number is what actually does the
            // chop. it would make more sense to do the chop here when the
            // wordsize changes. the chop must be done when a different
            // wordsize is selected AND when the base is changed to non-decimal
            DisplayNum();
            break;

        case IDC_SIGN:
            // Change the sign.
            if (gbRecord)
                CIO_vToggleSign(&gcio);
            else {
                NumObjNegate( &ghnoNum );
            }

            DisplayNum();
            break;

        case IDC_RECALL:
            /* Recall immediate memory value.                             */
            NumObjAssign( &ghnoNum, ghnoMem );

            DisplayNum ();
            break;

        case IDC_MPLUS:
            /* MPLUS adds ghnoNum to immediate memory and kills the "mem"   */
            /* indicator if the result is zero.                           */
            addrat( &ghnoMem, ghnoNum);
            SetDlgItemText(g_hwndDlg,IDC_MEMTEXT,
                           !NumObjIsZero(ghnoMem) ? (TEXT(" M")):(szBlank));
            break;

        case IDC_STORE:
        case IDC_MCLEAR:
            if (wParam==IDC_STORE)
            {
                NumObjAssign( &ghnoMem, ghnoNum );
            }
            else
            {
                NumObjAssign( &ghnoMem, HNO_ZERO );
            }
            SetDlgItemText(g_hwndDlg,IDC_MEMTEXT,
                           !NumObjIsZero(ghnoMem) ? (TEXT(" M")):(szBlank));
            break;

        case IDC_PI:
            if (!F_INTMATH())
            {
                /* Return PI if bInv==FALSE, or 2PI if bInv==TRUE.          */
                if (bInv)
                    NumObjAssign( &ghnoNum, HNO_2PI );
                else
                    NumObjAssign( &ghnoNum, HNO_PI );

                DisplayNum();
                SetBox(IDC_INV, bInv=FALSE);
            }
            else
                MessageBeep(0);
            break;

        case IDC_FE:
            // Toggle exponential notation display.
            nFE = NUMOBJ_FMT(!(int)nFE);
            DisplayNum();
            break;

        case IDC_EXP:
            if (gbRecord && !F_INTMATH())
                if (CIO_bExponent(&gcio))
                {
                    DisplayNum();
                    break;
                }
            MessageBeep(0);
            break;

        case IDC_PNT:
            if (gbRecord && !F_INTMATH()) {
                if (CIO_bAddDecimalPt(&gcio)) {

                    DisplayNum();
                    break;
                }
            }
            MessageBeep(0);
            break;

        case IDC_INV:
            SetBox((int)wParam, bInv=!bInv);
            break;

        case IDC_HYP:
            SetBox((int)wParam, bHyp=!bHyp);
            break;
    }

    SetWaitCursor(FALSE);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97精品电影院| 国产精品18久久久久久久久久久久| 日韩欧美在线影院| 9191成人精品久久| 欧美电影影音先锋| 欧美大片一区二区| 26uuu欧美日本| 中文字幕二三区不卡| 国产三级久久久| 国产精品视频第一区| 亚洲人xxxx| 一区二区三区四区精品在线视频| 亚洲精品伦理在线| 亚洲高清久久久| 男人的天堂亚洲一区| 国产最新精品免费| av在线综合网| 欧美剧情片在线观看| 日韩欧美一级二级| 国产精品第13页| 夜夜嗨av一区二区三区四季av| 亚洲制服欧美中文字幕中文字幕| 五月天中文字幕一区二区| 男男视频亚洲欧美| 成人精品免费网站| 欧美日韩国产欧美日美国产精品| 日韩一级黄色大片| 亚洲人午夜精品天堂一二香蕉| 亚洲国产精品久久久久婷婷884 | 久久嫩草精品久久久精品| 中文在线免费一区三区高中清不卡| 日韩一区中文字幕| 日韩极品在线观看| 不卡视频免费播放| 4hu四虎永久在线影院成人| 久久久精品综合| 亚洲第一二三四区| 成人午夜在线视频| 日韩一区二区电影| 1024成人网| 久久99精品久久久久久久久久久久| 成人黄页在线观看| 欧美成人精品1314www| 亚洲品质自拍视频网站| 国产一区二区三区四区五区入口 | 青青草原综合久久大伊人精品 | av午夜精品一区二区三区| 9191成人精品久久| 一区二区三区在线免费| 国产一区二区三区综合| 欧美人妇做爰xxxⅹ性高电影| 中文字幕一区二区不卡| 国产九九视频一区二区三区| 欧美喷水一区二区| 一区二区三区免费网站| 成人免费高清视频在线观看| 日韩欧美国产成人一区二区| 午夜精品久久一牛影视| 在线免费观看一区| 亚洲桃色在线一区| 成人高清在线视频| 国产精品日日摸夜夜摸av| 国内外成人在线| 91精品国产一区二区| 婷婷夜色潮精品综合在线| 色婷婷av一区二区三区软件| 中文字幕日本不卡| 99久久国产综合精品色伊| 国产人成一区二区三区影院| 国产精品一区二区视频| 精品久久国产字幕高潮| 麻豆精品精品国产自在97香蕉| 欧美另类高清zo欧美| 午夜影院久久久| 91精品视频网| 午夜精品福利在线| 日韩一二在线观看| 久久99在线观看| 久久久久久久综合狠狠综合| 国产一区91精品张津瑜| 国产亚洲欧美日韩俺去了| 国产91清纯白嫩初高中在线观看| 精品国产污污免费网站入口| 国产一区激情在线| 国产精品免费观看视频| 91美女片黄在线| 亚洲一卡二卡三卡四卡| 在线播放中文字幕一区| 蜜臀久久99精品久久久久久9 | 国产欧美日韩卡一| eeuss鲁片一区二区三区在线看| 中文字幕一区二区三区精华液 | 亚洲一区欧美一区| 91麻豆精品91久久久久同性| 久久国内精品自在自线400部| 日韩欧美亚洲国产精品字幕久久久| 黄网站免费久久| 国产精品三级在线观看| 欧美亚洲免费在线一区| 美腿丝袜在线亚洲一区| 久久久久久久综合狠狠综合| 99精品视频在线观看免费| 亚洲成人av一区二区三区| 精品日产卡一卡二卡麻豆| 大美女一区二区三区| 亚洲国产精品久久不卡毛片 | 欧美日本国产视频| 国产毛片精品一区| 亚洲国产成人精品视频| 久久精品视频一区二区三区| 色婷婷激情一区二区三区| 另类调教123区| 亚洲日本一区二区三区| 日韩欧美第一区| 91日韩精品一区| 国产综合色在线视频区| 夜夜嗨av一区二区三区网页| 久久久久久久一区| 欧美人狂配大交3d怪物一区| 成人国产亚洲欧美成人综合网| 亚洲va中文字幕| 综合亚洲深深色噜噜狠狠网站| 制服丝袜中文字幕一区| 色综合久久中文综合久久97| 久久国产免费看| 亚洲成人在线观看视频| 中文字幕一区二区在线观看 | 国产福利91精品| 日本欧美在线观看| 亚洲va中文字幕| 亚洲免费大片在线观看| 欧美激情一二三区| 精品国产91乱码一区二区三区| 欧美午夜免费电影| 99久久久精品| 成人精品gif动图一区| 国产精品一色哟哟哟| 免费观看日韩av| 午夜影视日本亚洲欧洲精品| 一区二区免费在线播放| 一区精品在线播放| 中文字幕在线一区二区三区| 国产网站一区二区| 久久精品在这里| 久久无码av三级| 久久久久久久久久久黄色| 欧美xxxx老人做受| 精品欧美一区二区三区精品久久| 欧美乱妇20p| 欧美高清视频www夜色资源网| 欧洲日韩一区二区三区| 欧洲人成人精品| 欧美日韩高清一区| 91精品国产综合久久福利软件| 欧美日韩和欧美的一区二区| 欧美日韩高清在线播放| 3d动漫精品啪啪1区2区免费| 91精品久久久久久久91蜜桃| 91麻豆精品国产| 欧美精品一区二区久久久| 精品国产一区二区亚洲人成毛片 | 色吊一区二区三区| 欧洲av在线精品| 在线不卡免费av| 久久综合九色综合97婷婷| 精品人在线二区三区| 欧美激情一区二区在线| 中文字幕一区三区| 亚洲aⅴ怡春院| 黄页网站大全一区二区| 不卡的av网站| 欧美久久久久中文字幕| 欧美成人艳星乳罩| 国产精品人人做人人爽人人添| 亚洲美女电影在线| 日韩电影免费在线观看网站| 激情图区综合网| 不卡的电视剧免费网站有什么| 在线这里只有精品| 日韩一级片网址| 亚洲欧洲三级电影| 日韩成人伦理电影在线观看| 国产精品原创巨作av| 色播五月激情综合网| 精品国偷自产国产一区| 亚洲欧美日韩久久精品| 蜜桃av噜噜一区| 色婷婷综合久久久久中文一区二区 | 国产亚洲精品超碰| 亚洲小说欧美激情另类| 国内精品久久久久影院一蜜桃| 99vv1com这只有精品| 欧美成人一区二区三区| 一区二区三区国产豹纹内裤在线| 久久99深爱久久99精品| 91福利社在线观看| 国产视频视频一区| 日产欧产美韩系列久久99| 91在线观看视频| 久久综合色一综合色88|