zoukankan      html  css  js  c++  java
  • iOS开发之c语言基础Lesson-03 循环结构 上课笔记与习题作业

    //***************Lesson03- Cycle循环,课堂笔记************

      //for循环:initialization:循环变量初始值,只会执行一次;condition:循环条件, 满足条件才会执行; increment:循环变量增量;statements:循环体,反复要执行的操作.
        //循环次数: (循环条件 - 初始值) / 增量
    
    
        //12345取每一位,  取各位:12345%10
        //取最高位:12345/10000
        // 例如:取4, 12345%100/10,, 取3, 12345%1000/100
        //    for (int i = 1; i <= 100;  i++) {
        //        printf("%d
    ",i);
        //        if( i % 2 ==0)
        //            printf("偶数:%d
    ", i);
        //
        //        else
        //            printf("奇数:%d
    ", i);
        //
        //    }
        //
        //    //输出个位是7的数
        //    for (int i = 1; i < 100; i++) {
        //        if(i % 10 ==7)
        //        {
        //            printf("%d
    ", i);
        //        }
        //    }
        //    //输出十位是7的数
        //    for (int i = 1; i < 100; i++) {
        //        if(i/10 == 7)
        //            printf("[%d] ",i);
        //    }
        //
        //    //输出不是7的倍数,也不包含7
        //
        //    for (int i = 1; i <= 100; i++) {
        //        if(i % 7 != 0 && i % 10 != 7 && i / 10 != 7)
        //            printf("[%d] ",i);
        //    }
    
        //    //求1-100的和,
        //    int sum = 0, sum2 = 0, sum7 = 0;
        //    for (int i = 1; i <= 100; i++) {
        //        sum = sum + i;
        //
        //    }
        //    printf("
     1到100的和sum = %d ", sum);
        //    sum = 0;
        //    //1-100的偶数和  //1- 100的奇数和,
        //    for (int i = 1; i <= 100; i++) {
        //        if(i % 2 ==0)
        //            sum = sum + i;
        //        else
        //            sum2 = sum2 + i;
        //    }
        //    printf("
     偶数和sum = %d ,奇数和sum = %d", sum, sum2);
        //
        //    //1-100的7的倍数和
        //    for (int i = 1; i <= 100; i++) {
        //        if(i % 7 ==0)
        //            sum7 = sum7 + i;
        //    }
        //    printf("
     7的倍数和sum = %d ", sum7);
    
    
        //for循环嵌套, 外层循环控制输出的行数, 内层循环控制每一行输出端的内容
        //    for(int i = 1 ;i <= 100; i++)
        //    {
        //        for(int j = 1;j < 4; j++)
        //        {
        //            printf("%d ",j);
        //        }
        //        printf("
    ");
        //    }
        //1
        //12
        //123
        //    for(int i = 1 ;i <= 10; i++)
        //    {
        //        for(int j = 1;j < i; j++)
        //        {
        //            printf("%d ",j);
        //        }
        //        printf("
    ");
        //    }
    
        //123
        //12
        //1
        //
        //    for(int i = 0 ;i < 3; i++)
        //    {
        //
        //        for(int j = 1;j <= 3 - i; j++)
        //        {
        //            printf("%d ",j);
        //        }
        //        printf("
    ");
        //    }
        // 321
        // 32
        // 3
        //        for(int i = 0 ;i < 3; i++)
        //        {
        //
        //            for(int j = 3;j >= i + 1; j--)
        //            {
        //                printf("%d ",j);
        //            }
        //            printf("
    ");
        //        }
        //
        //3
        //32
        //321
        //    for(int i = 0 ;i < 3; i++)
        //    {
        //
        //        for(int j = 3;j >= 3-i; j--)
        //        {
        //            printf("%d ",j);
        //        }
        //        printf("
    ");
        //    }
        //    //   *
        //    //  * *
        //    // * * *
        //
        //        for(int i = 1; i <= 3; i++)
        //        {
        //            for(int j=1; j<=3-i; j++)
        //                printf(" ");
        //            for(int k=1;k<=i;k++){
        //                printf("* ");
        //
        //            }
        //            printf("
    ");
        //        }
        //
        //   *
        //  * *
        // * * *
        //  * *
        //   *
        //    int n = 11;
        //    for(int i = 1; i <= n; i++)
        //    {
        //
        //        if(i>n/2+1)
        //        {
        //            for(int j = 1; j <= i-(n/2+1); j++)
        //                printf(" ");
        //            //for(int k = (n/2+1);k > i-(n/2+1);k--) //方1
        //            for(int k = 1;k <= n - i + 1;k++)        //方2
        //                printf("* ");
        //
        //        }
        //        else
        //        {
        //            for(int j = 1; j <= (n/2+1)-i; j++)
        //                printf(" ");
        //            for(int k = 1;k <= i;k++)
        //                printf("* ");
        //
        //        }
        //        printf("
    ");
        //    }
        //
        //
        //输入一个整数,判断是不是质数, 只能被1以及本身整除的数
    
        //    int  num = 0;
        //    printf("Enter num=");
        //    scanf("%d",&num);
        //
        //    bool isTrue = YES;
        //    for (int i = 2; i < num; i++) {
        //        if(num % i == 0)
        //        {
        //            isTrue = NO;
        //            //printf("该数不是质数");
        //            break; //结束当前循环(距离break,最近的本层循环)
        //        }
        //    }
        //    if(isTrue)
        //    {
        //        printf("是质数");
        //    }else{
        //        printf("不是质数");
        //    }
    
        //关键字continue  作用:结束本次循环,继续下一次循环,遇到continue之后,本次循环以后的代码不会被执行
        //求1 - 100 之间所有偶数的和
    
        //    int sum = 0;
        //    for (int i = 1; i <= 100; i++) {
        //        if (i % 2 != 0) {
        //            continue;
        //        }
        //        sum += i;
        //    }
        //    printf("%d ", sum);
    
    
        //while 循环
        //15. 输出1 - 100之间7的倍数
    
        //    int n = 1;  //循环变量初始化
        //    while (n <= 100) {
        //        if(n % 7 == 0)
        //            printf("%d ", n);
        //        n++;
        //        
        //    }
    
        //16. 计算1-100之间的数的和, 最终和大于25时,加到那一个数字
    
        //    int sum = 0;
        //    int i = 1;
        //    while (sum <= 25 && i <= 100) {
        //        sum += i;
        //        i++;
        //    }
        //    printf("加到%d ",i - 1);
    
    
        //17 do...while
        //输出1-100之间十位为7的数
    
        //    int i = 1;
        //
        //    do {
        //        if(i / 10 == 7){
        //            printf("%d ", i);
        //        }
        //        i++;
        //    } while (i <= 100);
        //
        /*
    
         总结: 
         一,for循环和while以及do...循环的区别.
         for循环多用于明确循环次数的场景;
         while以及do...while多用于不明确循环次数的场景,
         for循环可以转化成while, do ..while 循环, 但是while以及do...while循环不一定能转换成for循环,
    
         二.while, do..while的区别.
         while循环是先判断循环条件,条件不成立,不会执行循环体,
         do...while循环是先执行一次循环体, 在判断循环条件,以及循环条件不满足,循环体也会执行一次.
    
         三, break ,continue的区别
         break用与结束本层循环,当前循环终止,
         conninue用与结束本次循环, 继续下一次循环, 循环不终止
    
         四,循环的四部分:
         循环变量初始化1,循环条件2,循环变量增量3,循环体4,
         执行流程:
         1--2---4---3---2----4--3----------------2
    
         */
    
        //18, 打印99乘法表
    
        //    for (int i = 1; i < 10; i++) {
        //
        //        for (int j = 1; j <= i; j++) {
        //            printf("[%d * %d = %d] ", j, i, i*j);
        //        }
        //        printf("
    
    ");
        //    }
    
        //随机数
        //0~9
        int ran = 0;
        ran = arc4random() % 10;
        printf("ran = %d
    ", ran);
    
        //[0, 16]
        ran = arc4random() % 17;
        printf("ran = %d
    ", ran);
    
        //[10, 20] [a, b]  arc4random() % (b-a+1) + a
        ran = arc4random() % 11 + 10;
        printf("ran = %d
    ", ran);

    //**********************Lesson-03 作业************************
    //

        //    1. (*)有 10 亿元钱每天花一半,可以花多少天?
        //    int money = 1000000000, day = 0;
        //    while (money > 0) {
        //        money /= 2;
        //        day++;
        //    }
        //    printf("%d天", day);
        //    
    
        //    2. (**)随机产生 20 个[10 , 100]的正整数,输出这些数以及他们中的最大数
        // 产生随机数:[a,b]    arc4random() % (b - a + 1) + a  ,  arc4randow() % 100
        //    int i = 0, num = 0, max = 0;
        //    for(i = 1; i <= 20; i++){
        //        num= arc4random() % (100 - 10 + 1) + 10;
        //        printf("%d  ", num);
        //        if(num > max)
        //            max = num;
        //        //max = num  > max ? num : max;
        //    }
        //    printf("
     最大:%d", max);
    
        //    3. (**)编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”
        ////    是一个 各个位立方之和等于该整数的三位数。
        //    int i = 0;
        //    int num = 0;
        //    int hur = 0, decade = 0, unit = 0;
        //    for(i = 100; i <= 999; i++ )
        //    {
        //        hur = i / 100;
        //        decade = i % 100 / 10;
        //        unit = i % 10;
        //        if(i == pow(hur, 3) + pow(decade, 3) + pow(unit, 3))     { //pow()求几次方函数
        //            num++;
        //            printf("%d
    ", i);
        //        }
        //    }
        //    printf("个数%d", num);
    
        //    4.(**)已知 abc+cba = 1333,其中 a,b,c 均为一位数,编程求出满足条件的 a,b,c 所有组合
        //    int a = 0, b = 0, c = 0;
        //    for(a = 0; a <= 9;a++)
        //    {
        //        for(b = 0; b <= 9;b++)
        //        {
        //            for(c = 0; c <= 9;c++)
        //            {
        //                if(a * 101 + b * 10 * 2 + 101 * c == 1333)
        //                {
        //                    printf("a = %d, b = %d, c = %d
    ", a, b, c);
        //                }
        //            }
        //        }
        //    }
        //
        //    5. (***)输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)
        //辗转相除法
            int m = 0, n = 0;
            printf("Enter m,n:");
            scanf("%d%d", &m, &n);
            int multiply = m * n;
            int r = m % n;
            while(r!=0)
            {
                r = n%m;
                n = m;
                m = r;
            }
            printf("最大公约数是:%d", n);
            printf("最小公倍数是:%d", multiply/n);
        //普通方法  ,从所有的约数中一个一个的进行匹配.
        //    int num1 = 0, num2 =0;
        //    printf("请输入两个数:");
        //    scanf("%d%d", &num1, &num2);
        //    for (int gcd = num1 < num2 ? num1 : num2; gcd >= 1; gcd--) {
        //        if (num1 % gcd == 0 && num2 % gcd == 0) {
        //            printf("最大公约数是:%d  最小公倍数是:%d
    ", gcd, (num1 * num2) / gcd );
        //            break;   //一旦找到, 就结束,不在循环下去
        //        }
        //    }
        //    6. 求 n 个随机数里的最小值, 10~30
        //        int n = 0, i = 0, num = 0, small = 31;
        //        printf("请输入个数n:");
        //        scanf("%d",&n);
        //        for (i= 1; i <= n; i++) {
        //            num=arc4random() % 21 + 10;
        //            printf("%d ",num);
        //            if(num < small)
        //                small = num;
        //        }
        //        printf("最小:%d",small);
  • 相关阅读:
    C#入门经典中的SelectionFont属性为null
    C#键盘事件处理
    C# TextBox中的Validating与Validated事件[转]
    System.Diagnostics.Process 执行.EXE
    USB HID usage table
    ADPCM编码和解码
    Load$$ execution region symbols
    Astyle编程语言格式化工具的说明
    RLE行程长度编码压缩算法
    Django文档阅读之执行原始SQL查询
  • 原文地址:https://www.cnblogs.com/zhaoashen/p/4370513.html
Copyright © 2011-2022 走看看