久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 328|回復: 1
打印 上一主題 下一主題
收起左側

C語言結構體數組中sys_ctr_sys.preNum存入708三位數分拆時丟失0?

[復制鏈接]
跳轉到指定樓層
樓主
ID:645031 發表于 2025-4-25 09:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. //將整數各位取出存放數組
  2. //num: 轉換的整數
  3. //buf: 轉換后存儲到數組內
  4. //返回值: 整數的長度
  5. unsigned char int_to_array(unsigned int num)
  6. {
  7.         unsigned char cnt = 0;

  8.         if(num != 0)                //        傳入的數據不為0
  9.         {
  10.                 while(num != 0)
  11.                 {
  12.                         num /= 10;                                                        //num = 789
  13.                         cnt ++;                                                                                //記錄這個數是幾位數
  14.                 }
  15.         }
  16.         else                //傳入的數據為0
  17.                 cnt ++;
  18.         return cnt;
  19. }


  20. //獲取第1個計算書并顯示
  21. void get_pre_num_show(void)
  22. {
  23.         unsigned char tempbuf[SMG_SHOW_BITNUM] = {0};        //保存數碼管顯示
  24.         unsigned char key_cnt;                                                                //存儲按鍵按下的次數
  25. //        unsigned char j;                                                                                        //循環變量
  26.         unsigned char b;
  27.         unsigned char SIGN;
  28.         unsigned int Num;                                                                                                //獲取矩陣按鍵的按鍵值
  29.         
  30.         while(1)
  31.         {
  32.                 if(key_cnt == 0)                //還未輸入數,顯示0
  33.                 {
  34.                         DisplayData[0] = 0;
  35.                 }
  36.                         
  37.                 //8位輸入有效
  38.                 Num = Key_GetState();
  39.                 if(key_cnt == 0 && Num !=16)
  40.                         DisplayData[0] = 16;
  41.                 if(key_cnt < SMG_SHOW_BITNUM)
  42.                 {
  43.                         //獲取0~9數值
  44.                         switch(Num)
  45.                         {
  46.                                 //7,8,9
  47.                                 case 0:
  48.                                 case 1:
  49.                                 case 2: tempbuf[key_cnt] = Num + 7;Display(tempbuf[key_cnt]);sys_ctr_sys.preNum = sys_ctr_sys.preNum*10 + (Num + 7);
  50.                                                                 key_cnt ++;break;
  51.                                 //5,6,7
  52.                                 case 4:
  53.                                 case 5:
  54.                                 case 6: tempbuf[key_cnt] = Num;Display(tempbuf[key_cnt]);sys_ctr_sys.preNum = sys_ctr_sys.preNum*10 + Num;
  55.                                                                 key_cnt ++;break;
  56. //                                //1,2,3
  57.                                 case 8:
  58.                                 case 9:
  59.                                 case 10: tempbuf[key_cnt] = Num - 7;Display(tempbuf[key_cnt]);sys_ctr_sys.preNum = sys_ctr_sys.preNum*10 + (Num - 7);
  60.                                                                 key_cnt ++;break;
  61.                                 //第一個輸入顯示0,則后面再輸入0還是顯示0
  62.                                 case 12:if(key_cnt == 0)
  63.                                                                         tempbuf[key_cnt] = Num - 12;
  64.                                                                 else
  65.                                                                 {
  66.                                                                         tempbuf[key_cnt] = Num - 12;Display(tempbuf[key_cnt]);
  67.                                                                         key_cnt ++;
  68.                                                                 }
  69.                                                                 break;
  70. //                                //清零
  71.                                 case 13:key_cnt = 0;
  72.                                                                 for(b = 0;b < SMG_SHOW_BITNUM;b++)
  73.                                                                 {
  74.                                                                         tempbuf[b] = 0;
  75.                                                                 }
  76.                                                                 DisplayClear();
  77.                                                                 SIGN = 0;
  78.                                                                 break;
  79.                                 //符號
  80.                                 case 3:DisplayClear();SIGN = 1;sys_ctr_sys.sign = SIGN_ADD;DisplayData[0] = 10;break;                // +        A
  81.                                 case 7:DisplayClear();SIGN = 2;sys_ctr_sys.sign = SIGN_MIN;DisplayData[0] = 11;break;                // -        B
  82.                                 case 11:DisplayClear();SIGN = 3;sys_ctr_sys.sign = SIGN_MUL;DisplayData[0] = 12;break;                // *        C
  83. //                                case 14:DisplayClear();SIGN = 5;sys_ctr_sys.sign = SIGN_EQUAL;DisplayData[0] = 14;break;        // =        E
  84.                                 case 15:DisplayClear();SIGN = 4;sys_ctr_sys.sign = SIGN_DIV;DisplayData[0] = 13;break;                // /        D
  85.                                 default:break;
  86.                         }
  87. //                        smg_display(smgbuf,SMG_SHOW_BITNUM + 1 - key_cnt);               
  88.                 }

  89.                 if(SIGN != 0)  //有符合鍵按下
  90. //                {
  91. //                        for(j = 0;j<key_cnt; j++)                //將數組內數整合為一個整數
  92. //                        {
  93. //                                sys_ctr_sys.preNum += tempbuf[j]*num_pow(10,key_cnt - 1 - j);        //789=0+7*10^2+8*10^1+9
  94. //                        }
  95. ////                                sys_ctr_sys.preNum += sys_ctr_sys.curNum;//?
  96.                         break;
  97. //                }        
  98.         }
  99. }

  100. void get_num_show()
  101. {
  102.    unsigned int tempbuf[SMG_SHOW_BITNUM] = {0};        //保存數碼管顯示
  103.    unsigned char bitnum;   
  104.    long rnum;
  105.    unsigned char j;                                                                                        //循環變量
  106.    long n;
  107.    unsigned char i;

  108.    DisplayData[0] = 16;
  109.    Delay2000ms();
  110.    bitnum = int_to_array(sys_ctr_sys.preNum);   //789,bitnum = 3;
  111.    rnum = sys_ctr_sys.preNum;


  112.    if(rnum != 0)                //        傳入的數據不為0
  113.    {
  114.       i=bitnum -1;
  115.       while(rnum != 0)
  116.       {
  117.          n = rnum % 10;
  118.          if(n == 0)
  119.          tempbuf[i] = 0;
  120.          else
  121.          tempbuf[i] = n;        //將各個位的數賦值于數組tempbuf[j],789

  122.          rnum /= 10;                                                        //現在數組tempbuf[j]記錄的是各個位上的數的反序

  123.          i--;
  124.       }
  125.    }
  126.    for(j = 0;j < bitnum;j ++)
  127.    {
  128.       Display(tempbuf[j]);
  129.    }
  130.     while(1);
  131. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:108361 發表于 2025-4-25 15:44 | 只看該作者
結構體聲明在哪?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人不卡视频 | 日韩免费视频一区二区 | 五月激情婷婷在线 | 一级毛片,一级毛片 | 日本免费在线看 | 亚洲欧美一区二区三区1000 | 亚洲精品久久久久中文字幕二区 | 色999日韩| 国产日韩欧美电影 | 亚洲国产成人在线观看 | 欧美成人精品 | 夜夜草导航 | 亚洲午夜精品视频 | 免费午夜视频在线观看 | 精品综合久久久 | 久久久久久久久久久久久九 | 国产一区二 | 国产日韩欧美在线 | 一级毛毛片 | 老头搡老女人毛片视频在线看 | 成人在线精品视频 | 99re在线视频精品 | a国产一区二区免费入口 | 午夜精品影院 | 永久免费视频 | 成人免费网站 | 天天爽夜夜爽精品视频婷婷 | 九九热精品视频 | 精品国产一区二区三区久久久蜜月 | 亚洲a视频 | 日韩免费高清视频 | 欧美成人性生活 | 孕妇一级毛片 | 天堂国产| 粉嫩一区二区三区国产精品 | 久久成人激情 | 亚洲二区在线 | 国产日韩电影 | 国产乱码久久久久久 | 日韩图区 | 久久在线 |