标题:请高手帮我研究下这个程序,谢谢!
只看楼主
潜行者
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-12-29
结帖率:100%
 问题点数:0 回复次数:18 
请高手帮我研究下这个程序,谢谢!
写个程序判断是否能被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 
2007-12-29 10:33
shuyinzhen
Rank: 1
来 自:-
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-12-29
得分:0 
回复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整除”

 基本上是这样,不知道还有没有高手可以看出别的问题!

-
2007-12-29 10:54
潜行者
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-12-29
得分:0 
哥哥,改成你这样也是同样的问题啊,真搞不明白了,那位大哥帮看看啊.
2007-12-29 11:08
shuyinzhen
Rank: 1
来 自:-
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-12-29
得分:0 
可以写成
#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来干什么!

-
2007-12-29 11:15
shuyinzhen
Rank: 1
来 自:-
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-12-29
得分:0 
如果你要再加上z的条件判断,那你输入的值就只能是 1 或 0

-
2007-12-29 11:17
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分: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整除");
}
2007-12-29 11:35
潜行者
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-12-29
得分:0 
谢谢楼上的大哥,但小第还一个问题,我把程序改了下
#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整除");
}
谢谢请再帮我分析下.
2007-12-29 12:49
schanrong
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-12-21
得分:0 
"xianshizhe111" 那样写就不会那样啦
注以后两个IF条件语句
else(z=0);   
if(z=1)            
printf("可以被3和5整除");
if(z=0)
printf("不可以被3和5整除");
}
注意:是==(等于)而不是=(赋值),C语言不同于数学(=与==的区别).
2007-12-29 13:18
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
你想一想如:输入7
这一条:if(n%5==0!=n%3==0)
它的结果如不成立.
z的值将是一个系统的随机数.它既不是0 也不是 1.
你想正确.
if(z==1)
不能
if(z)
ok
2007-12-29 13:27
潜行者
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-12-29
得分:0 
谢谢大哥,我明白啦.
2007-12-29 16:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-194943-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.645013 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved