linxuan_1990 发表于 2013-9-28 13:20:15

求解释!!功能怎么实现??

void loop()
{
   while(1)
   {
       digital_1();//显示数字1
       while(analogRead(0)>1000);//如果读到模拟0口的值1000则说明有按键按下
       delay(100);//延时200ms
       digital_2();//显示数字2
       while(analogRead(0)>1000);//如果读到模拟0口的值1000则说明有按键按下
       delay(100);//延时200ms
      
   }
}

邓维安 发表于 2013-9-28 13:41:48

while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。其执行过程可用下图表示。

【例6.2】用while语句计算从1加到100的值。用传统流程图和N-S结构流程图表示算法,见图:

main()
{
   int i,sum=0;
   i=1;
   while(i<=100)
      {
sum=sum+i;
          i++;
         }
   printf("%d\n",sum);
}


【例6.3】统计从键盘输入一行字符的个数。
#include <stdio.h>
main(){
    int n=0;
    printf("input a string:\n");
    while(getchar()!='\n') n++;
    printf("%d",n);
}

    本例程序中的循环条件为getchar()!='\n',其意义是, 只要从键盘输入的字符不是回车就继续循环。循环体n++完成对输入字符个数计数。从而程序实现了对输入一行字符的字符个数计数。

使用while语句应注意以下几点:

while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。
【例6.4】
main(){
    int a=0,n;
    printf("\n input n:    ");
    scanf("%d",&n);
    while (n--)
      printf("%d",a++*2);
}

本例程序将执行n次循环,每执行一次,n值减1。循环体输出表达式a++*2的值。该表达式等效于(a*2;a++)。

linxuan_1990 发表于 2013-9-28 18:32:25

谢谢,有一点不明白
digital_1();//显示数字1
      while(analogRead(0)>1000);//如果读到模拟0口的值1000则说明有按键按下
      delay(100);//延时200ms

while();后面没有表达式了,接下来怎么执行

a5123058 发表于 2013-9-29 00:29:22

linxuan_1990 发表于 2013-9-28 18:32 static/image/common/back.gif
谢谢,有一点不明白
digital_1();//显示数字1
      while(analogRead(0)>1000);//如果读到模拟0口的值 ...

一直在while(1){}内循环

laofuz1024 发表于 2013-9-29 05:39:02

本帖最后由 laofuz1024 于 2013-9-29 05:40 编辑

linxuan_1990 发表于 2013-9-28 18:32 static/image/common/back.gif
谢谢,有一点不明白
digital_1();//显示数字1
      while(analogRead(0)>1000);//如果读到模拟0口的值 ...

是指while(analogRead(0)>1000) 的后面是 ; 号,没有表达式吗?

后面是分号,没有表达式,就会回头去判断 analogRead(0)>1000
如果这句结果是真,那就会什么也不干,因为没有表达式,什么也不干,马上又跳回判断 analogRead(0)>1000。也就是说,如果这条式子成立,那就会不停地判断这式子,发现式子成立,什么也不干又回判断

就相当于   我问你是姓陈吗?你回答是,那我什么也不干又继续问你是姓陈吗,如此循环..........
如果你回答不是了,那我就走开去干别的事情

如果这条式子不成立,就会去执行 下面的 delay(100); 这些语句...

linxuan_1990 发表于 2013-9-29 11:13:41

laofuz1024 发表于 2013-9-29 05:39 static/image/common/back.gif
是指while(analogRead(0)>1000) 的后面是 ; 号,没有表达式吗?

后面是分号,没有表达式,就会回头 ...

谢谢大哥,明白了

linxuan_1990 发表于 2013-9-29 11:15:47

a5123058 发表于 2013-9-29 00:29 static/image/common/back.gif
一直在while(1){}内循环

谢谢,你回答的,不是我要问的内容。:D
页: [1]
查看完整版本: 求解释!!功能怎么实现??