c语言输入一个长度为10的整数数组,将其中出现的素数首尾交换 非素数保持位置不变?

输入一个长度为10的整数数组,将其中出现的素数首尾交换,即第一个素数与最后一个素数交换,第二个素数与倒数第二个素数交换......,非素数保持位置不变,输出交换以后的数组。

第1个回答  2020-04-19
#include<stdio.h>
int main()
{
int i,j,k,x,y,z,t,a[10],b[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
for(j=2;j<a[i];j++)
if(a[i]%j==0)
{
b[i]=0;
break;
}
if(j>=a[i])
{
b[i]=a[i];
}
}
for(x=9,k=0;k<x;)
{
if(b[k]==0)
{k++;}
if(b[x]==0)
{x--;}
if(b[k]!=0 && b[x]!=0)
{
y=b[x];
b[x]=b[k];
b[k]=y;
k++;
x--;
}
}
for(z=0;z<10;z++)
{
if(b[z]!=0)
a[z]=b[z];
}
for(t=0;t<10;t++)
if(t==0)printf("%d",a[t]);
else printf(" %d",a[t]);
}
相似回答