zoukankan      html  css  js  c++  java
  • C语言----循环的嵌套(进阶篇二十)

     

      循环嵌套和break语句

        while、do while和for语句都可以形成嵌套,在这里我们着重分析for语句的嵌套。

        程序1

          简单的for语句嵌套

           

    // 20-1简单for语句嵌套.c
    
    
    #include <stdio.h>
    
    //main()
    //{
    //    int i, j,k;
    //    k = 0;
    //    for (i = 0; i < 3; i++)
    //    {
    //        for (j = 0; j < 3; j++)
    //        {
    //            printf("%d
    ", ++k);
    //        }
    //    }    
    //}
    
    //二维数组
    main()
    {
        int i, j, k;
        k = 0;
        for (i = 0;i < 3;i++)
        {
            for (j = 0;j < 3;j++)
            {
                printf("%d", j);
            }
            printf("
    ");
        }
    }

        程序2 

          打印九九乘法表

    // 20-2打印九九乘法表.c
    
    #include <stdio.h>
    main()
    {
        int num1, num2; //简易九九乘法表
    
        for (num1 = 1;num1<10;num1++)
        {
            for (num2 = 1; num2 < 10; num2++)
            {
                printf("%d*%d=%d	", num1, num2, num1*num2);
                if (num1 == num2) break;
            }
            printf("
    ");
        }
        printf("
    ");
    }

          注意:break语句不是跳出if中的花括号,而是直接跳出本层循环

        程序3 

          小游戏:打飞碟

    // 20-3综合程序打飞碟.c
    //
    
    #include <stdio.h>
    #include <Windows.h>
    
    void gotoxy(int x, int y);  //获取坐标函数
    
    
    main()
    {
        int x = 0, y = 0, x1 = 37, y1 = 22, x2 = 40, y2 = 18; //飞碟坐标  炮台的坐标 炮弹坐标
        int c = 0;    //获取键盘值
        while (c != '
    ')   //没有 按回车键
        {
            if (_kbhit())        //检测键盘按键
                c = _getch();    //获取按键字符
            system("cls");        //清楚屏幕
    
            //飞碟成像
            x++;
            if (x > 70) x = 0;
            gotoxy(x, y);
            printf("@@@@@@@@");
    
            //炮台成像
            gotoxy(x1,y1);
            printf("_^_");
    
    
            if (c == ' ')    //如果键盘符是 空格
            {
                //炮弹成像
                y2--;
                if (y2 < 0)
                {
                    c = '';    //键盘按钮复位
                    y2 = 18;    //炮弹复位
                }
                gotoxy(x2,y2);
                printf("^
    					^
    					^
    					");
    
                //检测打中目标
    
                if (x<x2 &&     x+10>x2 && y-2<y2 && y+2>y2)
                {
                    printf("恭喜过关
    ");
                    break;
                }
    
            }
    
            Sleep(100);  //延时
    
        }
    
    }
    
    
    void gotoxy(int x, int y) //获取坐标函数
    {
        HANDLE houtput;
        COORD loc;
    
        loc.X = x; loc.Y = y;
    
        houtput = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleCursorPosition(houtput, loc);
    }

      

        求e的值。

             

            (1)用for循环,计算前50项

            (2)用while循环,要求直至最后一项的值小于10-4

    //20_1:求e的值,e=1+1/1!+1/2!+1/3!...+1/n!
    //(1)用for循环,计算前50项*/
    
    #include <stdio.h>
    main()
    {
        long i;                                //计数器
    
        double factorial = 1.0, sum = 1.0;  //阶乘    总和
    
        //循环五十次
        for (i = 1; i <= 50; i++)        
        {
            factorial *= i;   //计算阶乘
            sum = sum + 1 / factorial;  //总和
        }
        printf("%lf
    ", sum);
    }
    //(2)用while循环,要求直至最后一项的值小于10的-4次方  
    
    #include <stdio.h>
    
    main()
    {
        long i = 1;                                // i 做乘数,不能为0
    
        double factorial = 1.0, sum = 1.0;  //阶乘    总和
    
        while (1/ factorial > 1e-4)    //通过比较判断是否循环
        {
            //printf("%lf
    ", (1 / factorial));  
    
            factorial *= i;                    //阶乘
            sum = sum + 1 / factorial;        //
            i++;
    
            //printf("%ld
    ", i);
        }
        printf("%lf
    ", sum);
    }

        

        给一个不多于5位的正整数,要求:

          (1)求出它是几位数;

          (2)分别打印出每一位数字;

          (3)按逆序打印出各位数字,例如原数为487,应输出784。

    //(1)求出它是几位数;
    
    #include <stdio.h>
    
    main()
    {
        //求出是几位数
        int a, i, j;    //输入的值     几位数    增值中间使用
        scanf_s("%d", &a);        //输入值
        j = 1;
    
        for ( i = 0; i < 5; i++)   //循环五次
        {
            
            if (a/j == 0)break; //利用整数取值 如: 366 / 1 = 366;   366 / 10 = 36;   36 / 100 = 0; i = 3
            j *= 10;             
        }
        printf("%d是%d位数", a, i);
    }
    //(2)分别打印出每一位数字;
    #include <stdio.h>
    
    main()
    {
        //求出是几位数
        int a, i, j, n[5] = {0};    //输入的值     几位数    增值中间使用    保存值到数组
        scanf_s("%d", &a);        //输入值
        j = 10;
    
        for (i = 0; i < 5; i++)   //循环五次
        {
            n[i] = a % j;   //将整数的余数取出来
            a /= j;            //删除取出来的数
            if (a == 0)break;  // a = 0 时,数据已取完,直接跳出循环。
        }
        
        for (i = 4; i >= 0; i--)  //数组中存的是:比如输入的是 456  n[5] = {6,5,4,0,0}
            if (n[i] != 0)printf("%d", n[i]);    //因此要从大到小循环
    }
    //(3)按逆序打印出各位数字,例如原数为487,应输出784。
    #include <stdio.h>
    
    main()
    {
        //求出是几位数
        int a, i, j, n[5] = { 0 };    //输入的值     几位数    增值中间使用    保存值到数组
        scanf_s("%d", &a);        //输入值
        j = 10;
    
        for (i = 0; i < 5; i++)   //循环五次
        {
            n[i] = a % j;   //将整数的余数取出来
            a /= j;            //删除取出来的数
            if (a == 0)break;  // a = 0 时,数据已取完,直接跳出循环。
        }
    
        for (i = 0; i < 5; i++)  //数组中存的是:比如输入的是 456,  n[5] = {6,5,4,0,0}
            if (n[i] != 0)printf("%d", n[i]);    //因此直接打印即可
    }
  • 相关阅读:
    贷款计算公式
    P2P行业专业术语(最全)
    p2p投资理财入门篇(新手必备)
    2015年p2p网络借贷平台的发展现状
    MyEclipse中SVN的常见的使用方法
    linux下打开、关闭tomcat,实时查看tomcat运行日志
    Spring 向页面传值以及接受页面传过来的参数的方式
    Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例
    PowerDesigner概述(系统分析与建模)以及如何用PowerDesigner快速的创建出这个数据库
    MySQL 8.x 函数和操作符,官方网址:https://dev.mysql.com/doc/refman/8.0/en/functions.html
  • 原文地址:https://www.cnblogs.com/httpcc/p/15459658.html
Copyright © 2011-2022 走看看