| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1675 人关注过本帖
标题:[求助]不知道错在哪里?
只看楼主 加入收藏
清风飒影
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-11-10
收藏
 问题点数:0 回复次数:32 
[求助]不知道错在哪里?
这个程序我想要的结果是输出2--200之间每个数下的素数。
程序在编译连接的时候没有报错误。可结果不是我想要的,
程序对每个数输出的结果都是一样的,我不知道哪里错了,
帮忙找一下。谢谢。
代码如下:
#include "conio.h"
#include "stdio.h"
#include "math.h"
main()
{
int a[100];
int b,c,m,i,k;
clrscr ();
for (b=2;b<=200;b++)
{
for (m=1;m<=b;m++)
{
k=sqrt(m);
for (i=2;i<=k;i++)
if (m%2==0) break;
if (i>=k+1)
{
c=0;
a[c]=m;
c++;
}
}

printf ("%d's prime numbers:\n",b);
for (c=0;c<=50;c++)
printf ("%d ",a[c]);
printf ("\n");
}
}
搜索更多相关主题的帖子: include 
2006-11-18 12:07
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
if (i>=k+1)
{
c=0;
a[c]=m;
c++;
}

这一段.每次进入的时候都会把c赋值为0,当然只有1个啦

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-11-18 12:21
清风飒影
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-11-10
收藏
得分:0 
if (i>=k+1)
{
c=0;
a[c]=m;
c++;
}
这一段好像没有错啊,我是让他把每个数下的素数(M)求出来然后赋给数组的地址中。
最后遍历数组,得到结果,。程序结果是 2--200间每个数的结果是一样的。
比如:56下面的假设素数为 :A,B,C,D。。。
57下面的素数也为: A,B,C,D。。。
.........
200下面的素数也是:A,B,C,D。。。

2006-11-18 12:49
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
天呀.我有C-FREE运行.既然无限循环.我汗...

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-11-18 12:52
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
=一下!

我不太明白LZ你的意思.你输出的c数组是什么东西呀?里面是素数?

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-11-18 12:53
清风飒影
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-11-10
收藏
得分:0 
啊,我运行没有无限循环啊,正常结束了的。

2006-11-18 12:54
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
说说你运行后输出了什么?

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-11-18 12:54
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
以下是引用清风飒影在2006-11-18 12:07:44的发言:
这个程序我想要的结果是输出2--200之间每个数下的素数。
程序在编译连接的时候没有报错误。可结果不是我想要的,
程序对每个数输出的结果都是一样的,我不知道哪里错了,
帮忙找一下。谢谢。
代码如下:
#include "conio.h"
#include "stdio.h"
#include "math.h"
main()
{
int a[100];
int b,c,m,i,k;
clrscr ();
for (b=2;b<=200;b++)
{
for (m=1;m<=b;m++)
{
k=sqrt(m);
for (i=2;i<=k;i++)
if (m%2==0) break;//为什么这边是m%2呀?不是要判断b么?
if (i>=k+1)
{
c=0;//这边肯定就是不对了,c的值永远是0不会改变.每次的赋值都会覆盖a[0]!
a[c]=m;
c++;
}
}

printf ("%d's prime numbers:\n",b);
for (c=0;c<=50;c++)
printf ("%d ",a[c]);
printf ("\n");
}
}

LZ你的程序有点乱.建议你再好好看看和想想!


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-11-18 13:02
清风飒影
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-11-10
收藏
得分:0 
等一下,我贴图

2006-11-18 13:05
清风飒影
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-11-10
收藏
得分:0 
恩,
if (i>=k+1)
{
c=0;//这边肯定就是不对了,c的值永远是0不会改变.每次的赋值都会覆盖a[0]!
a[c]=m;
c++;
}
看出来了,我每次都把值给了 a[0] 了,汗!没看出来。谢谢大哥

for (i=2;i<=k;i++)
if (m%2==0) break;//为什么这边是m%2呀?不是要判断b么?
这个FOR是遇2的倍数跳出。

2006-11-18 13:11
快速回复:[求助]不知道错在哪里?
数据加载中...
 
   



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

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