C++编写一个函数用来实现将一个数组指定的素数元素删除,主函数中定义10 个元素的一维数组,

2024-12-03 22:17:19
推荐回答(3个)
回答1:

#include
#include
int sift(int a[],int n)//实现将素数删除,返回值为删除素数后元素个数
{
int i,m,flag;
for(i=0;i if(a[i]!=1) //1不是素数不用删除
{
flag=0;
m=(int)sqrt(a[i]);
for(int j=2;j<=m;j++)
{ if(a[i]%j==0)//a[i]是合数
{flag=1;
break;}
}
if(flag==0)//a[i]是素数
{
for(j=i;j a[j]=a[j+1];
n--;//删除该素数后数组元素个数-1
i--;//因为a[i]已经改变需要从新验证,故需要-1
}
}
return n;
}
void main()
{
int a[10],i,k;
cout<<"请输入10个整数:";
for(i=0;i<10;i++)
cin>>a[i];
k=sift(a,10);
for(i=0;i cout<
}
实现真正删除对我来说还真是有点困难,不过总算弄出来了,望采纳哦!

回答2:

你这个程序和题意完全不对应啊 我给你从写一个带子函数的吧
#include
#define LEN 10
void del_val(int input[],int output[],int len){
int val;
cout<<"输入要删除的数据:"< cin>>val;
int j=-1;
for(int i=0;i if(input[i] != val){
output[++j]=input[i];
}
}
cout<<"输出删除之后的结果:"< for(int t=0;t<=j;t++)
cout<}
int main(){
int a[LEN],b[LEN];
cout<<"请输入10个整数:";
for(int i=0;i cin>>a[i];
del_val(a,b,LEN);
return 0;
}

回答3:

#include
#include
using namespace std;
void fun(int *a,int &n)
{ int temp[10];
int point=0;
int i,j,m,flag,x,y;
for(i=0;i<10;i++)
{
if(a[i]!=1)
{
flag=0;
m=(int)sqrt(a[i]);
for(j=2;j<=m;j++)

if(a[i]%j==0)
flag=1;
if(!flag)
{
for(x=i;x a[x]=a[x+1];

point++;

}
}
}

n-=point;

}
int main()
{
int a[10],i,flag,m,k=0,j;
cout<<"请输入10个整数:";
for(i=0;i<10;i++)
cin>>a[i];
int Size=10;
fun(a,Size);
for(i=0;i cout< return 0;

}