标题: 新人求助,老师出的题,我才接触 [打印本页]

作者: 李海    时间: 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 编辑
茗草 发表于 2014-6-25 18:51
min = a[0]; i = 9;
while(i)
{

我知道你的思路,先让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 编辑
明白 发表于 2014-8-12 10:48
a[10]是无符号,可以用
min = 0xff;  //先假设是最大的
unsigned int i;

你的意思是定义数组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
liaolinhui 发表于 2014-8-12 18:35
你的意思是定义数组a[10]的话是从a[0]到a[9]吗,我以为是从a[1]到a[10]呢,那我的是不是该改为
unsigned ...

定义数组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
明白 发表于 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]

谢谢,又学到了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1