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

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

热度:130   发布时间:2007-12-29 10:33:36.0
请高手帮我研究下这个程序,谢谢!
写个程序判断是否能被3和5整除:
#include "stdio.h"
void main()
{int n;
printf("请输入一个数 N :");
scanf("%d",&n);
if(n%5==0&&n%3==0)
printf("可以被3和5整除");
else
printf("不可以被3和5整除");
}
如果改成:
#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)
printf("可以被3和5整除");
if(z=0)
printf("不可以被3和5整除");
}
为什么输入任何数都输出"可以被3和5整除"
请高手们指教下谢谢!
搜索更多相关的解决方案: printf  整除  void  

----------------解决方案--------------------------------------------------------
回复1楼
#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)
printf("可以被3和5整除");
if(z=0)
printf("不可以被3和5整除");
}
可以写成
#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)
  {
    printf("可以被3和5整除");
  }
  if(z=0)
  {
    printf("不可以被3和5整除");
  }
}

这样语句块看的比较清楚,呵呵!

第一个if,如果被3或5整除就把z的值该为1,else语句被“;”号结束掉了,所以跟没写一样
           在这之后,即便你输入的值能被3和5整除但你语句块里执行的操作是将z的值改为1
第二个if,如果z=1就输出可以被3和5整除
第三个if,这个语句块则永远都不会被执行到。
          所以不管你输入的值能被3和5整除,他也都只输出“能被3和5整除”

基本上是这样,不知道还有没有高手可以看出别的问题!
----------------解决方案--------------------------------------------------------
哥哥,改成你这样也是同样的问题啊,真搞不明白了,那位大哥帮看看啊.
----------------解决方案--------------------------------------------------------
可以写成
#include "stdio.h"
void main()
{
  int n,z;
  printf("请输入一个数 N :");
  scanf("%d",&n);
  if(n%5==0&&n%3==0)
  {
     printf("可以被3和5整除");
  }
  else
  {
    printf("不可以被3和5整除");
  }
}

这样不就行了吗?
真不知道你非要弄出个z来干什么!
----------------解决方案--------------------------------------------------------
如果你要再加上z的条件判断,那你输入的值就只能是 1 或 0
----------------解决方案--------------------------------------------------------
这样改一下就行了,仔细看一下,主要在条件判断.
#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)
    printf("可以被3和5整除");
if(z==0)
   printf("不可以被3和5整除");
}
----------------解决方案--------------------------------------------------------
谢谢楼上的大哥,但小第还一个问题,我把程序改了下
#include "stdio.h"
void main()
{int n,z;
printf("请输入一个数 N :");
scanf("%d",&n);
if(n%5==0&&n%3==0)
z=1;
else
if(n%5==0!=n%3==0) <<增加了这段判断代码,程序就不灵了啊>>
z=0;
if(z)
printf("可以被3和5整除");
else
printf("不可以被3和5整除");
}
谢谢请再帮我分析下.
----------------解决方案--------------------------------------------------------
"xianshizhe111" 那样写就不会那样啦
注以后两个IF条件语句
else(z=0);   
if(z=1)            
printf("可以被3和5整除");
if(z=0)
printf("不可以被3和5整除");
}
注意:是==(等于)而不是=(赋值),C语言不同于数学(=与==的区别).
----------------解决方案--------------------------------------------------------
你想一想如:输入7
这一条:if(n%5==0!=n%3==0)
它的结果如不成立.
z的值将是一个系统的随机数.它既不是0 也不是 1.
你想正确.
if(z==1)
不能
if(z)
ok
----------------解决方案--------------------------------------------------------
谢谢大哥,我明白啦.
----------------解决方案--------------------------------------------------------
  相关解决方案