标题: 新人求助,老师出的题,我才接触 [打印本页]
作者: 李海 时间: 2014-6-23 18:23
标题: 新人求助,老师出的题,我才接触
假设某个项目,需要单片机通过串口从PC端接收10个数据,并从这十个数据中找出最小值。以下代码已经完成了串口初始化及数据接收的工作,显然数据已经被保存在数组里了,请在斜线下方补充完整的代码,实现从数组里找出最小的数,并将最小数保存在min里面
#include <REG52.H>
unsigned char min,i,n,m;
unsigned char a[10];
void main (void)
{
SCON = 0x50;
PCON= 0x00;
TMOD= 0x20;
TH1 = 0xe6;
TR1 = 1;
i=0x00;
while(i!= 0x0a)
{
while(RI= =0x00);
a=SBUF;
RI=0;
i++;
}
//////////////////////////////////////////////////////////
作者: 茗草 时间: 2014-6-25 18:51
本帖最后由 茗草 于 2014-6-25 19:06 编辑
min = a[0]; i = 9;
while(i)
{
if(min > a)
min = a;
i--;
}
作者: hkccd 时间: 2014-7-8 16:00
楼上的结果是正确的
作者: Love丶小柔情 时间: 2014-7-12 22:36
好有爱,我也是新手,看了老半天终于看懂了
作者: liaolinhui 时间: 2014-8-11 22:47
本帖最后由 liaolinhui 于 2014-8-11 23:06 编辑
我知道你的思路,先让min=a[0],然后跟其他数组相比,可以用min>a,min=a.这样的没问题吗,不用min=a[1]
min=a[2]这样的整的可以?应该在定义一个数值j,j=10-i.用if (min>a[j])
min=a[j]这样才合理吧
还有他的数组应该是从a[1]到a[10]你用a[0]的话显然不行。所以我改动如下,大家看看怎么样
unsigned int j;
min = a[1]; i = 9;
while(i)
{
j=11-9
if(min > a[j])
min = a[j];
i--;
}
我也刚学不知道理解得对不对。
作者: 明白 时间: 2014-8-12 10:48
a[10]是无符号,可以用
min = 0xff; //先假设是最大的
unsigned int i;
for(i=0;i<10;i++)
{
if(min > a[i])
min = a[i];
}
作者: liaolinhui 时间: 2014-8-12 18:35
本帖最后由 liaolinhui 于 2014-8-12 18:37 编辑
你的意思是定义数组a[10]的话是从a[0]到a[9]吗,我以为是从a[1]到a[10]呢,那我的是不是该改为
unsigned int j;
min = a[0]; i = 9;
while(i)
{
j=10-9
if(min > a[j])
min = a[j];
i--;
}
作者: 明白 时间: 2014-8-12 21:30
定义数组a[10],
10个数据分别是:a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]
作者: liaolinhui 时间: 2014-8-12 21:37
谢谢,又学到了
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |