小韦老师@神犇营-my0097-判断能否被3,5,7整除

小韦老师@神犇营-my0097-判断能否被3,5,7整除

题目:

描述

给定一个整数,判断它能否被3,5,7整除,并输出以下信息:

1、能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格);

2、只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者 3 7或者5 7,中间用空格分隔);

3、只能被其中一个数整除(输出这个除数);

4、不能被任何数整除,输出小写字符‘n’,不包括单引号。

输入

输入一行,包括一个整数(<100)。

输出

输出一行,按照描述要求给出整数被 3,5,7 整除的情况。

输入样例1

105

输出样例1

3 5 7

题解:

思路:

整体思路:
对于一个数,若能整除 3, 5, 7 中的哪一个,则输出那个数字,比如能整除 3
则输出 3;能整除 5,则输出 5。
问题是,若都不能整除的时候,要输出一个 n。怎么知道某个数对于 3, 5, 7
都不能整除?
------做标记。
用一个 bool 型的变量做标记,false 代表一种情况,true 代表另一种情况。
例如此处可用 false 来代表某个数对于 3, 5, 7 都不能整除,用 true 来代
表某个数至少能被 3, 5, 7 中的一个数整除。
判断过程中,若 3 能整除这个数,则输出 3,并且将标记置为 true,说明 3,
5,7 中可以有可以整除这个数的;若 5 能整除这个数,则输出 5,并且将标记
置为 true,说明 3,5,7 中可以有可以整除这个数的;若 7 能整除这个数,则
输出 7,并且将标记置为 true,说明 3,5,7 中可以有可以整除这个数的。
判断结束之后,若标志还是 false,说明都不能整除这个数,则输出 n。
具体步骤:
1.定义一个变量 num,用来存储输入的数。并输入 num。
2.定义一个 bool 型的变量,作为标志(也可以说成设置一个标志):

    // 设置一个 bool 型的变量作为标志,false 代表 3,5,7 都不能整除 num
    // 初始化为 false,假设 3,5,7 都不能整除 num 
    bool flag = false;  

3.若 num 能被 3 整除,则输出 3 和空格,并将 flag 置为 true:

    if (num % 3 == 0) {  // 若 num 能被 3 整除 
    cout << 3 << " ";  // 输出 3 和空格 
    flag = true;  // flag 置为 true,说明 3,5,7 中已经有数可以整除 num 
    }  

4.若 num 能被 5 整除,则输出 5 和空格,并将 flag 置为 true。
5.若 num 能被 7 整除,则输出 7 和空格,并将 flag 置为 true。
6.若最后 flag 的值为 false,说明没有一个数能整除 num,则输出 n:

    // 等同于 if(flag == fasle)
    // 若 f 的值为 false,则说明 3,5,7 都不能整除 num 
    if (!flag) {  
    cout << "n";  // 输出 n 
    } 

思考:
1°想一想可以反过来表示麽?也即 false 代表至少有一个能整除,true 表示都
不能整除。如果可以,想一想为什么?若不可以,请说明理由。
2°若有多种状态应该怎么标记呢?

完整代码:
#include <bits/stdc++.h>

using namespace std;

int main() {

	int num;
	cin >> num;
	// 设置一个 bool 型的变量作为标志,false 代表 3,5,7 都不能整除 num
	// 初始化为 false,假设 3,5,7 都不能整除 num 
	bool flag = false;  
	if (num % 3 == 0) {  // 若 num 能被 3 整除 
		cout << 3 << " ";  // 输出 3 和空格 
		flag = true;  // flag 置为 true,说明 3,5,7 中已经有数可以整除 num 
	}
	if (num % 5 == 0) {  // 若 num 能被 5 整除
		cout << 5 << " ";  // 输出 5 和空格
		flag = true;  // flag 置为 true,说明 3,5,7 中已经有数可以整除 num 
	}
	if (num % 7 == 0) {  // 若 num 能被 7 整除
		cout << 7 << " ";  // 输出 7 和空格
		flag = true;  // flag 置为 true,说明 3,5,7 中已经有数可以整除 num 
	}
	// 等同于 if(flag == fasle)
	// 若 f 的值为 false,则说明 3,5,7 都不能整除 num 
	if (!flag) {  
		cout << "n";  // 输出 n 
	}

	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值