打印

请教keil c51问题

[复制链接]
1208|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhoujw99|  楼主 | 2007-4-13 00:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟在学keil c51编程时遇到如下问题:
   程序在执行到循环程序段时,先执行一遍循环体后再等待输入数据,按道理应该要输入三组数据的,最后却只能输入
两组数据,先后使用for和do语句都一样。请高手赐教。
程序如下:

#include <stdlib.h>
#include <stdio.h>
#include <reg51.h>

data volatile struct stu
{
    char name[20];
    char sex;
    long num;
    int score[3];
};

struct stu student;


main()
{
      void _nop_();
    int i;
     char temp[20];
 #ifndef MONITOR51
 SCON =0x50;                   //SCON:模式1,8-bit异步串口通信
 TMOD =0x20;                   //TMOD:定时器1为模式2,8-bit自动装载方式
 TH1 =221;                     //TH1:1200bit/的装载值@16MHz
 TR1 =1;                       //RT1:timer1运行
 TI =1;                        //TI设置为1,以发送第一个字节
 #endif


    gets(student.name,20);
    student.sex=getchar();
    gets(temp,20);
    student.num=atol(temp);
    do
    {
        gets(temp,sizeof(temp));
        student.score=atoi(temp);
    }
    while((i++)<2);

    while(1);
    
}

相关帖子

沙发
ayb_ice| | 2007-4-13 07:44 | 只看该作者

while((i++)<3)...

  另外你的i也没有赋初值...

使用特权

评论回复
板凳
lixun00| | 2007-4-13 07:47 | 只看该作者

while((i++)<2),是2次循环,建议i初始化

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝