首页 技术资料正文

C语言循环结构(while循环,for循环,do…while循环)(变量命名规则)

piaodoo 技术资料 2022-08-26 23:51:33 663 0

C语言循环结构(while循环,for循环,do…while循环)(变量命名规则)

C语言循环结构(while循环,for循环,do…while循环)

使用循环可以多次重复地执行多条语句,这里的“多条语句”称为。在这些语句中,,称为(controlling expression)。这是一个标量类型的表达式,也就是说,它属于一个算术表达式或指针表达式。如果控制表达式的值不等于 0,循环条件为 true,反之,循环条件为 false。语句 break 和 continue 用于在一次循环还未执行完时,跳转出循环或返回到循环头部。barn怎么读

while 循环

只要控制表达式为 true,while 循环就会反复地执行语句:

while (表达式)语句

从语法上讲,循环体只有一条语句组成。如果需要执行多条语句时,可以使用语句块把它们组合在一起。例 1 展示了一个简单的 while 循环,从控制台读入多个浮点数,并把它们累加。例 1 展示了一个简单的 while 循环,从控制台读入多个浮点数,并把它们累加。【例1】一个 while 循环
/* 从键盘输入数字,然后输出它们的平均值
* -------------------------------------- */
include 
int main()
{
   double x = 0.0, sum = 0.0;
   int count = 0;
   printf( "\t--- Calculate Averages ---\n" );
   printf( "\nEnter some numbers:\n"
           "(Type a letter to end your input)\n" );
   while ( scanf( "%lf", &x ) == 1 )
   {
      sum += x;
      ++count;
   }
   if ( count == 0 )
     printf( "No input data!\n" );
   else
     printf( "The average of your numbers is %.2f\n", sum/count );
   return 0;
}
在例 1 中,只要用户输入一个小数,下面的控制表达式即为 true:
scanf( "%lf", &x ) == 1
然而,只要函数 scanf()无法将字符串输入转换成浮点数(例如,当用户键入字母 q 时),则 scanf()返回值 0(如果是遇到输入流的尾端或发生错误时,则返回值 -1,表示 EOF)。这时,循环条件为 false,程序将会跳出循环,继续执行循环体后面的 if 语句。

for 循环

和 while 一样,,但是它包含了更多的循环逻辑,如下所示:

for ([表达式1];[表达式2];[表达式3])语句

在一个典型的 for 循环中,在循环体顶部,下述三个动作需要执行:(1) 表达式 1:初始化在计算控制表达式之前,先计算一次表达式 1,以进行必要的初始化,后面不再计算它。(2) 表达式 2:控制表达式(3) 表达式 3:调节器调节器(例如计数器自增)在每轮循环结束后且表达式 2 计算前执行。即,在运行了调节器后,执行表达式 2,以进行判断。例 2 展示了使用一个 for 循环初始化数组内每个元素的过程。【例2】用 for 循环初始化数组
define ARR_LENGTH 1000
/* ... */
long arr[ARR_LENGTH];
int i;
for ( i = 0; i < ARR_LENGTH; ++i )
    arr[i] = 2*i;
这意味着 for 循环头部最短的形式是:
for ( ; ; )
如果没有控制表达式,则表示循环条件始终是 true,也就是说,这定义了一个。下面所示的 for 循环,既没有初始化表达式,也没有调节器表达式,它与 while(表达式)语句含义是等效的:
for ( ;表达式; )
事实上,每个 for 循环都可以被改写成 while 循环,反之亦然。例如,例 2 的 for 循环可完全等效为下面的 while 循环:
i = 0;                             // 初始化计数器
while ( i < ARR_LENGTH )     // 循环条件
{
    arr[i] = 2*i;
    ++i;                        // 递增计数器
}
在ANSI C99中,也可以使用声明来替代表达式1。在这种情况下,被声明变量的作用域被限制在 for 循环范围内。例如:
for ( int i = 0; i < 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 < j; ++i, --j )
    ch = str[i], str[i] = str[j], str[j] = ch;
}
借助于逗号运算符,可以在只允许出现一个表达式的地方,计算多个表达式。

do...while 循环

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()的一个版本,循环体仅为一条简单的语句,而不是一个语句块。因为在循环体执行之后才计算循环条件,所以字符串终止符&39;\0&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++] != &39;\0&39; );      // 如果刚刚复制的是&39;\0&39;,则结束循环
  return s1;
}

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/119322.html

评论

搜索