ioS开发之c语言基础-循环结构

//

//  main.m

//  C3-循环结构

//

//  Created by dllo on 15/10/7.

//  Copyright (c) 2015 dllo. All rights reserved.

//


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {

    //while 循环

    

//    while (循环条件) {

//        循环体

//        循环增量

//    }

//    int a = 0;

//    //循环条件- a< 3

//    while (a < 3 ) {

//        //循环体-要循环做的事情

//    printf("做俯卧撑 ");

//        // 循环增量不要忘记!!!

//    a++;

//    }

    //从键盘输入一个数n,打印n"做俯卧撑"

//    int n = 0 ;

//    scanf("%d",&n);

//    while ( n > 0) {

//    printf("做俯卧撑 ");

//    n--;

//    }

//

//

    // while循环打印1-100

//    int i = 1;

//    while (i <= 100) {

//    printf("%d ",i);

//    i++;

//    }

    //找出1-100之间7的倍数,个数为7的数,十位为7的数,不是7的倍数并且不包含7的数

//     int a = 1;

//     while (a < 101) {

    

//     if  ( 0 == a % 7 ) {

//     printf("%d ",a );

//        

//     }

//     a++; //7的倍数

//

//     if  ( 7 == a % 10) {

//     printf("%d ",a);

//             // 个位数为7

//     }

//     if  ( 7 == a / 10 ) {

//     printf("%d ",a);

//             //十位数为7

//             

       //  }

//     if  ((7 != a / 10 ) && ( 7 != a % 10 ) &&  7 != a % 7 ) {

//     printf("%d ",a);

//

//     }

//     a--;

//    随机数

    //arc4random() % (b - a + 1 ) + a ;

    //功能;随机产生一个a b 范围内的整数

//    int ret = arc4random() % (30 -10 + 1) + 10;

//    printf("%d",ret);


    //用户从控制台输入n,while打印n个随机数,范围是1030

//    int n = 0;

//    scanf("%d",&n );

//    while (n >0) {

//    int ret = arc4random() % (30 -10 + 1) + 10;

//    printf("%d  ",ret);

//    n--;

//

//    }

//    

//    输出较大随机数

//    int n = 0;

//    

//    int max = 0 ;

//    //int min = 70;

//    scanf("%d",&n);

//    while(n > 0 ){

//    int ret = arc4random() % (70 - 30 + 1) + 30 ;

//        

//    printf("%d ",ret);

//        

//        //判断大小 将较大的存入变量

//     if(ret > max ){

//     max = ret ;

//     }

//        

//        

//     n--;

//     }

//    printf("%d ",max );

//    

    // break

    

//    while(1){

//    // 终端,退出循环

//        break;

//        printf( "循环 ");

//      

//    }

//    int  a =  0 ;

//    while (a < 3){

//        printf("循环 ");

//        //continue;

//        // 不会往下走,提前进入下一次循环

//        a++;

//        break;

//    }

   

//    for ( 循环条件的定义及初始化;循环条件;循环增量){

//    循环体

//    }

    //找出1-100之间7的倍数,个数为7的数,十位为7的数,不是7的倍数并且不包含7的数

   

   // for (int i = 1; i < 100 ; i ++) {

       // printf("做俯卧撑 ");

//        if ( 0 == i % 7) {

//            printf("%d ",i);

//        }

//        if ( 7 == i % 10) {

//            printf("%d ",i);

//        }

//        if ( 7 == i / 10) {

//            printf("%d ",i);

//         }

        //if (( 7 != i / 10) && ( 7 != i % 10) && ( 0 != i % 7)){

           // printf("%d ",i);

       // }

 //   }

      // 1

      // 1 2

      // 1 2 3 图形的打印

    //第一步

      //1 2 3

//    for (int i = 1; i < 4 ; i++) {

//        printf("%d",i );

    //第二步

    // 1 2 3

    // 1 2 3

    // 1 2 3

    //(1)=(2)

//      for (int i = 1; i < 4 ; i++) {

//      printf("%d ",i );

//      }

//      printf(" ");

//      for (int i = 1; i < 4 ; i++) {

//      printf("%d ",i );

//      }

//      printf(" ");

//      for (int i = 1; i < 4 ; i++) {

//      printf("%d  ",i );

//      }

//      printf(" ");

//    (2)=(1)

//      里面的for循环就是i 的那个循环控制的的是每行输出多少个数字,外面的for循环控制的是输出多少行. 先看最后一行,上面的行有残缺,或者按照一定形式输出,将里面的for循环用第一个j表示就可以,就可已按照      一定图案输出

//    for (int j = 1 ; j  < 5; j ++) {

//    for (int i = 1; i <  5; i++) {

//    printf("*" );

//        

//    }

//    printf(" ");

//    }

//

//

//    }

    

    // 99 乘法表

//    for (int j = 1; j < 10; j ++) {

//       

//    for (int i = 1 ; i < j + 1 ; i ++) {

//         printf("%d*%d=%2d ",i,j,i * j); //2是用来对齐用的

//    }

//    printf(" ");

//    }

   // 打印3个数字的组合可能

   

//    for (int a = 1  ; a < 10; a++) {

//        for (int b = 0; b < 10; b++) {

//            for (int c = 0; c < 10; c++) {

//                printf("%d%d%d ",a,b,c);

//           //     printf("%d ",a * 100 + b * 10 + c );

//            }

//        }

//        printf(" ");

//    }

    

    int i = 0;

    int j = 0;

    int m = 0;

    scanf("%d%d",&i,&j);

    m = i > j ? j : i ;

    while (m ) {

        

    

     if ((i  % m  == 0)&&(j  % m   == 0)) {

         printf("最大公约数%d",m );

        break;

    }

        m--;

      

    }

    printf("最小公倍数:%d",i * j / m );

    // 7.(****)反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。

//        int year = 0;

//        int month = 0;

//        int  day = 0;

//        int i = 1;

//        int j = 1;

//        int  k = 1;

//        printf(" 请输入出生年月日:格式:年份-月份-日期 ");

//        scanf("%d-%d-%d",&year,&month,&day);

//        while ( i ){

//        

//        

//        if ((year > 2015) || (year < 1905) ) {

//            printf("输入无效,请重新输入");

//            year = 1;

//            i = year;

//        }        }

//        while ( j  ){

//        if ((month  > 12) || (month < 10) ) {

//            printf("输入无效,请重新输入");

//             month = 1;

//            j = month;

//    

//                }

//        while ( k  ){

//        if ((day  > 30 ) || (day < 1) ) {

//            printf("输入无效,请重新输入");

//            day = 1;

//            k  = month;

//                    

//                }

//

//            }

//    }


}


  /* 1. (**)随机产生20[10 , 100]的正整数,输出这些数以及他们中的最大数

    int n = 0 ;

    scanf("%d",&n );

    int max = 0 ;

    while (n > 0){

    int ret = arc4random() % (100 - 10 + 1) + 10;

    printf ("%d ",ret );

    if (ret > max )

    {

    max = ret ;

    }

    n--;

    }

    printf("max:%d ",max  );

    

    2. (**)编程将所有水仙花数打印出来,并打印其总个数。水仙花数是一个 各个位立方之和等于该整数的三位数。

         int a = 0;

         int b = 0;

         int c = 0;

         int count = 0;

         for(a = 0;a < 10;a++)

         for(b = 0;b < 10;b++)

         for(c = 1;c < 10;c++)

         if(a+b*10+c*100 == a * a * a + b * b * b + c * c * c){

         count++;

         printf("%d%d%d ",c,b,a);

   

   

   }

         printf("%d ",count);

    

    

    3. (**)已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合

   int a = 0;

   int b = 0;

   int c = 0;

   for(a = 1;a < 10;a++)

   for(b = 0;b < 10;b++)

   for(c = 1;c < 10;c++)

   if(1333 == a + b * 10 * 2  + c * 100 + a * 100 + c  )

   printf("%d%d%d ",c,b,a);

   

   

    4. (***)输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)

   // 辗转相除法

   int a = 0;

   int b = 0;

   int j = 0;

   int r = 0;

   scanf("%d%d",&a,&b);

   if(a < b){

   j = a;

   a = b;

   b = j;

   }

   r = a % b;

   while (r) {

   a = b;

   b = r;

   r = a % b;

   

   }

   

   printf("最大公约数:%d ",b);

   j = (a > b ? a : b) ;

   while (!((j % a  == 0 )&& (j % a  == 0 )) ) {

   j++;

   }

   

   printf("最小公倍数:%d",j);

   

   printf("最小公倍数:%d",i * j / m );    上面的代码有一点麻烦,公约数和公倍数之间是有关系的

   //普通方法

   int i = 0;

   int j = 0;

   int m = 0;

   scanf("%d%d",&i,&j);

   m = i > j ? j : i ;

   while (m ) {

   

   

   if ((i  % m  == 0)&&(j  % m   == 0)) {

   printf("最大公约数%d",m );

   break;

   }

   m--;

   

   }

   printf("最小公倍数:%d",i * j / m );

   

   

    • (***)一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高

   float i = 100;

   float sum = 0;

   int  n = 0;

   scanf("%d",&n );

   for (int j = 0; j <  n ; j++) {

   //  i = i / 2;

   sum +=   i;

   i = i / 2;

   }

   printf("共经过:%f%d次反弹高:%f ",sum,n,i );

   

   

   }


   

    6. (****)输入n,分别用*输出边长为n的实心菱形和空心菱形。

    例如:n = 3时,输出:

   int n = 0;

    int i = 0;

   int j = 0;

   scanf("%d",&n);

   for (int i = 1 ; i < 2 * n ; i++) {

   if (i <= n ) {

   for (int j = 0; j < n - i  ;j ++) {

   printf(" ");

   }

   for (int j = 0; j < 2 * i  - 1 ; j ++) {`

   printf("*");

   

   }

   for (int j = 0; j > n - i  ; j ++) {

   printf(" ");

   

   }

   

   }else {

   for (j=0; j < i % n; j++)printf(" ");

   for (j=0; j< 2 * n - 1 - 2 * (i % n); j++)printf("*");

   for (j=0; j< i % n; j++)printf(" ");

   

   }

   printf(" ");

   }

   

    7.(****)反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。

  */

//    int a = 0;

//    int b = 0;

//    int c = 0;

//    int n = 100;

//    

//    

//    while (n < 1000) {

//        a = n / 100;

//        b = n /10 % 10 ;

//        c = n % 100;

//        if (n == a * a * a + b * b * b + c * c * c  ) {

//            printf("%d ",n);

//            n ++;

//        }

//       

//   }

    

//#include<stdio.h>

//    void fun(int m);

//    main()

//    {

//        int m;

//        printf("请输入一个三位数:"); //"水仙花数"是针对三位数的;

//        scanf("%d",&m);

//        fun(m);

//        return 0;

//    }

//    

//    void fun(int num)

//    {

//        int a,b,c,n;

//        a=num/100;

//        b=num/10-a*10;

//        c=num-a*100-b*10;

//        n=a*a*a+b*b*b+c*c*c;

//        if(num==n)

//            printf("%d是水仙花数! ",num);

//        else 

//            printf("%d不是水仙花数! ",num);

//    }

//#include "stdio.h"

//    void main()

//    {

//        int n,a,b,c;

//        n=100;

//        while(n<1000)

//        {

//            a=n/100;

//            b=n%100/10;

//            c=n%10;

//            if(n==a*a*a+b*b*b+c*c*c)

//                printf("%d ",n);

//            n++;

//        }

//        printf(" ");

//    }

//    


//

//        int a,b,c;

//        for(int a = 1;a <= 9;a++)

//        {

//            for(int b=0;b<=9;b++)

//            {

//                for(int c=0;c<=9;c++)

//                {

//                    if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)

//                    {

//                        printf("%d,%d,%d ",a,b,c);

//                    }

//                }

//            }

//        }

//int main(void)

//{

//    int m,n,i,j;

//    printf("请输入两个正整数");

//    scanf("%d%d",&m,&n);

//    i=(m>n?n:m);

//    while(!(m%i==0&&n%i==0))

//    {

//        i--;

//    }

//    printf("最大公约数:%d ",i);

//    j=(m>n?m:n);

//    while(!(j%m==0&&j%n==0))

//    {

//        j++;

//    }

//    printf("最小公倍数:%d ",j);

//    return 0;

//}

//int main(int argc,const char *argv[]){

//    int n,i,j;

//    scanf("%d",&n);

//    for (i=1; i<=2*n-1; i++) {

//        if (i<=n) {//实心菱形上半部分

//            //n-i空格

//            for (j=0; j<n-i; j++)printf(" ");

//            //2i-1 *

//            for (j=0; j<2*i-1; j++)printf("*");

//            

//            //n-i kongge

//            for (j=0; j<n-i; j++)printf(" ");

//        }

//        

//        else {//实心下半部分

//            //i%n kongge

//            for (j=0; j<i%n; j++)printf(" ");

//            //2*n-1-2(i%n)

//            for (j=0; j<2*n-1-2*(i%n); j++)printf("*");

//            //i%n kongge

//            

//            for (j=0; j<i%n; j++)printf(" ");

//        }

//        

//        printf(" ");

//    }

//    for(i=1;i<=2*n-1;i++){//空心菱形上半部分

//        if(i<=n){

//            for(j=1;j<=n+i-2;j++)

//            {

//                if(j==n-i+1)printf("*");

//                else printf(" ");

//                

//            }

//            printf("* ");}

//        else {//空心菱形下半部分

//            for(j=1;j<=2*n-i%n-2;j++)

//            {

//                if(j==i%n+1)printf("*");

//                else printf(" ");

//                

//            }

//            printf("* ");}

//        

//        

//    }

    //

    //

//    return 0;

//}


原文地址:https://www.cnblogs.com/yuhaojishuboke/p/5043140.html