请教keil c51问题

[复制链接]
2498|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

粉丝
快速回复 在线客服 返回列表 返回顶部