1. 程式人生 > >關於C語言迴圈結構的一些習題

關於C語言迴圈結構的一些習題

//

//  main.m

//  LessonCThirdText03

//

//  Created by lanou on 15/10/12.

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

//

#import <Foundation/Foundation.h>

int main(int argc, constchar * argv[]) {

       1. (**)隨機產生20[10 , 100]的正整數,輸出這些數以及他們中的最大數

//    

//    int n = 1;

//    int max = 0;

//    while (n <= 20) {

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

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

//        n++;

//        max = max > random ? max : random;

//    }

//    

//    printf("\nmax = %d",max);

2. (**)程式設計將所有水仙花數打印出來,並列印其總個數。水仙花數是一個各個位立方之和等於該整數的三位數。

//    

// 第一種方法

//    

//    int n = 0;

//    for (int a = 0; a <= 9 ; a++) {

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

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

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

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

//                    n++;

//                }}}}

//    printf("個數為:%d",n);

//  第二種方法

//    int a,b,c = 0;

//    int n = 0;

//    for (int i = 0; i <= 999; i++) {

//        a = i / 100;

//        b = (i % 100) / 10;

//        c = (i % 100 ) % 10;

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

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

//            

//            n++;

//           

//        }

//    }

//    printf("個數為:%d",n);

3. (**)已知abc+cba = 1333,其中a,b,c均為一位數,程式設計求出滿足條件的a,b,c所有組合

//    

//    for (int a = 0; a <= 9; a++) {

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

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

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

//                

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

//                

//                }

//            }

//        }

//    }

 4. (***)輸入兩個數,求最大公約數和最小公倍數。

//    

//   int a,b,m,n,max = 0;

//    

//   printf("請輸入兩個數,用逗號隔開:\n");

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

//    int min = a * b;

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

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

//            if ( a / i == b / j) {

//                n = a / i;

//                max = max > n ? max : n;

//                }

//            

//        }

//    }

//    

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

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

//            if ( a * x == b * y) {

//                m= a * x;

//               min = min < m ? min : m;

//            }

//            

//        }

//    }

//       printf("最大公約數為:%d,最小公倍數為:%d",max,min);

//   // 5.(***)一個球從100m高度自由落下,每次落地後反跳回原來高度的一半,再落下,再反彈。求它在第10次落地時,共經過多少米?第10次反彈多高

//    

//    float h = 100.0;

//    float s = 0;

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

//        h = 0.5 * h;

//        s = s + h ;

//        

//    }

//    printf("第十次反彈%f ",h);

//    printf("\n共經過:%f",s + 100);

/* 

     6. (****)輸入n,分別用*輸出邊長為n的實心菱形和空心菱形。

例如:n = 3時,輸出:

      *

     ***

    *****

     ***

      *

      *

     * *

    *   *

     * *

      *

    */

//    int n = 0;

//    printf("請輸入n:\n");

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

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

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

//            printf(" ");

//            }

//        for (int k = 0; k < 2 * i - 1; k++) {

//            printf("*");

//        }

//        printf("\n");

//    }

//    for (int i = n - 1; i > 0; i--) {

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

//            printf(" ");

//        }

//        for (int k = 0; k < 2 * i - 1; k++) {

//            printf("*");

//        }

//        printf("\n");

//    }

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

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

//            printf(" ");

//        }

//        printf("*");

//        for (int k = 0; k < (i-1)*2 - 1; k++) {

//            printf(" ");

//        }

//        if (i != 1) {

//            printf("*");

//        }

//        printf("\n");

//  }

//    for (int i = n - 1; i > 0; i--) {

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

//            printf(" ");

//        }

//        printf("*");

//        for (int k = 0; k < 2*(i - 1) - 1; k++) {

//            printf(" ");

//        }

//        if (i != 1) {

//            printf("*");

//        }

//        printf("\n");

//    }

//7.(****)反覆校驗使用者輸入的生日,包括年、月、日。直到年、月、日都合法。

int year = 0, mouth = 0, day = 0;

while (1) {

printf("請輸入年月日用逗號隔開\n");

scanf("%d,%d,%d",&year,&mouth,&day);

BOOL a = year >= 0 && year <= 2015;

BOOL b = mouth >= 1 && mouth <= 12;

BOOL m1 = mouth == 1 || mouth == 3 || mouth == 5 || mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12;

BOOL m2 = mouth == 4 || mouth == 6 || mouth == 9 || mouth == 11;

BOOL m3 = mouth == 2;

if (m1) {

BOOL d1 = day >= 1 && day <=31;

if (a && b && d1) {

printf("輸入合法");

break;

            }else{

printf("輸入不合法");

            }

        }

if (m2) {

BOOL d2 = day >= 1 && day <=30;

if (a && b && d2) {

printf("輸入合法");

break;

            }else{

printf("輸入不合法");

            }

        }

if (m3) {

if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {

BOOL d3 = day >= 1 && day <= 29;

if (a && b && d3) {

printf("輸入合法");

break;

                }else{

printf("輸入不合法");

                }

            }else{

BOOL d4 = day >= 1 && day <= 28;

if (a && b && d4) {

printf("輸入合法");

break;

                }else{

printf("輸入不合法");

                }

            }

        }

printf("\n");

    }

return0;

}