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

运行结果是一样的,如下

相关推荐
a187927218319 分钟前
【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流
算法·leetcode·二叉树··bfs·算法讲解·树遍历
Escalating_xu12 分钟前
【C 语言项目】数组和函数综合实践:从零实现控制台扫雷游戏
c语言
syagain_zsx35 分钟前
算法基础篇 · 03 枚举(C++ 题解)
c++·算法·二进制·枚举
weixin_307779131 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
2601_966949651 小时前
为什么量化回测中 for 循环比 DataFrame 慢三个数量级?从向量化原理讲起
开发语言·python·pandas·股票数据·quantdash
我是章汕呐2 小时前
地级市能源消耗量及消耗强度数据【2006-2023年】平衡面板
人工智能·经验分享·算法·回归
charliejohn2 小时前
计算机考研 408 数据结构 堆的插入与删除 堆排序
算法
老鱼说AI3 小时前
从点积到希尔伯特空间:向量内积的几何本质与大模型相似度度量
人工智能·深度学习·线性代数·算法·机器学习·数学建模
边境悍匪3 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring
我的xiaodoujiao3 小时前
Django 基础知识详细图文教程 9-Django 模板引擎 2
开发语言·数据库·后端·django