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

运行结果是一样的,如下

相关推荐
郭涤生17 分钟前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS22 分钟前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言
卢锡荣26 分钟前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
Xin_ye1008630 分钟前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
念何架构之路1 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星1 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
审判长烧鸡1 小时前
【Go工具】go-playground是什么组织?官方的?
开发语言·安全·go
失去的青春---夕阳下的奔跑1 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
kkeeper~2 小时前
0基础C语言积跬步之字符函数与字符串函数(上)
c语言·开发语言
黎阳之光2 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生