找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1441|回復(fù): 3
收起左側(cè)

找出C語(yǔ)言數(shù)組內(nèi)非零的相同的數(shù)加一,大神們給個(gè)思路

[復(fù)制鏈接]
ID:706567 發(fā)表于 2023-4-6 18:14 | 顯示全部樓層 |閱讀模式
菜鳥一個(gè),各位大神幫忙給瞅瞅,失靈時(shí)不靈的,給個(gè)好一點(diǎn)的思路.
建立一個(gè)數(shù)組,使用按鍵選擇數(shù)組元素,進(jìn)行加一操作(0-9循環(huán))并比較數(shù)組內(nèi)的非0數(shù),是否相同,相同則加一(就是0可是重復(fù),1-9不重復(fù))。

單片機(jī)源程序如下:
  1. #include <STC15F2K60S2.H>
  2. unsigned char Array[9]; //
  3. sbit key_A=P2^0;
  4. sbit key_B=P2^1;

  5. sbit key_add=P2^2;
  6. unsigned char i,count;
  7. void main()
  8. {
  9. while(1)
  10.         {
  11.            if(key_A==0) {count++; if(count>9){count=9;} }   //外部已經(jīng)消抖      
  12.            if(key_A==0) {count--;if(count<0){count=0;}}//外部已經(jīng)消抖   
  13.            if(key_add==0){Array[count]++;}//外部已經(jīng)消抖   
  14.            for(i=0;i<9;i++)//數(shù)組每個(gè)元素進(jìn)行比較
  15.                                         {
  16.                                                 if(Array[count]!=0)//如果數(shù)值為0,則不比較
  17.                                                         {
  18.                                                                 if(count!=i)//count與i相同不比較
  19.                                                                         {
  20.                                                                                 if(Array[count]==Array[i])//判斷是否相同
  21.                                                                                         {
  22.                                                                                                 Array[count]++;//相同則加一
  23.                                                                                                 if(Array[count]>9){Array[count]=0;}//限值數(shù)組取值范圍
  24.                                                                                                 if(Array[count]<0){Array[count]=9;}
  25.                                                                                                 i=0;//因?yàn)橛邢嗤瑪?shù)值,再比較一遍
  26.                                                                                         }
  27.                                                                         }
  28.                                                         }
  29.                                         }



  30.          }
  31. }
  32. //送出去OLED顯示
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:688692 發(fā)表于 2023-4-6 21:44 | 顯示全部樓層
我居然沒(méi)有看懂你要實(shí)現(xiàn)的功能邏輯是什么……
回復(fù)

使用道具 舉報(bào)

ID:706567 發(fā)表于 2023-4-6 22:24 | 顯示全部樓層
cnos 發(fā)表于 2023-4-6 21:44
我居然沒(méi)有看懂你要實(shí)現(xiàn)的功能邏輯是什么……

我也覺(jué)得沒(méi)說(shuō)清楚
我的意思是利用按鍵,對(duì)數(shù)組內(nèi)的數(shù)進(jìn)行加操作(0-9循環(huán)),
通過(guò)key_A,key_B兩個(gè)按鍵選擇數(shù)組內(nèi){a0,a1,a2,-----a8},如選擇a0,按鍵key_add按一次a0加1,然后先與a1比較如果數(shù)相同,a0自動(dòng)加1,然后在于a2,a3,---a8逐次進(jìn)行,結(jié)果是不讓a0與其它數(shù)相同,如果是0,不比較可以相同。如果再對(duì)a1操作加1,也是一樣,逐次與a0,a2---a8比較,相同則自動(dòng)加1。
回復(fù)

使用道具 舉報(bào)

ID:844772 發(fā)表于 2023-4-7 08:49 | 顯示全部樓層
1.  if(key_A==0) {count--;if(count<0){count=0;}}//應(yīng)改為key_B   
2. 建議對(duì)數(shù)組值大小排列后再比較,否則會(huì)出現(xiàn)重復(fù)值。
   
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表