关于C语言循环结构的一些习题

本文提供了多个C语言编程练习题目,包括随机数生成、水仙花数查找、数学问题求解、图形输出等,旨在帮助读者掌握C语言的基础语法及算法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//

//  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, const char * 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");

        

    }

  

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    

    return 0;

}

1. 请写1个支付宝接龙红包程序. 随机产生1-100的随机数,作为红包金额. 让用户不断的去猜,直到猜正确为止.最后发给用户的红包金额是 红包金额/猜得次数. 2. 循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错. 3. 实现要求用户一直输入QQ号码和密码,只要不是123456、888888就一直提示要求重新输入,如果正确则提登录成功. 4. 1-100之间不能够被7整除的数的和. 5. 求1-200之间的所有的整数的累加和 6. 求1-100之间6的倍数的个数 7. 输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩 8. 2006年培养学员80000人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?*** 9. 从键盘输入10个数,求出最大数 10. 1000~ 5000之间有多少整数,其各位数字之和为5,分别是哪些数(例如整数2003的各位数字之和为 2+0+0+3 ,等于5)), 并统计满足条件的整数有多少个。 11. 求1-100中 是7的倍数 的数值之和 12. 求1-1000之间的所有的奇数之和 13.猜数字游戏. 随机产生1个1-100之间的数 让用户猜 当用户输入的数比产生的随机数大 就输出 猜大了 并让用户继续输入新的数.。 当用户输入的比产生的随机数小的时候 就输出 猜小了 并且继续猜 当用户刚好输入的就是这个随机数的时候 提示成功 并显示用户猜了多少次. 14. 老师问学生,这道题你会做了吗? 如果学生答"会了(y)",则可以放学. 如果学生不会做(n),则老师再讲一遍,再问学生是否会做了......直到学生会为止,才可以放学. 直到学生会或老师给他讲了10遍还不会,都要放学 15. 写1个程序. 随机的产生1个2位数的加法运算.让用户输入这个运算的结果 然后判断这个结果是否正确. 来10次. 每个人默认有10分. 产生10个加法运算.操作数的范围在0-100之间. 每产生1个加法运算 就让用户输入结果.判断是否正确. 当回答正确的时候就为用户加1分. 错误的时候就扣1分. 当10道题目回答完毕之后 就显示用户得的分数. ***
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值