+ -
当前位置:首页 → 问答吧 → 再次求教

再次求教

时间:2011-12-18

来源:互联网

复制内容到剪贴板
代码:
        k=0;
                for(i=0;i<n;i++)
        {
                c=0;
                for(j=2;j<a[i];j++)
                {
                        if((a[i]%j)!=0)
                                c++;
                }
                if(c==0)
                {
                        b[k]=a[i];
                        k++;
                }
        }
这段代码是把数组a中的素数放到数组b中,但是不管a中邮几个素数 运行结果k都等于1  麻烦各位大侠帮我找找问题

作者: IT界小小鸟   发布时间: 2011-12-18

你好~
复制内容到剪贴板
代码:
if((a[i]%j)!=0)
一旦这句执行成功,那么c就不是0了,也就是说下面的if c == 0 k才自增的语句就不会执行8 O" k9 z  F4 N) a) [) Y
而c是否仍然为零要取决于a % j 是否能除尽,这样做不行的,下面是参考代码,希望楼主自己有更好的做法^ ^
复制内容到剪贴板
代码:
#include<iostream>

void moveElem(int *dest, int destSize,
              int *src, int srcSize)
{
  int size = 0;
  destSize > srcSize ? (size=srcSize) : (size=destSize);
  for(int i=0; i!=size; ++i)
    dest[i] = src[i];
}

int main(int argc, char **argv)
{
  int arr1[] = {12,-87,123,5};
  int arr2[3] = {0};

  moveElem(arr2, sizeof(arr2)/sizeof(*arr2),
           arr1, sizeof(arr1)/sizeof(*arr1));

  return EXIT_SUCCESS;
}
引用:
原帖由 IT界小小鸟 于 2011-12-18 14:43 发表
) \+ q+ L' w5 o& v2 T        k=0;9 f7 a" X2 c! \# }5 u) N
                for(i=0;i

作者: Bill_Hoo   发布时间: 2011-12-18