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");
慕哥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;}
添加回答
举报
0/150
提交
取消