标题:
找出C语言数组内非零的相同的数加一,大神们给个思路
[打印本页]
作者:
无限飞翔
时间:
2023-4-6 18:14
标题:
找出C语言数组内非零的相同的数加一,大神们给个思路
菜鸟一个,各位大神帮忙给瞅瞅,失灵时不灵的,给个好一点的思路.
建立一个数组,使用按键选择数组元素,进行加一操作(0-9循环)并比较数组内的非0数,是否相同,相同则加一(就是0可是重复,1-9不重复)。
单片机源程序如下:
#include <STC15F2K60S2.H>
unsigned char Array[9]; //
sbit key_A=P2^0;
sbit key_B=P2^1;
sbit key_add=P2^2;
unsigned char i,count;
void main()
{
while(1)
{
if(key_A==0) {count++; if(count>9){count=9;} } //外部已经消抖
if(key_A==0) {count--;if(count<0){count=0;}}//外部已经消抖
if(key_add==0){Array[count]++;}//外部已经消抖
for(i=0;i<9;i++)//数组每个元素进行比较
{
if(Array[count]!=0)//如果数值为0,则不比较
{
if(count!=i)//count与i相同不比较
{
if(Array[count]==Array[i])//判断是否相同
{
Array[count]++;//相同则加一
if(Array[count]>9){Array[count]=0;}//限值数组取值范围
if(Array[count]<0){Array[count]=9;}
i=0;//因为有相同数值,再比较一遍
}
}
}
}
}
}
//送出去OLED显示
复制代码
作者:
cnos
时间:
2023-4-6 21:44
我居然没有看懂你要实现的功能逻辑是什么……
作者:
无限飞翔
时间:
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。
作者:
glinfei
时间:
2023-4-7 08:49
1. if(key_A==0) {count--;if(count<0){count=0;}}//应改为key_B
2. 建议对数组值大小排列后再比较,否则会出现重复值。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1