为了账号安全,请及时绑定邮箱和手机立即绑定

C++基础编程问题

C++基础编程问题

30秒到达战场 2019-04-13 08:36:57
openjudge上的一道题:输入一个整数,判断它能否被3,5,7整除,并输出以下信息:1、能同时被3,5,7整除(直接输出357,每个数中间一个空格);2、能被其中两个数整除(输出两个数,小的在前,大的在后。例如:35或者37或者57,中间用空格分隔)3、能被其中一个数整除(输出这个除数)4、不能被任何数整除;(输出小写字符'n',不包括单引号)样例输入0515105样例输出357535357我的代码是:#include#includeusingnamespacestd;intmain(){intn;intjudge[100];inti=0;while(cin>>n){if(n%3==0){if(n%5==0){if(n%7==0){//357judge[i]=1;}else{//35,非7judge[i]=2;}}elseif(n%7==0){//37,非5judge[i]=3;}else{//3,非5非7judge[i]=5;}}else{//非3if(n%5==0){if(n%7==0){//57,非3judge[i]=4;}else{//5,非3非7judge[i]=6;}}else{//非5if(n%7==0){//7,非3非5judge[i]=7;}else{//非3非5非7judge[i]=8;}}}i++;}//输出for(intj=0;j
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

你的逻辑太乱了,你看在while循环里这么写,应该可以吧?
inthave3=!(n%3),have5=!(n%5),have7=!(n%7);
if(!have3&&!have5&&!have7){
printf("n");
}else{
if(have3)
printf("3");
if(have3&&have5)
printf("");
if(have5)
printf("5");
if((have3||have5)&&have7)
printf("");
if(have7)
printf("7");
}
printf("\n");
                            
查看完整回答
反对 回复 2019-04-13
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

这位同志写得实在是太僵了,题目其实就是要求从小到大输出3.5.7之中能整除它的数,否则输出n。这样的“打表”式代码即使找出了错误,也没有用,建议换种方法。
思路是这样,从35到7判断,如果能整除,即输出,用一个变量登记输出,以判断是否需要cout一个n。
代码:
#include
usingnamespacestd;
intmain()
{
intnum,sym;//变量与标识
while(cin>>num)
{
sym=0;//一开始没有输出
if(!(num%3))//判断
{
sym++;//出现除数
cout<<"3";//输出,注意有空格。下同
}
if(!(num%5))
{
sym++;
cout<<"5";
}
if(!(num%7))
{
sym++;
cout<<"7";
}
if(!sym)//如果没有除数则输出
cout<<'n';
cout<}
return0;
}
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 508 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信