该函数接受数组的三个元素,并且在这三个元素中找到第一个素数并将其放在第一个位置,然后它移动到下一个元素并在这三个元素之间找到素数,如果没有这些数字是素数,没有变化。最后两个数字保持不变。这是我的代码,有一些麻烦。想要一些帮助。 为了更清楚,前三项让我们说A [i] A [i + 1] A [i + 2]素数放在A [i]
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define ITEMS 10
int Transform(int *num,int k,int j,int x){
while(j!=ITEMS-3){
if(num[j]%2==0)
break;
if(num[j]%2!=0)
num[x]=num[j];
j++;
k++;
x++;
if(num[k]%2==0)
break;
if(num[k]%2!=0)
num[x]=num[k];
j++;
k++;
x++;
if(num[x]%2==0)
break;
if(num[x]%2!=0)
num[x]=num[x];
j++;
k++;
x++;
}
}
int main(void){
int num[ITEMS];
int i,j,k,x,pom;
i=0;
k=i+1;
j=i+2;
x=i;
for(i=0;i<ITEMS;i++){
printf("Enter the array : /n");
scanf("%d",num[i]);
pom=Transform(num,j,k,x);
printf("%d",pom);
}
return 0;
}
答案 0 :(得分:0)
给定int num[ITEMS]
你可能意味着:
scanf("%d", &num[i]);
^
如果你省略,你会让scanf
认为num[i]
中的任何内容都是地址。
答案 1 :(得分:0)
您想要找到数组中每三个数字的第一个素数。
for(int i = 0; i < len; i += 3)
for(int j = i; j < i+3; j++)
if(isPrime(nums(j)))
{
primes[i/3] = nums[j];
break;
}
代码是这样的,但我还没有测试过。