C语言程序 找出一二维数组中的所有素数,形成一个一维数组,并使用起泡法把素数数组有小到大排序。

2024-11-29 00:30:03
推荐回答(2个)
回答(1):

#include
#include
void paixu(int *a,int n);
int issushu(int a);
void main()
{
int b[5][5];
int i,j,k=0;
int a[25];//存素数的一维数组
printf("请输入一个五行五列的二维整数数组:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&b[i][j]);
//开始判断,并将素数存到一维数组中
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(issushu(b[i][j]))
a[k++]=b[i][j];
//开始排序
paixu(a,k);
//开始输出
printf("\n二维数组中是素数的有:\n");
for(i=0;i printf("%d ",a[i]);
printf("\n");
}
//交换
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
//从小到大排序
void paixu(int *a,int n)
{
int i,j;
for(i=1;i for(j=0;j {
if(a[j]>a[j+1])
swap(a+j,a+j+1);
}
}
//判断是否是素数,是,返回1,否则,返回0
int issushu(int a)
{
int i;
for(i=2;i<=sqrt(a);i++)
if(a%i==0)
return 0;
return 1;
}
//程序我已经调试好了,不懂的可追问哦!

回答(2):

提示你一下哈,一个数是不是素数会不会?把这个功能写成一个函数bool judge(int num),通过返回值来判断是不是素数,把二维数组用双循环遍历一下,诸葛判断,ture那么把这个值放到新的一维数组中,fause那么不放,判断下一个。然后再用双循环对一位数组进行冒泡排序。
你先写写试试,不行的话我试着给你写个你看一下。