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\n",i);
    //        if( i % 2 ==0)
    //            printf("偶数:%d\n", i);
    //
    //        else
    //            printf("奇数:%d\n", i);
    //
    //    }
    //
    //    //输出个位是7的数
    //    for (int i = 1; i < 100; i++) {
    //        if(i % 10 ==7)
    //        {
    //            printf("%d\n", 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("\n 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("\n 偶数和sum = %d ,奇数和sum = %d", sum, sum2);
    //
    //    //1-100的7的倍数和
    //    for (int i = 1; i <= 100; i++) {
    //        if(i % 7 ==0)
    //            sum7 = sum7 + i;
    //    }
    //    printf("\n 7的倍数和sum = %d ", sum7);


    //for循环嵌套, 外层循环控制输出的行数, 内层循环控制每一行输出端的内容
    //    for(int i = 1 ;i <= 100; i++)
    //    {
    //        for(int j = 1;j < 4; j++)
    //        {
    //            printf("%d ",j);
    //        }
    //        printf("\n");
    //    }
    //1
    //12
    //123
    //    for(int i = 1 ;i <= 10; i++)
    //    {
    //        for(int j = 1;j < i; j++)
    //        {
    //            printf("%d ",j);
    //        }
    //        printf("\n");
    //    }

    //123
    //12
    //1
    //
    //    for(int i = 0 ;i < 3; i++)
    //    {
    //
    //        for(int j = 1;j <= 3 - i; j++)
    //        {
    //            printf("%d ",j);
    //        }
    //        printf("\n");
    //    }
    // 321
    // 32
    // 3
    //        for(int i = 0 ;i < 3; i++)
    //        {
    //
    //            for(int j = 3;j >= i + 1; j--)
    //            {
    //                printf("%d ",j);
    //            }
    //            printf("\n");
    //        }
    //
    //3
    //32
    //321
    //    for(int i = 0 ;i < 3; i++)
    //    {
    //
    //        for(int j = 3;j >= 3-i; j--)
    //        {
    //            printf("%d ",j);
    //        }
    //        printf("\n");
    //    }
    //    //   *
    //    //  * *
    //    // * * *
    //
    //        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("\n");
    //        }
    //
    //   *
    //  * *
    // * * *
    //  * *
    //   *
    //    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("\n");
    //    }
    //
    //
    //输入一个整数,判断是不是质数, 只能被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("\n\n");
    //    }

    //随机数
    //0~9
    int ran = 0;
    ran = arc4random() % 10;
    printf("ran = %d\n", ran);

    //[0, 16]
    ran = arc4random() % 17;
    printf("ran = %d\n", ran);

    //[10, 20] [a, b]  arc4random() % (b-a+1) + a
    ran = arc4random() % 11 + 10;
    printf("ran = %d\n", 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("\n 最大:%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\n", 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\n", 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\n", 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);
posted @ 2015-03-18 17:53  我死在了编程的路上  阅读(157)  评论(0编辑  收藏  举报