| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 870 人关注过本帖
标题:请高手帮我研究下这个程序,谢谢!
收藏  订阅  推荐  打印 
潜行者
Rank: 1
等级:新手上路
帖子:36
积分:492
注册:2007-12-29
请高手帮我研究下这个程序,谢谢!

写个程序判断是否能被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
积分:150
注册:2007-12-29
回复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
等级:新手上路
帖子:36
积分:492
注册:2007-12-29

哥哥,改成你这样也是同样的问题啊,真搞不明白了,那位大哥帮看看啊.
2007-12-29 11:08
shuyinzhen
Rank: 1
来自:-
等级:新手上路
帖子:5
积分:150
注册:2007-12-29

可以写成
#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
积分:150
注册:2007-12-29

如果你要再加上z的条件判断,那你输入的值就只能是 1 或 0

-
2007-12-29 11:17
xianshizhe111
Rank: 6Rank: 6
等级:金牌会员
帖子:1451
积分:15818
注册:2007-12-8
这样改一下就行了,仔细看一下,主要在条件判断.

#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
等级:新手上路
帖子:36
积分:492
注册:2007-12-29

谢谢楼上的大哥,但小第还一个问题,我把程序改了下
#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
积分:246
注册:2007-12-21
"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: 6Rank: 6
等级:金牌会员
帖子:1451
积分:15818
注册:2007-12-8

你想一想如:输入7
这一条:if(n%5==0!=n%3==0)
它的结果如不成立.
z的值将是一个系统的随机数.它既不是0 也不是 1.
你想正确.
if(z==1)
不能
if(z)
ok
2007-12-29 13:27
潜行者
Rank: 1
等级:新手上路
帖子:36
积分:492
注册:2007-12-29

谢谢大哥,我明白啦.
2007-12-29 16:11
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.048608 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved