2.6C语言学习循环练习-创新互联

    • 写一个猜数字游戏

①. 自动产生1--100之间的随机数

南澳网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联

②.猜数字:猜对了,恭喜就,游戏结束 猜错了,会告诉猜到了,还是猜小了,继续猜,知道猜 对为止

③.游戏一直玩除非退出游戏。

#define _CRT_SECURE_NO_WARNINGS
#include#include//为了使用rand
#include//为了使用time
//解析:上来就要玩游戏,所以采用do while结构直接运行游戏
//首先打印游戏界面菜单
void menu()
{
    printf("*************************\n");
    printf("*****    1. paly   ******\n");
    printf("*****    0. exit   ******\n");
    printf("*************************\n");
}

void game()
{
    //猜数字游戏的实现
    //1.  生成随机数
    //rand函数返回了一个0--32767之间的一个数字 但数字不够随机
    //时间 -- 时间戳

    int ret = rand()%100+1;//为了产生1--100个随机数,%100,%100的余数为1--99,然后+1范围为1--100  
    //printf("随机数:%d\n", ret); 

    //2. 猜数字
    int guess = 0;
    while (1)
    {

        printf("请输入所猜数字:");
        scanf("%d", &guess);
        if (guess< ret)
        {
            printf("猜小了\n");
        }
        else if (guess >ret)
        {
            printf("猜大了\n");
        }
        else
        {
            printf("恭喜你,猜对了\n");
            break;
        }
    }
}



int main()
{   
    int input = 0;
    srand((unsigned int)time(NULL));//为了更随机  ()里的数为随机值 才会出来随机数  所以用时间戳
    //time函数传空值 time函数的返回值强制类型转化为unsigned int   time函数的使用需要引用time.h
    //srand在rand之前调用 但随机数起点的设置只需要调用一次
    do
    {
        menu();//打印菜单
        printf("请选择:");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            //printf("猜数字\n");//测试用
            game();
            break;
        case 0:
            printf("退出游戏\n");
            break;
        default:
            printf("选择错误,重新选择\n");
            break;
        }

        }while (input);//input作为判断的依据,当input为0时 为假退出循环 输入其他数为真 持续循环
    return 0;
}
    • 注意知识点

switch语句中default子句可以放在任意位置

switch语句中case后的表达式只能是整型常量表达式

switch语句中case表达式不要求顺序

F11逐语句

F12逐过程

3. 对三个数从大到小排列

//练习 三个数从大到小排列
#define _CRT_SECURE_NO_WARNINGS
#includeint main()
{  
    int a = 0;
    int b = 0;
    int c = 0;
    //输入
    scanf("%d%d%d", &a, &b, &c);
    //调整顺序
    if (a< b)
    {
        int tmp = a;//tmp相当于空瓶 用于转接 暂时存放
        a = b;
        b = tmp;
    }
    if (a< c)
    {
        int tmp = a;
        a = c;
        c = tmp;
    }
    if (b< c)
    {
        int tmp = b;
        b = c;
        c = tmp;
    }
    //输出大到小
    printf("%d %d %d\n", a,b,c);
    return 0;

}
4.打印1--100之间3的倍数
//写一个代码打印1--100之间所有3的倍数的数字
int main()
{ 
    int i = 0;
    //for (i = 1; i<= 100; i++)
    //{
    //    //判断i是否为3的倍数
    //    if (i % 3 == 0)
    //        printf("3的倍数有:%d\n", i);
    //}
    //第二种
    for (i = 3; i<= 100; i += 3)
        printf("3的倍数有:%d\n", i);

    return 0;

}
5.给定2个数,求这两个数的大公约数
给定2个数,求这两个数的大公约数
//
//int main()
//{
//    int m = 0;
//    int n = 0;
//    scanf("%d%d", &m, &n);//24 18
//    int max = 0;
//    //假设大公约数就是m和n的较小值
//    if (m >n)
//        max = n;
//    else
//        max = m;
//    while (1)
//    {
//        if (m % max == 0 && n % max == 0)
//        {
//            printf("大公约数是:%d\n",max);
//            break;
//        }
//        max--;
//    }
//    return 0;
//}

辗转相除法
eg m:24 n:18   m%n=6 m=18 n=6  此时 m%n=0 t=6
//int main()
//{
//    int m = 0;
//    int n = 0;
//    scanf("%d%d", &m, &n);//24 18
//    int t = 0;
//    while (t = m%n)
//    {
//        m = n;
//        n = t;
//    }
//    printf("大公约数:%d\n", n);
//
//    return 0;
//}
第一次t=18%24=18 此时m=24 n=18  第二次t=18%24=6  此时m=18 n=6  第三次m%n=18%6=0
6. 打印1000--2000年之间的闰年
//打印1000--2000年之间的闰年
int main()
{
    int y = 0;
    int count = 0;
    for (y = 1000; y<= 2000; y++)
    {
        //判断y是不是闰年
        //1.被4整除,不能被100整除是闰年
        //2.并且能被400整除为闰年
        if (y % 4 == 0)
        {
            if (y % 100 != 0)
            {
                printf("%d ",y);
                count++;

            }

            if(y % 400 ==0)
            {
                 printf("%d", y);
                 count++;
            }
        }
    }
    printf("\n count =%d\n", count);
    return 0;
}
代码优化
int main()
{
    int y = 0;
    int count = 0;
    for (y = 1000; y<= 2000; y++)
    {
        //判断y是不是闰年
        //1.被4整除,不能被100整除是闰年
        //2.被400整除为闰年
        if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
        {
            printf("%d ", y);
            count++;
        }
    }
    printf("\n count =%d\n", count);
    return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:2.6C语言学习循环练习-创新互联
URL标题:http://scyanting.com/article/decpdo.html