要求:编写函数int del(int a[] , int n)然后删除n个正整数型数组a中所有的素数。
1剩余元素保持原序
2将处理后的数组输出
首先关键词:删除元素、判断素数
然后题目要求创建函数del
判断素数也设置一个函数,并引用其在删除函数中作为判断条件
所以思路就是,创建一个判断素数函数,创建一个删除函数,在主函数中引用。
代码如下:
#include<stdio.h>
//删除所有素数
//设置两个函数,一个删除函数,一个判断是否素数
//判断是否是素数
int prime(int x)
{
//if(x==1)
//return 0;
int i;
for(i=2;i<x;i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
//删除函数
int del(int a[],int n)
{
int i,j,num=n;
for(i=0;i<num;i++)
{
if(prime(a[i]))
{
for(j=i;j<num;j++)
{
a[j]=a[j+1];
}
i--;
num--;
}
}
for(i=0;i<num;i++)
printf("%d\n",a[i]);
}
int main()
{
int i;
int a[100];
int n;
int num;
printf("please input n:");
scanf("%d",&n);
printf("please input a[i]:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
del(a,n);
}
输入:7
4 2 1 3 5 9 10
输出:4 9 10
结果图如下:
在写的过程中我有一个疑问,在判断素数中我先写了
if(x==1)
return 0;
但是输出结果就带着1,后来我把这条语句去掉后就没有1了。这是为啥呢?
今天的小算法就是这样啦~