找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 496|回复: 3
打印 上一主题 下一主题
收起左侧

找出C语言数组内非零的相同的数加一,大神们给个思路

[复制链接]
跳转到指定楼层
楼主
ID:706567 发表于 2023-4-6 18:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
菜鸟一个,各位大神帮忙给瞅瞅,失灵时不灵的,给个好一点的思路.
建立一个数组,使用按键选择数组元素,进行加一操作(0-9循环)并比较数组内的非0数,是否相同,相同则加一(就是0可是重复,1-9不重复)。

单片机源程序如下:
  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;} }   //外部已经消抖      
  12.            if(key_A==0) {count--;if(count<0){count=0;}}//外部已经消抖   
  13.            if(key_add==0){Array[count]++;}//外部已经消抖   
  14.            for(i=0;i<9;i++)//数组每个元素进行比较
  15.                                         {
  16.                                                 if(Array[count]!=0)//如果数值为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;}//限值数组取值范围
  24.                                                                                                 if(Array[count]<0){Array[count]=9;}
  25.                                                                                                 i=0;//因为有相同数值,再比较一遍
  26.                                                                                         }
  27.                                                                         }
  28.                                                         }
  29.                                         }



  30.          }
  31. }
  32. //送出去OLED显示
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:688692 发表于 2023-4-6 21:44 | 只看该作者
我居然没有看懂你要实现的功能逻辑是什么……
回复

使用道具 举报

板凳
ID:706567 发表于 2023-4-6 22:24 | 只看该作者
cnos 发表于 2023-4-6 21:44
我居然没有看懂你要实现的功能逻辑是什么……

我也觉得没说清楚
我的意思是利用按键,对数组内的数进行加操作(0-9循环),
通过key_A,key_B两个按键选择数组内{a0,a1,a2,-----a8},如选择a0,按键key_add按一次a0加1,然后先与a1比较如果数相同,a0自动加1,然后在于a2,a3,---a8逐次进行,结果是不让a0与其它数相同,如果是0,不比较可以相同。如果再对a1操作加1,也是一样,逐次与a0,a2---a8比较,相同则自动加1。
回复

使用道具 举报

地板
ID:844772 发表于 2023-4-7 08:49 | 只看该作者
1.  if(key_A==0) {count--;if(count<0){count=0;}}//应改为key_B   
2. 建议对数组值大小排列后再比较,否则会出现重复值。
   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表