js for循环高级写法 for循环编写延时函数的用法?

[更新]
·
·
分类:互联网
1568 阅读

js for循环高级写法

for循环编写延时函数的用法?

for循环编写延时函数的用法?

步骤如下所示:
1、在编译器下建立一个新项目,也可以利用已有项目。此过程中需要注意,单片机晶振的选择,因为for循环里指令的执行时间和晶振有直接关系,本例中晶振使用11.0592M。

C语言一个for循环有几条语句?

这个没有限制的,for的参数里面的;符号只是用来区分3个语句块的用途,分别是 初始化,循环条件,累加器,实际上下面这个语句也是正确的for(int i0, j0; i!2 k!3; i , j--)

for i循环和for each的区别?

1、for循环经常用来遍历数组,通过计数器可以根据索引来访问数组的每个元素:
但是这个方式只是遍历数组的索引,如果想得到这个元素的值的大小,还需要通过索引对应读取这个元素的值
int[] ns { 1, 4, 9, 16, 25 }
for (int i0 iltns.length i ) { //遍历索引i
(ns[i]) //通过索引i读取数组的值 n[i]
}
2、java提供的for each循环可以更简单地遍历数组
public class Main {
public static void main(String[] args) {
int[] ns { 1, 4, 9, 16, 25 }
for (int n : ns) {
(n)
}
}
}
区别:和for循环相比,for each循环的变量n不再是计数器,而是直接对应到数组的每个元素。for each循环的写法也更简洁。但是,for each循环无法指定遍历顺序,也无法获取数组的索引。
除了数组外,for each循环能够遍历所有“可迭代”的数据类型,包括List、Map等。

c语言有哪几种循环结构,写出循环执行过程?

使用循环可以多次重复地执行多条语句,这里的“多条语句”称为循环体。在C语言中,可以使用三种循环,分别是:while、do...while和for。还有go to语句也可达到循环目的,但不常用。
在这些语句中,循环体被重复执行的次数由循环条件控制,称为控制表达式(controlling expression)。这是一个标量类型的表达式,也就是说,它属于一个算术表达式或指针表达式。如果控制表达式的值不等于 0,循环条件为 true,反之,循环条件为 false。
语句 break 和 continue 用于在一次循环还未执行完时,跳转出循环或返回到循环头部。
while 循环
只要控制表达式为 true,while 循环就会反复地执行语句:
while (表达式)语句
while 表达式是顶部驱动(top-driven)的循环:先计算循环条件(也就是控制表达式)。如果为 true,就执行循环体,然后再次计算控制表达式。如果控制表达式为 false,程序跳过循环体,而去执行循环体后面的语句。
从语法上讲,循环体只有一条语句组成。如果需要执行多条语句时,可以使用语句块把它们组合在一起。例 1 展示了一个简单的 while 循环,从控制台读入多个浮点数,并把它们累加。
例 1 展示了一个简单的 while 循环,从控制台读入多个浮点数,并把它们累加。
【例1】一个 while 循环
/* 从键盘输入数字,然后输出它们的平均值
* -------------------------------------- */
#include ltstdio.hgt
int main()
{
double x 0.0, sum 0.0
int count 0
printf( #34t--- Calculate Averages ---
#34 )
printf( #34
Enter some numbers:
#34
#34(Type a letter to end your input)
#34 )
while ( scanf( #34%lf#34, ampx ) 1 )
{
sum x
count
}
if ( count 0 )
printf( #34No input data!
#34 )
else
printf( #34The average of your numbers is %.2f
#34, sum/count )
return 0
}
在例 1 中,只要用户输入一个小数,下面的控制表达式即为 true:
scanf( #34%lf#34, ampx ) 1
然而,只要函数 scanf()无法将字符串输入转换成浮点数(例如,当用户键入字母 q 时),则 scanf()返回值 0(如果是遇到输入流的尾端或发生错误时,则返回值 -1,表示 EOF)。这时,循环条件为 false,程序将会跳出循环,继续执行循环体后面的 if 语句。
for 循环
和 while 一样,for 循环也是一个顶部驱动的循环,但是它包含了更多的循环逻辑,如下所示:
for ([表达式1][表达式2][表达式3])
语句
在一个典型的 for 循环中,在循环体顶部,下述三个动作需要执行:
(1) 表达式 1:初始化
只计算一次。在计算控制表达式之前,先计算一次表达式 1,以进行必要的初始化,后面不再计算它。
(2) 表达式 2:控制表达式
每轮循环前都要计算控制表达式,以判断是否需要继续本轮循环。当控制表达式的结果为 false,结束循环。
(3) 表达式 3:调节器
调节器(例如计数器自增)在每轮循环结束后且表达式 2 计算前执行。即,在运行了调节器后,执行表达式 2,以进行判断。
例 2 展示了使用一个 for 循环初始化数组内每个元素的过程。
【例2】用 for 循环初始化数组
#define ARR_LENGTH 1000
/* ... */
long arr[ARR_LENGTH]
int i
for ( i 0 i lt ARR_LENGTH i )
arr[i] 2*i
for 循环头部中的三个表达式可以省略一个或多个。这意味着 for 循环头部最短的形式是:
for ( )
如果没有控制表达式,则表示循环条件始终是 true,也就是说,这定义了一个死循环。
下面所示的 for 循环,既没有初始化表达式,也没有调节器表达式,它与 while(表达式)语句含义是等效的:
for ( 表达式 )
事实上,每个 for 循环都可以被改写成 while 循环,反之亦然。例如,例 2 的 for 循环可完全等效为下面的 while 循环:
i 0 // 初始化计数器
while ( i lt ARR_LENGTH ) // 循环条件
{
arr[i] 2*i
i // 递增计数器
}
一般来说,当循环内有计数器或索引变量需要被初始化,并且在每次循环时需要调整它们的值时,最好使用 for 循环,而不是 while 循环。
在ANSI C99中,也可以使用声明来替代表达式1。在这种情况下,被声明变量的作用域被限制在 for 循环范围内。例如:
for ( int i 0 i lt ARR_LENGTH i )
arr[i] 2*i
变量 i 被声明在该 for 循环中(与例 2 不同)for 循环结束之后,变量 i 将不会再存在。
逗号运算符常常被用在 for 循环头部,以在表达式 1 中实现多个初始化操作,或者在表达式 3 对每个变量做调整操作。例如,函数 strReverse()使用两个索引变量以保存字符串中字符的次序:
void strReverse( char* str)
{
char ch
for ( size_t i 0, j strlen(str)-1 i lt j i, --j )
ch str[i], str[i] str[j], str[j] ch
}
借助于逗号运算符,可以在只允许出现一个表达式的地方,计算多个表达式。
do...while 循环
do...while 循环是一种底部驱动的循环:
do 语句 while (表达式)
在控制表达式被第一次计算之前,循环体语句会首先被执行一次。与 while 和 for 循环不同,do...while 循环会确保循环体语句至少执行一次。如果控制表达式的值为 true,那么另一次循环就会继续;如果是 false,则循环结束。
在例 3 中,读入与执行命令的函数至少会被调用一次。当使用者离开菜单系统,函数 getCommand()将返回常量 END 的值。
【例3】do···while
// 读入和执行所选的菜单命令
// --------------------------------------------
int getCommand( void )
void performCommand( int cmd )
#define END 0
/* ... */
do
{
int command getCommand() // 询问菜单系统
performCommand( command ) // 执行所选的菜单命令
} while ( command ! END )
例 4 展示了标准库函数 strcpy()的一个版本,循环体仅为一条简单的语句,而不是一个语句块。因为在循环体执行之后才计算循环条件,所以字符串终止符#390#39也会被复制。
【例4】函数 strcpy()使用 do...while
// 将字符串2复制到字符串1
// ----------------------------
char *strcpy( char* restrict s1, const char* restrict s2 )
{
int i 0
do
s1[i] s2[i] // 循环体:复制每一个字符
while ( s2[i ] ! #390#39 ) // 如果刚刚复制的是#390#39,则结束循环
return s1
}