您的位置:首页 > 编程语言 > C语言/C++

C语言练习3

2014-09-07 12:47 183 查看
//
//  main.c
//  exercise3
//
//  Created by Vision on 14-8-29.
//

#include <stdio.h>
#include <stdlib.h>

int main(int argc, const char * argv[])
{
// 1.(**)随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数
//    int i = 0;
//    int max = 0;
//    while (i <= 20) {
//        unsigned int a = arc4random() % (100 - 10 + 1) + 10;
//        if (max < a) {
//            max = a;
//        }
//        printf("%u\n", a);
//        i++;
//    }
//    printf("最大值%d", max);

// 2. (**)编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数” 是一个 各个位立方之和等于该整数的三位数。
//    for (int i = 1; i < 10; i++) {
//        for (int k = 0; k < 10; k++) {
//            for (int j = 0; j < 10; j++) {
//                if ((i * i * i) + (k * k * k) + (j * j * j) == (i * 100) + (k * 10) + (j)) {
//                    printf("%d%d%d\n", i, k, j);
//                }
//            }
//        }
//    }

// 3.(**)已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的 a,b,c 所有组合
//    for (int i = 1; i < 10; i++) {
//        for (int j = 1; j < 10; j++) {
//            for (int k = 1; k < 10; k++) {
//                if ((i * 100) + (j * 10) + k + i + (j * 10) + (k * 100) == 1333) {
//                    printf("a = %d, b = %d, c = %d\n", i, j, k);
//
//                }
//            }
//        }
//    }

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

//辗转相除
//    int a = 0, b = 0;
//    scanf("%d%d", &a, &b);
//    int a1 = a, b1 = b;
//    while (a1 % b1 != 0) {
//        int x = a1 % b1;
//        a1 = b1;
//        b1 = x;
//    }
//    printf("%d", b1);

//普通方法:
//    int a , b;
//    scanf("%d%d", &a, &b);
//    int min = a < b ? a : b;
//    int maxgy = 1;
//    if ((a % min == 0) && (b % min == 0)) {
//        maxgy = min;
//    } else {
//
//        for (int i = min; i >= 1; i--) {
//            if(a % i == 0 && b % i ==0) {
//                maxgy = i;
//                break;
//            }
//        }
//    }
//    printf("%d",maxgy);
//    int maxgb = a * b / maxgy;
//    printf("%d", maxgb);

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

//    结果:
//    299.609375 0.097656

//6.求n个随机数里第二大的数?

//    int n = 0;
//    int max = 0, laoer = 0;
//    scanf("%d", &n);
//    while (n > 0) {
//        unsigned int random = arc4random() % 10;
//        printf("%d\n", random);
//        if ( random > max) {
//            laoer = max;
//            max = random;
//
//        } else if (random > laoer) {
//            laoer = random;
//        }
//        n--;
//    }
//    printf("老二 = %d\n", laoer);

//7.打印 0 - 27 所有和值的概率?

//    float n = 0;
//    for (int x = 0; x <= 27; x++) {
//        for (int i = 0; i < 10; i++) {
//            for (int j = 0; j < 10; j++) {
//                for (int k = 0; k < 10; k++) {
//                    if ((i + j + k) == x) {
//                        n++;
//
//                    }
//                }
//            }
//        }
//        printf("%d = %.2f%%\n",x,n / 10);
//        n = 0;
//    }

//8.    输出:
//        *
//      * * *
//    * * * * *
//      * * *
//        *
//    for (int i = 1; i <= 3; i++) {
//        for (int j =  i; j <= 3; j++) {
//            printf("  ");
//        }
//        for (int j = 1; j <= i *2 -1; j++) {
//            printf("* ");
//        }
//        printf("\n");
//    }
//    for (int i = 1; i <= 2; i++) {
//        for (int j =  1; j <= i + 1; j++) {
//            printf("  ");
//        }
//        for (int j = i * 2 - 1  ; j <= 3 ; j++) {
//            printf("* ");
//        }
//        printf("\n");
//    }

// 9.   输出空心菱形:
//        *
//       * *
//      *   *
//     *     *
//      *   *
//       * *
//        *

//    int n = 0;
//    scanf("%d", &n);
//    for (int i = 1; i <= 2 * n - 1; i++) {
//        int x1 = (2 * n - 1) - (abs(i - n) * 2);
//        int x2 = abs(i -n);
//        for (int j = 1; j <= x2; j++) {
//            printf(" ");
//        }
//        for (int j = 1; j <= x1; j++) {
//            if (1 == j || j == x1) {
//                printf("*");
//            } else {
//                printf(" ");
//            }
//
//         }
//        printf("\n");
//    }

//   10. 输入年份,判断是否正确:
//    int a, b, c;
//    int run = 28;
//    scanf("%d-%d-%d", &a, &b, &c);
//    if (((a % 4 == 0) && (a % 100 != 0)) || (a % 400 == 0)) {
//        run++;
//    }
//    if (b > 12) {
//        printf("误");
//    }
//    switch (b) {
//        case 1:
//        case 3:
//        case 5:
//        case 7:
//        case 8:
//        case 10:
//        case 12:
//            if (c >31 || c <=0) {
//                printf("错误");
//            }
//            break;
//        case 2:
//            if (c > run || c<= 0) {
//                 printf("错误");
//            }
//            break;
//        case 4:
//            case 6:
//            case 9:
//            case 11:
//            if (c >30 || c <= 0) {
//                 printf("错误");
//            }
//            break;
//        default:
//            break;
//    }

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: