当前位置: 代码迷 >> C语言 >> 请高手帮我研究下这个程序,谢谢!
  详细解决方案

请高手帮我研究下这个程序,谢谢!

热度:93   发布时间:2007-12-29 16:19:07.0
=是赋值不是便是关系,以后用的时候小心一点~!~
----------------解决方案--------------------------------------------------------
在这个程序中,不能用&&,而应该用||.
因为如果你输入3,那么它是不能被5整除的.所以不成立.
如故你输入5,也不能被3整除,也不成立,所以都显示出不能被3与5整除!
而当你输入15时,能被3和5整除,所以就显示这个数能被3和5整除!
我是这样写的:
main()
{
int n,z;
printf("请输入一个整数:");
scanf("%d",&n);
if(n%3==0||n%5==0)
z=1;
else z=0;
if(z==1)
printf("这个数可以被3和5整除!");
else
printf("这个数不可以被3和5整除!");
}
----------------解决方案--------------------------------------------------------
printf("请输入一个整数:");

int n = 0 ;
char c,  cf  ;

while(     (  ( c = getchar( ) ) != '  \n ' )    ?  ( n += c - ' 0 ' ,  cf  = c )  :  ( 0 )     )  ;

if (       n%3 == 0     &&     (    n != 0   &&   ( cf == ' 5 ' || cf == ' 0 ' )      )       )
    printf( "   OK  !!! \n" ) ;
else
   printf( "   NO  OK  !!! \n" ) ;

这是我的方法```考虑得还不周全``但是大概提供了一个思路``
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]shuyinzhen[/underline][/bold] 于 2007-12-29 10:54 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1164410&ptid=194943][/url]
#include "stdio.h"
void main()
{int n,z;
printf("请输入一个数 N :");
scanf("%d",&n);
if(n%5==0&&n%3==0) z=1;
else(z=0);
if(z=1)             //这里应该是if(z==1)吧
printf("可以被3和5整除");
if(z=0)       //这里应该是if(z==0)吧
printf("不可以被3和5整除");
}
可以写成 ...


该过来应该是对的吧~~~~~~~~~~~~~
----------------解决方案--------------------------------------------------------
程序代码:
#include<stdio.h>

int main()
{
    int n,z;
    printf("\n请输入一个整数:");
    scanf("%d",&n);
    if(n % 15 == 0)   //15为3和5的最小公倍数
        z=1;
    else
        z=0;
    if(z==1)
        printf("%d可以被3和5整除!\n",n);
    else
        printf("%d不可以被3和5整除!\n",n);
    return 0;
}

----------------解决方案--------------------------------------------------------
12楼的意思很明确,但却不是LZ的题目了..LZ需要的就是同时能被3和5整除.并不是3或5整除.

支持15楼的答案.   另外不记得是几楼去了..好象是版主...他的代码。.我看不懂...
----------------解决方案--------------------------------------------------------
我的代码在13楼`````

我的要好处理些``````我们都知道``如果一个数能被3整除```那么它的各位相加最后得到的结果`
肯定还是被3整除``

如果一个数能被5整除```那么它的个位不是0就是5```

那就是我的思路````

LZ的程序能处理的数``位数有限```就算是换成long也不是很大````
但是看我的能``我把n定义为int``假设int的范围是``-32768  --  32767```
那么能处理的最大的数的多少呢`````粗率估计一下```

最小的情况```就算每位是9``
符号不算进去```那么就是 32767 / 9  == 3641 位也就说最小可以处理输入为3641位的数``

最大(相对而言)````每位是1就可以处理```32767位```
也就说范围是  3641 -- 32767  位  ```而且不精确``
要知道有些数再大``它各位相加也才可能是1``比如``1的后面加上1亿个0``够大吧```一亿01位的数哦``但是结果相加后还是1```

5就更不用说了`````随便你的数好大```我只需要其个位```然后检查该数是不是>=5``

要是int是32位的长度```````那么.......
----------------解决方案--------------------------------------------------------
把我的代码``和15楼的代码综合一下吧````15比我聪明啊```
----------------解决方案--------------------------------------------------------
斑竹的代码,比较独特而且有创义,好,很好.
----------------解决方案--------------------------------------------------------
  相关解决方案