重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,你的子函数motor_x_cw() 本身无返回类型的.也就是返回空. 换句话说,程序从头到尾执行一遍就完了,并不返回任何值.
创新互联建站是专业的临安网站建设公司,临安接单;提供做网站、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行临安网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
为什么有死循环.可能因为你声明的数据类型出错了.请用下面的代码试一下.
void motor_x_cw()
{
//uchar i,j=16; 这一句不要.
for (int j = 0; j16; j++)
{
for(int i=1;i5;i++)
{
P2=Step_table[i];//调一个数组驱动电机正转
delay_50ms(5);
beep=1;//蜂鸣器停止
}
}
}
#includestdio.h
#includemalloc.h
int swap (int x)
{
if(x%4==1x%5==3x%7==4)
return 1;
else return 0;
}
int main(void)
{
int i,s;
for(i=200; 200=i i=500;i++)
{
s=swap(i);
if(s==1)
printf("output:%d\n",i);
}
return 0;
}
应该是已经走了。
但是你Keyscan后就调用另外两个函数。而两个函数也没有个执行的显示,所以看上去就象是一直在执行keyscan函数一样。
而且你的while(1)这个执行条件,一直就是真。所以,你这个程序,首先是无法跳出循环。
第二,循环肯定是已经执行了另外两个方法,但是因为你的两个函数没有输出提示,所以你误以为没有执行。
建立你在两个函数里用两个输出语句,你就可以看到,你的这两个函数实际已经执行了。
这要看你输入什么了。有一个要点:scanf()的返回值是它成功读入值的个数。如果你第一次输入一个整数,那么第一个scanf函数会成功读入一个整数,它的返回值就是1,即ret的值是1。那么for循环的关系表达式:ret!=1就不成立,整个循环就不会执行,程序直接停止。如果你第一次输入了非整数,那么第一个scanf函数成功读入的值就是0,它返回0,即ret = 0。此时for循环的关系表达式:ret!=1成立,for循环才会开始迭代。如果你的程序执行的时候一直在打印,不给你输入的机会,说明你清空输入缓冲区的函数fflush没起作用,缓冲区里保存的第一次非法输入一直都在。你把 fflush(stdin); 改成: while(getchar()!='\n'); 就好了。