iOS学习之旅之C语言day4

来源:互联网 发布:淘宝客qq群如何拉人 编辑:程序博客网 时间:2024/06/05 18:30
//
//  main.m
//  CLesson_练习
//
//  Created by lanou3g on 15/7/28.
//  Copyright (c) 2015年 com.lanou3g. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
    
    
    //作业1.  随机产生20个[10, 100]的整数,输出这些数以及他们中得最大数
    int count1= 0;
    int maxNum = 0;
    
    printf("产生的随机数为:\n");
    while (count1< 20) {
        int tempNum = arc4random() % (100 - 10 +1 ) +10;
        printf("%4d",tempNum);
        
        if (tempNum > maxNum) {
            maxNum = tempNum;
        }
        count1 ++;
        
    }
    
    printf("\n 最大数为:%2d\n",maxNum);
    
    printf("---------------------------------------作业1完\n\n\n");

    
    //作业2.编程将所有"水仙花数"打印出来, 并打印其总个数."水仙花数"是一个 各个位立方之和等于该数的三位数.
    int basicUnit = 0;
    int tenPlace = 0;
    int hundredNum = 0;
    int countN = 0;
    for (int i = 100; i <= 1000; i ++ ) {
        
        basicUnit = i % 10;
        hundredNum = i / 100;
        tenPlace =( i % 100 ) /10;
        
        
        int  cubeSum = pow(basicUnit, 3) +pow(hundredNum, 3) + pow(tenPlace, 3);
        
        if ( cubeSum == i   ) {
            printf("%5d 是水仙花数.\n",i);
            countN ++;
            
        }
    }
    
    printf("一共有%d个水仙花数.\n",countN);
    printf("---------------------------------------作业2完\n\n\n");
    
    
 
    //作业3:已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合
    
    for (int i = 0; i <= 9; i ++) {
        for (int j = 0; j <= 9; j ++) {
            for (int k = 0; k <= 9; k ++) {
                if (101 * ( i + k ) + 20 * j ==1333 ) {
                    printf("a=%d b=%d c=%d\n",i,j,k);
                }
            }
        }
    }
    
    printf("---------------------------------------作业3完\n\n\n");

    
    //作业4:输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)
    
    
    //  ******方法一:辗转相除法:
    
    int uNum = 0 ;
    int vNum = 0 ;
    int rNum = 1 ;
    int count2 = 1 ;
    int mNum = 0 ;
    int maxDivisor = 0;
    int minMuliple = 0;
    printf("请输入两个整数,回车结束:\n") ;
    
    scanf("%d%d",&uNum,&vNum);
    
    mNum = uNum * vNum ;
    
    
    
    //  除数比被除数大,两数交换
    if (uNum > vNum) {
        
        uNum = uNum ^ vNum ;
        vNum = uNum ^ vNum ;
        uNum = vNum ^ uNum ;
    }
    
    rNum = vNum % uNum ;
    //普通方法:
    
    for (int i = vNum; i > 0 ; i --) {
        if (vNum % i == 0 && uNum % i == 0) {
            printf("最大公约数为:%d\n",i);
            maxDivisor = i;
            break;
        }
    }
    minMuliple = uNum * vNum / maxDivisor;
    printf("最小公倍数为:%d\n",minMuliple);
    

    
    
    
    
    
    
    
    
//    //辗转相除求公约数
//    while (rNum != 0) {
//        
//        vNum = uNum ;
//        uNum = rNum ;
//        printf("第%d次辗转相除的余数为:%d\n",count2,rNum);
//        rNum = vNum % uNum ;
//        count2 ++ ;
//        
//    }
//    if (uNum == 1)
//        printf("呀!这两个整数互质!\n") ;
//    else
//        printf("这两个整数的公约数为:%d\n",uNum) ;
//    //  求最小公倍数
//    mNum = mNum / uNum ;
//    
//    printf("这两个整数的最小公倍数为:%d\n",mNum);
//    
    printf("---------------------------------------作业4完\n\n\n");

   
    //作业5: 一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高
    
    float height = 100;
    float sumHeight = 0;
    
    for (int i = 0 ; i < 10 ; i ++) {
        sumHeight += height;
        height *= 0.5;
    }
    printf("在第十次落地是,共经过%.2f米\n.",sumHeight);
    printf("第十次反弹高度为:%.2f.\n", height );
    printf("---------------------------------------作业5完\n\n\n");

    
    //作业6:输入n,分别用*输出边长为n的实心菱形和空心菱形。
    
    int n = 0;
    
    printf("输入你要打印棱形的边长:");
    scanf("%d",&n);
    
    for (int i =  0; i <= n + 1 ; i ++) {
        for (int j = 0; j < n - i + 1; j ++) {
            printf(" ");
        }
        for (int k = 0; k < 2*i-1; k ++) {
            printf("*");
        }
        
        printf("\n");
    }
    for (int i = 0; i <= n ; i ++) {
        for (int j = 0; j <= i; j ++) {
            printf(" ");
        }
        for (int k = 0; k < 2*(n-2) - 2*i + 3; k++ ) {
            printf("*");
        }
        printf("\n");
    }
    
    
    for (int i =  0; i <= n; i ++) {
        for (int j = 0; j < n - i; j ++) {
            printf(" ");
        }
        for (int l = 0; l < 1; l++) {
            printf("*");
        }
        for (int k = 0; k < 2*i-1; k ++) {
            printf(" ");
        }
        for (int m = 0; m< 1; m ++) {
            if (i > 0) {
                printf("*");
            }
            
            
        }
        printf("\n");
    }
    for (int i = 0; i <= n-1; i ++) {
        for (int j = 0; j <= i; j ++) {
            printf(" ");
        }
        for (int l = 0; l < 1; l++) {
            printf("*");
        }
        for (int k = 0; k < 2*(n-2) - 2*i +1 ; k++ ) {
            printf(" ");
        }
        if (i < n - 1) {
            
            for (int l = 0; l < 1; l++) {
                printf("*");
            }
        }
        printf("\n");
    }
    printf("---------------------------------------作业6完\n\n\n");
    
    
    
    //作业7:反复校验用户输入的生日,包括年、月、日。直到年、月、日都合法。
    
    BOOL b = NO;
    
    int birthdayYear = 0;
    int birthdayMonth = 0;
    int birthday = 0;
    
    
    while (!b) {
        printf("请输入正确的生日:\n");
        scanf("%d %d %d",&birthdayYear,&birthdayMonth,&birthday);
        
        if (birthdayYear == 1991 && birthdayMonth == 5 && birthday == 1) {
            b = YES;
        }
    }
    printf("你的身份以确定.\n") ;
    
    printf("---------------------------------------作业7完\n\n\n");
    

    return 0;
}


0 0