C语言:穷举法编程韩信点兵问题四种做法

目录

[第一种 for+break](#第一种 for+break)

[第二种 for+exit](#第二种 for+exit)

[第三种 使用标志变量,可读性比较好的方法](#第三种 使用标志变量,可读性比较好的方法)

[第四种 标志变量+ do-while 可读性还要好](#第四种 标志变量+ do-while 可读性还要好)


韩信有一对兵,他想知道有多少人,便让士兵排队报数。按从1至5报数,最末一个士兵报的数为1;按1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后按1至11报数,最末一个士兵报的10。请编程计算韩信至少有多少兵。

思路:

求余数。假定韩信有x个兵,那么x需要满足

x%5==1 && x%6==5 && x%7==4 &&x %11 ==10

第一种 for+break

cs 复制代码
#include <stdio.h>
int main()
{
    int x;
    for (x=1;;x++)
    {   
        if (x%5==1&& x%6==5 && x%7==4 && x%11 ==10)
        {
            printf("一共有%d个兵",x);
            break;  //终止循环
        }
    }
}

第二种 for+exit

cs 复制代码
#include <stdio.h>
#include <stdlib.h> //新增头文件
int main()
{
    int x;
    for (x=1;;x++)
    {   
        if (x%5==1&& x%6==5 && x%7==4 && x%11 ==10)
        {
            printf("一共有%d个兵",x);
            exit(0);  //直接结束程序运行
        }
    }
}

第三种 使用标志变量,可读性比较好的方法

cs 复制代码
#include<stdio.h>
int main()
{
    int find=0; //定义标志变量find,find=0未找到
    int i,x;
    for (x=1;find==0;x++)
    {
        if (x%5==1 && x%6==5 && x%7==4 &&x %11 ==10)
        {
            printf("一共有%d个兵",x);
            find=1; //找到了,改成1,后面就进不了for循环
        }
    }
}

其中 for (x=1;find==0;x++)可以替换成 for (x=1;!find;x++)

第四种 标志变量+ do-while 可读性还要好

cs 复制代码
#include<stdio.h>
int main()
{
    int x=0;  //因为do while循环会对x加1,这里才写0
    int find=0; //定义标志变量,0是没找到
    do
    {
        x++;
        find = (x%5==1 && x%6==5 && x%7==4 &&x %11 ==10);
    }while (find==0); //没找到才会循环
    printf("一共有%d个兵",x);
}

其中while 后面的find==0 可以替换成 !find

运行结果是一样的,如下

相关推荐
Answer_ism22 分钟前
【SpringMVC】SpringMVC拦截器,统一异常处理,文件上传与下载
java·开发语言·后端·spring·tomcat
-一杯为品-1 小时前
【小项目】四连杆机构的Python运动学求解和MATLAB图形仿真
开发语言·python·matlab
脑子慢且灵2 小时前
JavaIO流的使用和修饰器模式(直击心灵版)
java·开发语言·windows·eclipse·intellij-idea·nio
欣然~3 小时前
基于蒙特卡洛方法的网格世界求解
开发语言·python·信息可视化
海晨忆3 小时前
JS—事件委托:3分钟掌握事件委托
开发语言·javascript·ecmascript·事件委托·事件冒泡
froxy3 小时前
C++11 引入了的新特性与实例说明
开发语言·c++
珹洺3 小时前
Java-servlet(七)详细讲解Servlet注解
java·服务器·开发语言·hive·servlet·html
珊瑚里的鱼3 小时前
第一讲 | 解锁C++编程能力:基础语法解析
开发语言·c++·笔记·visualstudio·学习方法·visual studio
goTsHgo3 小时前
完整的类在JVM中的生命周期详解
java·开发语言·算法
大模型铲屎官3 小时前
玩转C#函数:参数、返回值与游戏中的攻击逻辑封装
开发语言·游戏·c#·编程·参数·函数·返回值