C语言----循环结构2(基础篇六)

好久么有写博客,近期项目基本完成,日常的学习也需要提上日程,尽管未来么有希望,但还是低着脑袋往前走吧.....不啰嗦进入主题。

  死循环

  ※软死机:CPU占用100%,双核占50%,机器明显变慢。出现软死机其实就是死循环。如while(1);就是个死循环语句,请不要用在歪门邪道处。

  ※硬死机:鼠标、键盘、显示器无响应。

  ※大部分的死循环是忘记改变循环变量的值造成的。

   进化

   程序1

    使用for语句 将1 到 10 输入到屏幕上。

//for 循环语句,输出在屏幕上 1 - 10
#include <stdio.h>
main()
{
    int i;
    for (i = 1;i<=10;i++)
    {
        printf("%d\t",i);
        
    }
    printf("\n");
}

 

  for语句

  格式:

    for(循环变量赋初值;条件表达式;循环变量增值)

    {

      若干语句

      …

    }

  for循环执行流程

    for(①n=0; ②⑤n<100; ④⑦n++)      //循环的运行步骤是按照上流程里面的数字依次进行的

    {  

      ③⑥循环体

    }

    相当于

    n=0;

    while(n<100)

    {  

      循环体

      n++;

    }

  continuebreak语句

    continue可结束本次循环,但不跳出循环,break语句可直接跳出本层循环。

    程序2 

      用continue1100的偶数之和

// 6_2_用 ccontinue 编写 1 - 100 的偶数之和
#include <stdio.h>

main()
{
    int i, n = 0;
    for(i = 0;i<=100;i++)
    {
        if (i%2 != 0)  //除不尽2就是奇数
        {
            continue; //直接跳出本次循环,进行下次循环 
        }
        else
        {
            n = n + i;
        }
    }
    printf("%d", n);
    printf("\n");
}

 

  break语句

//break  语句
#include <stdio.h>

main()
{
    int i;
    for (i = 1;i <= 10; i++)
    {
        printf("%d\n", i); //  1 2 3 4 5   结束
        if (i == 5) break;  // 如果i = 5, for循环全部结束
    }

}

  简单的标记法程序 

//6_2 标记法程序
#include <stdio.h>

main()
{
    int n, t;
    scanf_s("%d", &n);
    if (n % 2 == 0)
    {
        t = 0;
    }
    else
    {
        t = 1;
    }
    if (t = 0)
    {
        printf("偶数\n");
    }
    else
    {
        printf("奇数\n");
    }
}

 

  判断一个数是否为素数;

    假设这个数是n,要判断n是否素数,必须用n除以2n-1,有任意一个除断即不是素数,全部除不断就是素数。

    2n-1可以用一个for循环解决,在for循环中如果n除以任意一个数除断,就要立刻跳出循环。

    在循环中要使用一个变量作为标志,如果是用break跳出循环的,就将这个标志置0,如果是自然退出循环的,标志就置1。当循环结束后,查看标志为0就输出“不是素数”,为1就输出“是

      素数”。

    简单的思路:

      定义i,n,j三个变量

      输入n

      j1(默认是素数)

      循环i=2n-1

        如果n÷i可以除断

        把标志位j0

        跳出循环

      判断j的值

        如果是0就输出“不是素数”

        如果是1就输出“是素数”。

   代码如下:

//6_3_判断一个数是否为素数
#include <stdio.h>
main()
{
    int i, n, j = 1;
    printf("请输入一个数:");
    scanf_s("%d", &n);
    for (i = 2; i < n ; i++)
    {
        if(n%i == 0)
        {
            j = 0;
            break;
        }
    }

    if (j == 0)printf("此数不是素数\n");
    else printf("此数是素数\n");
}

  规律:

    一般循环中的breakcontinue语句都使用if语句判断后执行。

  for循环的变化

    for语句中两个分号之间可以没有表达式,比如:

    for(;i<100;i++){…}     是一种常用写法。

      如果写成for(;;);   就成了死循环。

    这表示,for循环中的所有表达式,它可以根据实际需要进行增减,有些人就喜欢放在循环体中判断循环条件,再用break来跳出循环。

 

  作业

    1、求

       

    代码:

    

///6_4:求西格马k,k=1到100 加上 西格马k平方,k=1到50 加上 西格马k分之一,k=1到10
#include <stdio.h>

main()
{
    float n = 0; //累加的值
    int k;    //计数器
    for (k = 1;k<=100;k++)
    {
        n = k + n;
    }

    for (k = 1; k <= 50; k++)
    {
        n = n + k *k;
    }
    for (k = 1; k <= 50; k++)
    {
        n = n + 1.0 / k;
    }
    printf("%f\n", n);
}

   五一将至,近期不断的更新自己的博客!若有疑问可在评论区留言。

posted @ 2020-04-21 23:07  httpcc  阅读(557)  评论(0编辑  收藏  举报