做快餐 承包食堂的公司网站,可以做营销任务的网站,建设行业网上报名,欢迎中国建设银行官网小编在这里先祝大家新的一年里所愿皆得#xff0c;万事顺意#xff0c;天天开心#xff01;#xff01;#xff01; 一.水仙花数 题目描述#xff1a; 求100∼999中的水仙花数。若三位数ABCA^3B^3C^3#xff0c;则称ABC为水仙花数。例如153#xff0c;135333112527153万事顺意天天开心 一.水仙花数 题目描述 求100∼999中的水仙花数。若三位数ABCA^3B^3C^3则称ABC为水仙花数。例如153135333112527153则153是水仙花数。 可以从题目中得到我们需要的3个信息
1.我们首先要产生100~999的数字
2.再判断这些数字是不是水仙花数
3.是水仙花数就打印出来
那思路出来了这道题目的关键就是我们如何判断这个数是否是水仙花数。
其实就是根据题目说的把每一位分出来然后每一位的三次方加起来看他等不等于原来的这三位数。而分离我们每一位数就需要用到%,/这两个符号。
下面小编直接把代码放出来供大家参考。 #includeiostream #includecmath using namespace std; int main() { for (int i 100; i 999; i) { int tmp i; int sum 0; while (tmp) { sum pow(tmp % 10, 3); tmp / 10; } if (sum i) { cout i endl; } } return 0; } 二.画矩形 题目描述 根据输入的四个参数a,b,c,f 参数画出对应的矩形。 前两个参数 a,b 为整数依次代表矩形的高和宽 第三个参数 c 是一个字符表示用来填充的矩形符号 第四个参数 f 为整数0代表空心否则代表实心。 这道题可以看到有区分空心和实心全是实心倒是简单只需要用两个变量两次循环遍历即可。那怎么处理空心的呢
我们其实画个图分析一下就可以了
假设高和宽都是7并且是空心的那就可以画出以下的矩形 为了方便解释我们直接定义两个变量i和ji表示行高aj表示列宽b。
通过这张图我们不难发现第一行和最后一行一定都是有符号填充的。
而第一列和最后一列也一定都是有符号填充的。
其实这就是我们打印空心的条件或者是方法。
我们只需要使用if语句去判断上面四个加粗字体是否满足就好如果满足上面四个加粗条件我们就打印输入的符号c。
以上是空心的打印方法。
最开始的时候我们很容易写出这个框架 下面就是根据我们分析的进行填充
实心很简单每行每列直接遍历 空心要加上我们的判断条件 看到这里可能有些人会有点难以理解这个条件小编先拆开了给大家演示
假设我们我们只保留了if条件句中i1和ia两个条件这个时候我们遍历就很容易想到当外层循环满足i是第一行i1和i是最后一行(ia)的时候我们j是每一列都遍历循环这时候就会打印出来两条有符号的图案。
调试一下可以看到 那就还剩下竖着的两条图案也就是我们另外两个条件j1和jb。
这个条件其实是当我们外层循环i每一次不断增加的时候我们内层循环只要一碰到j是第一列和j是最后一列的时候就打印符号c而其他列则为空。
这个时候我们把四个条件全部加上再来调试一遍 记得加上打印空的这个条件不然调试出来的就会是这个样子 小编把代码放出来供大家参考 #includeiostream using namespace std; int a, b, f; char c; int main() { cin a b c f; if (f ! 0)//实心 { for (int i 1; i a; i) { for (int j 1; j b; j) { cout c; } cout endl; } } else//空心 { for (int i 1; i a; i) { for (int j 1; j b; j) { if (i 1 || i a || j 1 || j b) cout c; else cout ; } cout endl; } } return 0; } —优化版本
理解了思路我们就可以来优化一下
可以看到虽然我们上面的代码可以运行但是不够简洁因为我们打印空心和实心用了两个几乎相似的循环框架有点啰嗦我们可以把空心和实心合并起来从而让代码更加简洁可读性更高。
合起来我们首先可以想到的是要使用if判断并且合起来不管是空心还是实心我们都需要把空心外面的框架打印出来。 下面就是矩形里面的填充了。
从题目就可以看出来当f等于0的时候是空心也就是矩形框架里面要填充的是空格( )。
否则就是实心也就是矩形框架里面我们直接打印字符c。
小编吧代码放出来供大家参考 今天的分享就到这里啦感谢各位老铁长期以来的支持~