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

编写一个函数用来实现将一个数组指定的素数元素删除,主函数中定义10
个元素的一维数组,从键盘输入相应的数据,将数组。要删除的元素
。数组的大小(采用默认形参)作为实参传给函数,主函数中输出删
除之后的结果。

#include<iostream.h>
#include<math.h>
void main()
{
int a[10],i,flag,m,k=0,j;
cout<<"请输入10个整数:";
for(i=0;i<10;i++)
cin>>a[i];
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)
{
cout<<a[i]<<"";
}
}

}
到这里就没有了...求帮忙补充完整啊..顺便求注释..
感谢..

#include<iostream.h>
#include<math.h>
int sift(int a[],int n)//实现将素数删除,返回值为删除素数后元素个数
{
int i,m,flag;
for(i=0;i<n;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<n-1;j++)//将a[i]之后的元素依次赋值给前一个元素
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<k;i++)
cout<<a[i]<<" ";

}
实现真正删除对我来说还真是有点困难,不过总算弄出来了,望采纳哦!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-11
你这个程序和题意完全不对应啊 我给你从写一个带子函数的吧
#include<iostream.h>
#define LEN 10
void del_val(int input[],int output[],int len){
int val;
cout<<"输入要删除的数据:"<<endl;
cin>>val;
int j=-1;
for(int i=0;i<len;i++){
if(input[i] != val){
output[++j]=input[i];
}
}
cout<<"输出删除之后的结果:"<<endl;
for(int t=0;t<=j;t++)
cout<<output[t]<<endl;
}
int main(){
int a[LEN],b[LEN];
cout<<"请输入10个整数:";
for(int i=0;i<LEN;i++)
cin>>a[i];
del_val(a,b,LEN);
return 0;
}
第2个回答  2013-07-11
#include<iostream>
#include<math.h>
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<n-1;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<Size;i++)
cout<<a[i]<<" ";
return 0;

}