| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1159 人关注过本帖
标题:关于For循环的问题,请教各位高手
只看楼主 加入收藏
hjlljh2007
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-11-13
收藏
 问题点数:0 回复次数:10 
关于For循环的问题,请教各位高手
#include<math.h>
main()
{int m,i,k;
  scanf("%d",&m);
  k=sqrt(m+1);printf("%d\n",k);
  for(i=2;i<=k;i++)
  if(m%i==0)break;
  if(i>=k+1)printf("%d is a prame muber\n",m);
  else printf("%d is not a prame muber\n",m);
}
循环for与if是怎样进行的?为什么当输入m=17,i=2时,如果按顺序运行它应该运行else语句才对的,可是它不是,为什么呢,请各位高手指教?谢谢!
搜索更多相关主题的帖子: For 
2008-11-20 18:04
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
首先,更正你几点
第一,平方根的话一般都是使用实数而不是整数..
第二,素数的英文是:prime而不是prame...
然后的话代码我修改了一下..
程序代码:
#include<math.h>
int main(void){
  int m,i;
  float k;
  scanf("%d",&m);
  k=sqrt(m+1);
  printf("This number's sqrt is %g\n",k);
  for(i=2;i<k;i++)
    if(m%i==0){
      printf("%d is not a prime muber\n",m);
      break;
      getch();
      exit(0);
    }
  printf("%d is a prime muber\n",m);
  getch();
}


这是按照我的思路写的代码..
然后按照你的思路的话我想想看..
啊呀..想懂了...
程序代码:
#include<math.h>
int main(void){
  int m,i;
  float k;
  scanf("%d",&m);
  k=sqrt(m+1);
  printf("This number's sqrt is %g\n",k);
  for(i=2;i<=k;i++)
    if(m%i==0)
      break;
  if(i>=k)
    printf("%d is a prime muber\n",m);
  else
    printf("%d is not a prime muber\n",m);
  getch();
}


在if(i>=k+1)应该是if(i>=k)吧...原因我就不解释了,自己想想啊..

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-20 18:36
bearangel
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-7-15
收藏
得分:0 
你这个程序是求某个数是不是素数
第五行为什么是k=sqrt(m+1)呢??
不应该是k=sqrt(m)吗
2008-11-20 18:39
bearangel
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-7-15
收藏
得分:0 
回一楼的,求一个数是不是素数
那个平方是不能用实型的,只能用int否则程序会出错,得不到正确的答案
2008-11-20 18:42
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
出错??哦...没考虑到这个问题..
嗯...换个方法啦..
那我在输出时让系统在运算一遍.
程序代码:
#include<math.h>
int main(void){
  int m,i,k;
  scanf("%d",&m);
  k=sqrt(m);
  printf("This number's sqrt is %g\n",sqrt(m));
  for(i=2;i<=k;i++)
    if(m%i==0)
      break;
  if(i>=k)
    printf("%d is a prime muber\n",m);
  else
    printf("%d is not a prime muber\n",m);
  getch();
}

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-20 18:48
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
[bo][un]zqy110007[/un] 在 2008-11-20 18:48 的发言:[/bo]

出错??哦...没考虑到这个问题..
嗯...换个方法啦..
那我在输出时让系统在运算一遍.
#include
int main(void){
  int m,i,k;
  scanf("%d",&m);
  k=sqrt(m);
  printf("This number's sqrt is %g\n",sqrt(m) ...

难道你发代码前自己就不能看看运行结果??
2008-11-20 19:49
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
实在抱歉..写错了,多了等于

看看啊~
程序代码:
#include<math.h>
int main(void){
  int m,i,k;
  scanf("%d",&m);
  k=sqrt(m);
  printf("This number's sqrt is %g\n",sqrt(m));
  for(i=2;i<k;i++)
    if(m%i==0)
      break;
  if(i>k)
    printf("%d is a prime muber\n",m);
  else
    printf("%d is not a prime muber\n",m);
  getch();
}

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-20 19:53
woshiyun
Rank: 1
等 级:新手上路
威 望:2
帖 子:348
专家分:0
注 册:2008-6-16
收藏
得分:0 
[bo][un]zqy110007[/un] 在 2008-11-20 19:53 的发言:[/bo]

实在抱歉..写错了,多了等于

看看啊~
#include
int main(void){
  int m,i,k;
  scanf("%d",&m);
  k=sqrt(m);
  printf("This number's sqrt is %g\n",sqrt(m));
  for(i=2;ik)
    printf("%d is a prim ...

继续改吧,试试5,7.
自己多试试再发。
2008-11-20 19:59
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
风格不好。

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-11-20 20:13
y877034456
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2008-10-20
收藏
得分:0 
因为当m%i==0时说明了它能被0到根号m之间的数整除,不是素数时才跳出循环??跃陀辛四愕慕峁? /><div class=
2008-11-20 20:30
快速回复:关于For循环的问题,请教各位高手
数据加载中...
 
   



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

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