for循环、break和continue、二重循环

1.循环语句可以反复多次执行同一组语句

2.for关键字可以用来编写循环

可以在for循环里让一个变量依次代表一组数字,然后使用同一组语句处理这个变量代表的每一个数字。

这个变量叫做循环变量。

按照统一的规律从第一个数字开始,把每个数字都计算处理并让循环变量代表它

以下格式用来描述循环变量的变化过程。

(把开始的数字赋值给循环变量;用逻辑表达式描述循环变量和结束数字之间的关系;根据前一个数字计算后一个数字的规则)

例子:

如果一个问题的解决过程中包含一组数字的变化过程,每个数字的处理方法又类似就可以解决这个问题。

练习:

#include <stdio.h>
int main() {

    int j = 9;
    for(int i=1;i<6;i++)
    {
        printf("%d x %d = %d\n",i,j,i*j);
        j--;
    }
    
    return 0;
}

练习:

#include <stdio.h>
int main() {
    int num1=0,num2=0,temp=0,ans=0;
    printf("请输入两个整数:");
    scanf("%d%d",&num1,&num2);
    if(num1>num2){
       temp = num1;
       num1 = num2;
       num2 = temp;
    }
    for(int num=num1;num<num2;num++)
    {
        if(num & 1)
        {
            ans += num;
        }
    }
    printf("这两个数之间的奇数和为:%d",ans);
    return 0;
}

假设有如下的for循环

for(1;2;3) {

4;

}

它按照以下方式分组执行:

[1,2] [4,3,2] [4,3,2]......[4,3,2]

第一组和所有其它组都不同

正常情况下for循环一定在两组之间结束,如果某一组最后编号为2的逻辑表达式结果为真就启动下一组,否则结束循环。

如果for循环正常结束则循环结束后,循环变量落在指定数字范围之外。

for循环有可能不执行大阔号里面的语句。

for循环小括号里每条语句都可以省略

for循环小括号里中间的逻辑表达式,如果省略就表示逻辑表达式永远为真,这种循环不能正常结束,它们叫做死循环。

例子:会无限循环下去,直到计算机没有内存

 for循环小括号里前面和后面的部分,可以是用逗号连接的多条语句。

例子:

 

 C99规范允许在for循环的小括号里临时声明循环变量。这种循环变量只能在循环里使用,循环结束后就不能使用了。

例子: 

 

练习:

 

#include <stdio.h>
int main() {
    int rabbit=0;
    for(rabbit=0;rabbit<=40;rabbit++)
        if(4*rabbit+2*(40-rabbit)==100)
        {
            printf("兔子有%d只,鸡有%d只",rabbit,40-rabbit);
            break;
        }
    return 0;
}

3.可以在循环里使用break;语句立即结束循环的执行。

一旦执行了break;语句则循环里的一切语句都不再执行,包括循环变量也不再变化。

如果循环采用break;语句结束,则结束后循环变量一定在指定数字范围之内。

如果编写循环的时候不知道循环要重复执行多少次,就可以编写一个死循环,然后用break;语句结束它。

4.可以在循环大括号里使用continue;语句,直接跳到大括号的末尾,中间的所有语句这次循环都不执行。

例子:

 输出结果:1 11 2 12 3 4 14 15

5.无法预知的数字叫随机数

rand标准函数可以用来获得随机数。 

为了使用这个标准函数需要包含stdlib.h头文件

 例子:

 输出结果:rand生成的随机数只能使用一次。

6.srand标准函数用来设置随机数种子。

这个函数需要一个整数作为种子使用。不同的种子得到的随机数不同。

为了使用这个标准函数也需要包含stdlib.h头文件

任何程序只需要设置一次随机数种子。

例子:

输出结果:每次运行的随机数还是一样

 

 7.time标准可以用来获得当前的时间。

这个函数用一个整数表示获得的时间,同一秒之内获得的代表时间的整数不会变化。

为了使用这个标准函数需要包含time.h头文件

 

 输出结果:每次运行程序出现的随机数都不一样。

 练习:

利用死循环来解决

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main() {
    srand(time(0));
    int num=0,num1=rand()%100;//rand每次生成的数都很大,直接除100求于余数就可以出现0~99之间的数,如果是0~100则是rand()%100+1;
    for(;;){
         printf("请输入一个0到99的数字:");
         scanf("%d",&num);
        
        if(num > num1)
        {
            printf("猜大了\n");
        }
        else if(num < num1)
        {
            printf("猜小了\n");
        }
        else if(num = num1)
        {
            printf("猜对了\n");
            break;
        }
    }

    return 0;
}

 分支和循环都是流程控制语句,它们都可以让程序里的语句不再从上到下顺序执行。

8.goto语句也是流程控制语句

 它可以把程序中任何一条语句指定成下一条语句(尽量不要使用goto语句)

例子:

 

输出结果:

 

9.如果一个问题的解决问题中包含多组数字的变化过程,并且它们的变化过程互相关联就可以采用多重循环解决

多重循环里外部循环的循环变量负责代表变化慢的数字,内部循环的循环变量负责变化快的数字。

练习:

#include <stdio.h>
int main() {
    int num = 0, num1 = 0;
    for(num = 0;num <= 2;num++ ){
        for(num1 = 0;num1 <= 5;num1++){
            if(5*num + 2*num1 <=10)
            {
                printf("5元钱有%d张,2元钱有%d张,1元钱有%d\n",num,num1,10-5*num-2*num1);
            }
        }
    }
    return 0;
}

10.while关键字也可以用来编写循环

不容易用for关键字实现的循环,就可以考虑while关键字实现。

while循环格式如下:

while(逻辑表达式){

反复执行的语句

}

这个结构表示反复执行大括号里面的语句,直到逻辑表达式的结果为假。

例子:

输出结果:0 1 2 3 4 5

 如果while循环的逻辑表达式永远为真,就成为了死循环。

while循环里也可以使用break;和continue;语句

例子:用while循环实现猜数字

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main() {
    srand(time(0));
    int num=0,num1=rand()%100;//rand每次生成的数都很大,直接除100求于余数就可以出现0~99之间的数,如果是0~100则是rand()%100+1;
    while(num != num1) {
        printf("请输入一个0到99的数字:");
        scanf("%d",&num);

        if(num > num1)
        {
            printf("猜大了\n");
        }
        else if(num < num1)
        {
            printf("猜小了\n");
        }
        else if(num = num1)
        {
            printf("猜对了\n");
            break;
        }
    }

    return 0;
}

while循环会交替执行逻辑表达式的计算和大括号里面的语句。

while循环第一步首先计算逻辑表达式的结果,如果这个时候逻辑表达式的结果为假就直接结束。

while循环有可能不执行大括号里面的语句。

11.do...while格式也可以用来编写循环

do...while循环格式如下

do{

反复执行的语句

}while(逻辑表达式);

do...while循环小括号后面必须用分号结束。

do...while循环也是交替执行逻辑表达式的计算和大括号里面的语句。

do...while循环首先执行大括号里面的语句。

do...while循环可以保证大括号里面的内容至少执行一次。

例子:

 练习:

#include <stdio.h>
int main(){
    int max=0,min=0,temp=0;
    printf("请输入两个数字:");
    scanf("%d%d",&max,&min);

    while(max % min){
        temp = max % min;
        max = min;
        min = temp;
    }
    printf("最大公约数是%d\n",min);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44954230/article/details/127248578