AT89S52用C语言编程的问题 5
为什么一段程序我这样写:while(1){i=1;do{for(j=0;j<100;j++)//循环100次约0.5s{display();coolctrl();}tem...
为什么一段程序我这样写:
while (1)
{ i=1;
do{
for (j=0;j<100;j++) //循环100次约0.5s
{
display();
coolctrl();
}
temptest1(); //每0.5s进行一次测温
temptest2(); //每0.5s进行一次测温
}
while (--i); //通过改变循环次数i的大小决定是否刷新显示
k=abs(ctemp1); //取温度绝对值
dispram[0]=k%10; //取个位数送显示
k/=10; //取十位数
dispram[1]=k? k:0x11; //送显示(带灭零)
}//end while (1)
}
而后面的一段程序没有被执行是怎么回事呀?没有被执行的程序如下:
temptest2(); //每0.5s进行一次测温
}
while (--i); //通过改变循环次数i的大小决定是否刷新显示
k=abs(ctemp1); //取温度绝对值
dispram[0]=k%10; //取个位数送显示
k/=10; //取十位数
dispram[1]=k? k:0x11; //送显示(带灭零)
}//end while (1)
}
有谁知道这是怎么一回事吗?能给出详细的解释吗?
我是用KEIL仿真的 展开
while (1)
{ i=1;
do{
for (j=0;j<100;j++) //循环100次约0.5s
{
display();
coolctrl();
}
temptest1(); //每0.5s进行一次测温
temptest2(); //每0.5s进行一次测温
}
while (--i); //通过改变循环次数i的大小决定是否刷新显示
k=abs(ctemp1); //取温度绝对值
dispram[0]=k%10; //取个位数送显示
k/=10; //取十位数
dispram[1]=k? k:0x11; //送显示(带灭零)
}//end while (1)
}
而后面的一段程序没有被执行是怎么回事呀?没有被执行的程序如下:
temptest2(); //每0.5s进行一次测温
}
while (--i); //通过改变循环次数i的大小决定是否刷新显示
k=abs(ctemp1); //取温度绝对值
dispram[0]=k%10; //取个位数送显示
k/=10; //取十位数
dispram[1]=k? k:0x11; //送显示(带灭零)
}//end while (1)
}
有谁知道这是怎么一回事吗?能给出详细的解释吗?
我是用KEIL仿真的 展开
3个回答
展开全部
需要给你写吗
更多追问追答
追问
好呀
追答
代做的
我id
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
经过测试,程序没问题,以下这段是到达了的:
k=abs(ctemp1); //取温度绝对值
dispram[0]=k%10; //取个位数送显示
k/=10; //取十位数
dispram[1]=k? k:0x11; //送显示(带灭零)
C++测试程序如下:
#include <stdio.h>
#include<iostream>
using namespace std;
int main(){
int i, j,k;
while (1)
{ i=1;
do{
for (j=0;j<100;j++) {
printf("calling display\n");
printf("calling coolctr\n");
}
printf("calling tmptest1\n"); //ÿ0.5s½øÐÐÒ»´Î²âÎÂ
printf("calling tmptest2\n"); //ÿ0.5s½øÐÐÒ»´Î²âÎÂ
printf("i= %d\n", i);
cin >> k;
}
while (--i); //ͨ¹ý¸Ä±äÑ»·´ÎÊýiµÄ´óС¾ö¶¨ÊÇ·ñË¢ÐÂÏÔʾ
printf("enter here\n");
printf("i= %d\n", i);
cin >> k;
}//end while (1)
return 0;
}
进入do循环中i==1;出来后i==0;便到达你所说不执行的语句了。你认为没有执行,但实际可能执行了,只是因为送显示后没显示出来,使你认为没有执行。
k=abs(ctemp1); //取温度绝对值
dispram[0]=k%10; //取个位数送显示
k/=10; //取十位数
dispram[1]=k? k:0x11; //送显示(带灭零)
C++测试程序如下:
#include <stdio.h>
#include<iostream>
using namespace std;
int main(){
int i, j,k;
while (1)
{ i=1;
do{
for (j=0;j<100;j++) {
printf("calling display\n");
printf("calling coolctr\n");
}
printf("calling tmptest1\n"); //ÿ0.5s½øÐÐÒ»´Î²âÎÂ
printf("calling tmptest2\n"); //ÿ0.5s½øÐÐÒ»´Î²âÎÂ
printf("i= %d\n", i);
cin >> k;
}
while (--i); //ͨ¹ý¸Ä±äÑ»·´ÎÊýiµÄ´óС¾ö¶¨ÊÇ·ñË¢ÐÂÏÔʾ
printf("enter here\n");
printf("i= %d\n", i);
cin >> k;
}//end while (1)
return 0;
}
进入do循环中i==1;出来后i==0;便到达你所说不执行的语句了。你认为没有执行,但实际可能执行了,只是因为送显示后没显示出来,使你认为没有执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询