注册 登录
编程论坛 VC++/MFC

新手学C++,哪位好人帮忙看下这程序咋回事?

a0807061987 发布于 2010-10-17 16:02, 423 次点击
#include <stdio.h>
int main()
{
    int a,b,c,i;
    int k[1000];
    scanf("%d%d",&a,&b);        //输入a,b两个数判断其内素数
        for (a=i;i<=b;i++);     //从a到b进行循环
        {
          for(c=2;c<=i/2;c++);      //判断是否整除
        
            if (i%c==0)
                break;---------------检查说这里是非法打断?怎么回事?
            if (i%c!=0) k[i]=1;
             k[i]=k[i]+1;     //统计数组内素数个数
        
            printf("%d",k[i]);
        }
       return 0;

}
5 回复
#2
yangang22010-10-17 17:02
你这个逻辑有问题呀!我这里有一个程序你看看和你的对比一下:
#include "stdio.h"
#include"math.h"
main()
{  
    int i,k,a,b,num;
    scanf("%d,%d",&a,&b);
    for(num=a;num<=b;num++)
    {
        k=sqrt(num);
        for(i=2;i<=k;i++)
            if(num%i==0)
                break;
        if(i>k) printf("%5d",num);
    }   
    printf("\n");
}
你的那几句:if (i%c!=0) k[i]=1;
          k[i]=k[i]+1;     //统计数组内素数个数
          printf("%d",k[i]);
不知道是什么逻辑。你要注意那个for(c=2;c<=i/2;c++); 即循环语句成为一个空语句是什么意思?和我那个程序对比一下就知道该怎么改了吧!
#3
m21wo2010-10-17 18:02
程序代码:
#include <stdio.h>
int main()
{
    int a,b,c,i;
    int k=0;                        //不需要定义数组
    scanf("%d%d",&a,&b);        //输入a,b两个数判断其内素数
    for (i=a;i<=b;i++)     //换为 i=a ,且for()后面没逗号!
    {
        for(c=2;c<=i/2;c++)      //判断是否整除
          if (i%c==0)
             break;
        if(c>i/2)
             k=k+1;     //统计数组内素数个数
    }
    printf("%d",k);             //移到括号外,输出总数
    return 0;

}
不是什么逻辑不逻辑的问题,就是有些地方没注意罢了!
#4
abc3210cba2010-10-17 18:18
for (a=i;i<=b;i++);     //从a到b进行循环
你那个错误是这句引起的,i没赋值拿去整除当然错了。
还有统计个数搞个什么数组说明你语法基础掌握还不好,改过后的K=K+1;一般人也就写K++;
#5
a08070619872010-10-18 12:00

        if(c>i/2)------------这个来统计个数不对吧。

             k=k+1;     //统计数组内素数个数

楼上各位的程序都能运行。但是结果不对啊
   
#6
a08070619872010-10-18 12:40
问题解决了,是我理解错了,感谢各位啊
1