博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百僧百馍的问题
阅读量:4145 次
发布时间:2019-05-25

本文共 579 字,大约阅读时间需要 1 分钟。

 

5-4
一百个僧人分一百个馍,大僧每人分三个,小僧三人分一个,正好分完。问大小僧各有几人?

#include <stdio.h>

void main( )

{

         int i = 1;

          while(i <= 33)

         {

            if(i * 3 + (100 - i) / 3 == 100)

                 printf("大僧:%d,小僧:%d/n", i, 100 - i);

             ++i;

         }

}

书中的程序实际上是有问题的!

在用穷举法解决此类问题时要防止因四舍五入而出错的情况。如此题中设大僧每人2个馍,小僧4人一个馍,则问题应该无解,但用例5-4的算法求解时程序却会给出错误的结果:

大僧:43,小僧:57。

可以加一个(100-i) % 3 == 0的条件来防止类似的错误。

练习中要求以小僧的人数为循环变量求解

5.7 以小僧的人数为循环变量求解例5­-4

参考答案为:

#include <stdio.h>

   void main( )
   {
      int i = 3, flag = 0;
      while(i <= 99)
      {
          if(i / 3  + (100 - i) * 3 == 100)
         {
               printf("大僧:%d,小僧:%d/n", 100 - i, i);
               flag = 1;
          }
          i += 3;
      }
      if(flag == 0)
             printf("无解!/n");
   }

转载地址:http://ifdti.baihongyu.com/

你可能感兴趣的文章
Android使用webservice客户端实例
查看>>
[转]C语言printf
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
一篇搞懂Java反射机制
查看>>
Single Number II --出现一次的数(重)
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>
python循环语句与C语言的区别
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>