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);

你可能感兴趣的:(ios开发)