C - 基础 Homework

来源:互联网 发布:用友软件销售待遇 编辑:程序博客网 时间:2024/05/07 06:31
//1. (**)随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数    {        int max = 10, num;        printf("随机产生20个[10 , 100]的正整数:");        for (int i = 1; i <= 20; i++) {            num = arc4random() % (1000 - 10 + 1) + 10;            printf("%d ", num);            max = num > max ? num : max;        }        printf("\n最大数为:%d\n", max);    }//2. (**)编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。    {        int count, a, b, c;        for (int i = 100; i < 1000; i++) {            a =  i / 100;            b =  i % 100/ 10;            c =  i % 10;            if (i == a * a * a + b * b * b + c * c * c) {                printf("%d ",i);            }            count++;        }    }//3. (**)已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合    {        printf( "a,b,c所有组合为:");        for (int a = 0; a < 10; a++) {            for (int b = 0; b < 10; b++) {                for (int c = 0; c < 10; c++) {                    if(a * 100 + b * 10 + c + c * 100 + b * 10 + a == 1333){                        printf("%d%d%d ",a ,b ,c);                    }                }            }        }        printf("\n");    }//4. (***)输入两个数,求最大公约数和最小公倍数。(用两种方法:辗转相除法和普通方法)//求最大公约数,辗转相除法:    {        int i, j, a, b, count, m;        printf("请输入两个数:");        scanf("%d%d",&a,&b);        i = a;        j = b;        while (i % j != 0) {            m = i % j;            i = j;            j = m;            count++;        }        printf("最大公约数为:%d,计算次数为:%d。\n", j, count);        printf("最小公倍数为:%d\n",a * b / j);    }//普通方法:    {        int a, b, i;        printf("请输入两个数:");        scanf("%d%d",&a,&b);        int num = a >= b ? b : a;        for ( i = num ; i > 0; i--) {            if (a % i == 0 && b % i == 0) {                printf("最大公约数为:%d\n",i);                break;            }        }        printf("最小公倍数为:%d\n",a * b / i);    }//5.    (***)一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高    {        float high = 100,sum = 100;int down = 0;        while (down < 10) {            high = high / 2;            sum += high * 2;            down ++;        }        sum -= high*2;        printf("第10次落地时,共经过%.2f米\n",sum);        printf("第10次反弹高度为:%.2f米\n",high);    }//6. (****)输入n,分别用*输出边长为n的实心菱形和空心菱形。//    实心菱形:    {        int n, j, m, num;        printf("请输入一个数:");        scanf("%d",&n);        for (int count = 1; count <= 2 * n - 1; count++) {            num  = (count > n ) ? (2 * n - count ): count ;            j = n - num;//空格            m = 2 * n - 1 - j * 2;//星星            for (int i = 1 ; i <= j ; i++ ) {                printf(" ");            }            for (int i = 1; i <= m; i++) {                printf("*");            }            printf("\n");        }    }//   空心菱形:    {        int n, j, m, num ;        printf("请输入一个数:");        scanf("%d",&n);        for (int count = 1; count <= 2 * n - 1; count++) {            num  = (count > n ) ? (2 * n - count): count ;            j = n - num;//空格            m = 2 * n - 1 - j * 2;//星星            for (int i = 1 ; i <= j ; i++ ) {                printf(" ");            }            for (int i = 1; i <= m; i++) {                if (i == 1 || i == m) {                    printf("*");                }                else{                    printf(" ");                }            }            printf("\n");        }    }
0 0
原创粉丝点击