你可以这样,
int flag = 0;
char s* = NULL;
if(n % 7 == 0) flag |= 4;
if(n % 5 == 0) flag |= 2;
if(n % 3 == 0) flag |= 1;
switch(flag)
{
case 0: s = "NO"; break;
case 1: s = "3"; break;
case 2: s = "5"; break;
case 3: s = "3, 5"; break;
case 4: s = "7"; break;
case 5: s = "3, 7"; break;
case 6: s = "5, 7"; break;
case 7: s = "3, 5, 7"; break;
}
printf("%d can be devided by %s.\n", n, s);
我纯属应你要求用switch才这么写,比较蛋疼!!!
为什么一定要switch?
最简单的逐个判断不就行了?
给你推荐一个简单的算法:
输入一个数
首先,看它能否被15整除?如果可以,则说明3和5都可以把它整除,只需要再判断7是否能把它整除;
然后,如果它不能被15整除,则判断它是否可以被3整除?如果可以被3整除,说明它不能被5整除,只需要看能否被7整除; 如果它不能被3整除,则需要看它能否被5 和 7 整除。
这样做好像比一个一个都去除要好一些。。。
那就分别case 105,35,21,15,7,5,3了,试试行不