重复:while循环语句,do语句,for循环语句

目录

while循环语句

基本知识点:

while循环执行过程:

无限循环·while(1/true)

代码练习:

do语句

基本知识点:

do while循环执行过程:

代码练习:

for循环语句

基本知识点:

for循环执行过程:

for循环中++i 和 i++ 的区别

代码练习:

退出循环语句


注意:这些循环语句和选择语句都没有“;”!

while循环语句

基本知识点:

for语句和while语句可以等价替换, for循环要比while循环好,推荐for循环;

在C语言所有设置循环的方法中,while语句是最简单也是最基本的。

格式:while(表达式){语句,即循环体}

while循环执行过程:

(1)求解表达式;

(2)表达式为真,则执行循环体,后执行第(3)步。若表达式的值为0,则执行第(5)步。

(3) 再次判断表达式  

(4)转回第(2)步继续执行

(5)(5)循环结束,继续执行while语句下面的语句。

无限循环·while(1/true)

如果表达式的值始终非零,while语句无法终止。

但是有时候,C程序员会故意用非零常量作为控制表达式来构造无限循环。

当然,也可以使用break,goto,return等语句或者调用其他函数来终止。

for循环也可以建立无限循环:for(;;)…

代码练习:

#include <stdio.h>
//while循环·显示平方表

int main(void) 
{ 
    int i = 1,n;
    printf("This program prints a table of squares.\n");
    printf("Enter number of entries in table: \n");
    scanf("%d",&n);

    while (i <= n)
    {
       printf("%10d%10d\n",i, i*i);
       i++;
    }
    
    return 0; 

}  
/**
 * @brief简介
 * 
 *  留意程序是如何把输出整齐地排成两列的。
 *  窍门:使用类似于%10d这样的转换说明代替%d,
 *  并且利用了printf函数在指定宽度内输出右对齐的特性。
 * 
 * 
 */
This program prints a table of squares.
Enter number of entries in table: 
13
         1         1
         2         4
         3         9
         4        16
         5        25
         6        36
         7        49
         8        64
         9        81
        10       100
        11       121
        12       144
        13       169

do语句

基本知识点:

do语句本质上就是while语句。

格式:do语句 while(表达式);

do while循环执行过程:

(1)执行一次循环体

   (2)执行上述while循环执行过程

代码练习:

#include <stdio.h>
//do语句·计算整数的位数

int main(void) 
{ 
    int digits = 0,n;
   
    printf("Enter a nonnegative integer: \n");
    scanf("%d",&n);

    do
    {
        n /= 10;
        digits++;
    } while ( n>0 );
    
    printf("The number has %d digit(s).\n",digits);
    
    return 0; 

}  
/**
 * @brief简介
 *  nonnegative: adj. 正的,非负的
 *  digits:        n. 位数 / 数字 
 */
Enter a nonnegative integer: 
1234
The number has 4 digit(s).

for循环语句

基本知识点:

在for循环里面有一个变量i,在for循环外边也有一个变量i的时候,两个变量i不是一个,for语句声明的变量不可以在循环外访问(在循环外不可见)。

for循环的()里最多2个“;”

表达式是可以进行省略的:

    完整的:for(i = 10; i >0;i--){…}

省略初值:i= 10;for(; i >0;i--){…}

省略步长:for(i= 10; i >0;){…i--}//此时需要注意,第二个1表达式的值需要设置为可以最终变为假

省略步长:for(i= 10; i >0;){…i--}

for语句的惯用法:

        for( i = 0; i < n; i ++)   → [0,n-1]

        for( i = 0; i <= n; i ++)  → [0,n-1]

        for( i = n - 1;  i >=  0; i --)  → [n-1,0]

在C99中,可以直接在for循环里声明变量 for(int i = 0, j = 0; i < n; i++),只要变量类型一致,就可以省略。

稀奇古怪的用法:

1.虽然平时习惯三个表达式使用一个变量,但是,实际上关系不大。只要这个关系式值为真即可继续运行,可以三个关系式用三个变量

        例如:for(square = 1;  i <= n;  odd +=2){…}        //不推荐使用

2.空语句:

for( d = 2; d < n; d++)
{
    if( n % d == 0) break;
}

//等同于下面这个:
for( d = 2; d < n && n % d != 0; d++)
    ;

//注意” ;"的位置

for循环执行过程:

for(表达式1;表达式2;表达式3)语句;
(1)先求解表达式1。
(2)求解表达式2,若其值为真(值为非0),则先执行for语句中指定的内嵌语句,后执行
 第(3)步。若其值为假(值为0),则结束循环,转到第(5)步。                                                                      (3)求解表达式3。                                                                                                                                          (4)转回第(2)步继续执行                                                                                                                        (5)循环结束,执行for语句下面的语句。

for循环中++i 和 i++ 的区别

在for循环里有一个i++,但是偶尔还能看见++i。

其实, ++i 和 i++的结果是一样的,因为for循环都是最后执行++i或者i++语句,但是性能是不同的。在有大量数据的时候推荐使用++i,在大量数据的时候++i的性能要比i++的性能好:

i++由于是在使用当前值之后再+1,所以需要一个临时的变量来转存。而++i则是在直接+1,省去了对内存的操作的环节。

代码练习:

#include <stdio.h>
#include<stdlib.h>
//for循环

int main(void) 
{ 
    int i,total;

    for ( i = 1, total =0; i <= 64; i++)
    {
        total += i;
    }
    
    printf("%d,%d\n",total,i);
   
    return 0; 

}  
/**
 * @brief
 * 为什么设置的是 i <= 64,最后输出的i是等于65呢?
 * 无论是i++还是++i结果都是65
 * 
 * i = 1,满足 i <= 64的条件,进行循环,执行totai += i;结束后进行i++,然后 i =2。
 * …
 * i = 64,满足 i <= 64的条件,进行循环,执行totai += i;结束后进行i++,然后 i =65。
 * i = 65,不满足 i <= 64的条件,跳出循环。则此时i = 65.
 * 
 */

退出循环语句

        break用来跳出循环并把程序控制传递到循环后的下一条语句,即循环完全结束。对于退出点在循环体的中间而不是循环体之前或者之后的情况,break语句特别有用。可以在任何循环语句和switch语句中使用。但是放在return 语句后面无效。

        continue语句用来跳出本次循环的剩余部分,即本次循环结束,会再次开始下一轮循环。只可以在循环体中使用。

        goto语句则可以跳到函数内的任何语句上。(很少使用)                                                                                

格式:

goto 标识符;

标识符:语句

(  标识符:语句   可以放在任何位置,但必须和goto语句在同一函数内)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wmpreturn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值