小弟在学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); } |