找回密码
 立即注册

QQ登录

只需一步,快速开始

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

新人求助,老师出的题,我才接触

[复制链接]
跳转到指定楼层
楼主
ID:63233 发表于 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++;
       }
         //////////////////////////////////////////////////////////
                                        
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:57531 发表于 2014-6-25 18:51 | 只看该作者
本帖最后由 茗草 于 2014-6-25 19:06 编辑

min = a[0]; i = 9;
while(i)
{
     if(min > a)
         min = a;
     i--;
}


回复

使用道具 举报

板凳
ID:2318 发表于 2014-7-8 16:00 来自手机 | 只看该作者
楼上的结果是正确的
回复

使用道具 举报

地板
ID:63918 发表于 2014-7-12 22:36 | 只看该作者
好有爱,我也是新手,看了老半天终于看懂了
回复

使用道具 举报

5#
ID:58502 发表于 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--;
}

我也刚学不知道理解得对不对。
回复

使用道具 举报

6#
ID:19715 发表于 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];
}
回复

使用道具 举报

7#
ID:58502 发表于 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--;
}
回复

使用道具 举报

8#
ID:19715 发表于 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]
回复

使用道具 举报

9#
ID:58502 发表于 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]

谢谢,又学到了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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