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

【问题求解方法分析】设兵数为x,则按题意应满足以下关系式:

#include<stdio.h>
int main()
{int x;for(x=0;x<3000;x++){if(x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n",x);}}return 0;
} 

运行结果:

这里我们是假设韩信有3000兵,属于“瞎猫碰到死耗子”,如果真正的解不在这个范围内,那么程序运行之后将一无所有。如果没有x<3000的限制条件,那么又是怎样的结果呢?显然一定会找到正解,而且不止一个正解,更严重的是程序将进入一个死循环。所以这个时候我们就可以用break语句程序如下:

#include<stdio.h>
int main()
{int x;for(x=0;;x++){if(x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n",x);break;}}return 0;
} 

由于本例中,程序退出循环以后什么事情也不做,直接结束程序的运行,因此还可以调用函数exit()来直接结束程序的运行。程序如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{int x;for(x=0;;x++){if(x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n",x);exit(0);}}return 0;
} 

可读性更好的方法是使用标志变量,即定义一个标志变量find,标志是否找到了解,先置find为假,表示“未找到”一旦找到了满足给定条件的解,就将find置为真,表示“找到了”。相应的,循环控制表达式取为“find的逻辑非”的值,当find值为0时,即!find为真,表示没找到,继续循环,否则表示已找到,退出循环,程序如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{int x;int find=0;for(x=1;!find;x++){if(x%5==1 && x%6==5 && x%7==4 && x%11==10){printf("x = %d\n",x);find = 1;}}return 0;
} 

【C语言程序设计】穷举法典例------韩信点兵问题相关推荐

  1. 单片机c语言程序设计实训报告,(整理)单片机C语言程序设计实训100例.doc

    (整理)单片机C语言程序设计实训100例.doc .单片机C语言程序设计实训100例基于8051Proteus仿真案例第 01 篇 基础程序设计01闪烁的LED/* 名称闪烁的LED说明LED按设定的 ...

  2. c语言程序设计 doc,C语言程序设计精彩资料100例.doc

    C语言程序设计精彩资料100例.doc 转C语言程序设计经典100例[程序1]题目有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数都是多少1.程序分析可填在百位.十位.个位的数字都是1 ...

  3. 【C语言编程】古典问题:韩信点兵

    题目 韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1:按从1至6报数,最末一个士兵报的数为5:按从1至7报数,最末一个士兵报的数为4:最后再按从1至11报数, ...

  4. c语言变量相等问题穷举法,C语言穷举法经典例题.ppt

    <C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...

  5. c语言穷举法举例,C语言穷举法经典例题.ppt

    <C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...

  6. c语言穷举算法 枚举法,c语言枚举法(穷举法).ppt

    c语言枚举法(穷举法) 枚举法(穷举法) "笨人之法": 把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. 百元买百鸡问题分析 百元买百鸡问题分析 优化 继续优化 利用 ...

  7. c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件

    枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为 ...

  8. 穷举法c语言吃饭,C语言穷举法经典例题

    枚举法(穷举法),"笨人之法":把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出.,分析:这是个不定方程--三元一次方程组问题(三个变量,两个方程)x+y+z=1005x ...

  9. C语言程序设计之编程求鸡和兔的只数,用穷举法解决

    CSDN论坛上网友的问题:有一群鸡和一群兔,两种动物只数相同.两种动物的脚的总数都是三位数,且这两个三位数的六个数字分别是0,1,2,3,4,5.编程求鸡和兔的只数是多少?它们的脚数各是多少? C语言 ...

  10. c语言二重循环的盒图怎么画,全国计算机二级C语言程序设计讲义 循环嵌套.ppt...

    全国计算机二级C语言程序设计讲义 循环嵌套 第7讲 循环的嵌套 一.continue 语句和 break 语句 1.continue语句 2.break语句 二.循环的嵌套 三.goto语句 葛挑破隶 ...

最新文章

  1. 人类史上最伟大的 PPT,马斯克的 39 页火星计划PPT
  2. linux rcs文件中的ip,linux学习笔记之diff和patch命令
  3. JDK12下的ArrayList源码解读 与 Vector的对比
  4. mysql取出数据外键_mysql数据表有外键,应注意的几点(目前学习所获得的经验)...
  5. C/Cpp / 设计模式 / 模板模式
  6. Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
  7. redis过期策略和淘汰机制你知道多少?
  8. java 大文件 处理_用Java处理大文件
  9. 同步锁 php,python线程中同步锁详解
  10. 最专注和高效的查词法?网易有道词典笔2.0评测
  11. 高德地图:No implementation found for void com.autonavi.base.ae.gmap.GLMapEngine.nativeInitParam
  12. VC 控件的字体控制 若将字体设置成“宋体、仿宋—GB2312、隶书、幼圆”中的某一字体时,需将lfCharSet设置成GB2312—CHARSET才使设置的字体有效...
  13. php生成的apk无法安装,xapk怎么安装
  14. DM 源码阅读系列文章(七)定制化数据同步功能的实现
  15. php 修改pdf文件内容,pdf中怎么擦掉某些内容
  16. Win7怎么设置自动关机?Win7设置自动关机的方法
  17. 【IntelliJ IDEA】idea多次重装打不开的解决办法
  18. 教士、神父、教父、牧师有什么区别?
  19. 考研数学汤家凤 暑期答疑合集
  20. 简单的CSV文件读取,C语言实现

热门文章

  1. c加加中print是什么意思_Java中的null到底是什么意思?
  2. APP推广技巧:APP营销推广的八种渠道你一定要了解!
  3. Scala Either Left Right
  4. 【FACT】函数使用技巧
  5. 『杭电1897』SnowWolf‘s Wine Shop
  6. linux 彻底删除oracle,Linux下完美卸载Oracle
  7. 安装带有 SSH 的 SOCKS 服务器!
  8. UEFI/GPT分区
  9. educoder平台+大数据从入门到实战+14个模块习题
  10. 《java程序设计基础》 抽象类