C语言第三课练习

#import <Foundation/Foundation.h>


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

    

    

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

    

//    int max = 0;

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

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

//        if (ran > max) {

//            max = ran;

//        }

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

//    }

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

    

    

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

    

    

//    int a = 0 , b = 0 , c = 0 ,count = 0;

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

//        a = i / 100;

//        b = i % 100 / 10;

//        c = i % 10;

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

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

//            count++;

//        }

//    }

//    printf("\n总个数为:%d",count);

    

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

    

    

//    int a = 0 , b = 0 , c = 0 ,d = 0;

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

//        a = i / 100;

//        b = i % 100 / 10;

//        c = i % 10;

//        d = c * 100 + b * 10 + a;

//        if (i + d ==1333) {

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

//        }

//    }

    

    // 4. (***)输入两个数,求最大公约数和最小公倍数。

    

//    int a = 0 , b = 0 , max = 1 ,min = 0;

//    printf("输入两个数:\n");

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

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

//        if ((a % i == 0)&&(b % i == 0)&&(i > max)) {

//            max = i;

//        }

//    }

//    min = a * b / max;

//    printf("最大公约数:%d  最小公倍数:%d",max,min);

    

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

    

//    float sum = 100.0 , high = 100.0;

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

//        high = high / 2;

//        sum += high * 2;

//    }

//    high = high / 2;

//    printf("共经过%.2f,第十次反弹%.2f米高",sum,high);

    

    

    

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

    //实心菱形

//    printf("输入n:\n");

//    int n = 0;

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

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

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

//            printf(" ");

//        }

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

//            printf("*");

//        }

//        printf("\n");

//    }

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

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

//            printf(" ");

//        }

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

//            printf("*");

//        }

//        printf("\n");

//    }

    

    //空心菱形

//        printf("输入n:\n");

//        int n = 0;

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

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

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

//                printf(" ");

//                }

//            printf("*");

//            for (int j = 0; j < 2 * i - 3 ; j++) {

//                printf(" ");

//                }

//            if(i > 1){

//                printf("*");

//            }

//            printf("\n");

//

//        }

//    

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

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

//                printf(" ");

//            }

//                printf("*");

//        

//        for (int j = 2 * n - 2 * i - 3; j > 0 ; j--) {

//                printf(" ");

//            }

//        if(i < n - 1){

//                printf("*");

//        }

//            printf("\n");

//        }


    

    

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

    

    printf("输入生日,以逗号隔开:\n");

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

    BOOL birth = YES;

    do{

    BOOL birth = YES;

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

    if (year > 2015 || year < 0) {

        birth = NO;

        printf("年份输入错误");

    }

    if (mouth < 0 || mouth > 12) {

        birth = NO;

        printf("月份输入错误");

    }

    switch (mouth) {

        case 1:

        case 3:

        case 5:

        case 7:

        case 8:

        case 10:

        case 12:

            if(day < 0 || day >31){

                birth = NO;

                printf("日输入错误");

            }

            break;

        case 4:

        case 6:

        case 9:

        case 11:

            if(day < 0 || day >30){

                birth = NO;

                printf("日输入错误");

            }

            break;

        case 2:

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

                if(day < 0 || day >29){

                    birth = NO;

                    printf("%d是闰年,输入错误",year);

                }

            }else{

                if(day < 0 || day >28){

                    birth = NO;

                    printf("%d不是闰年,输入错误",year);

                }

            }

            break;

            

        default:

            break;

    }

        if (birth == YES) {

            printf("输入正确!");

        }else{

            printf("输入错误!\n请重新输入:\n");

        }

    }while(birth == YES);


    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值