注册 登录
编程论坛 C语言论坛

c语言编程题,求各位大佬帮忙!!

hahahahhhah 发布于 2019-11-23 12:12, 1328 次点击
题目描述:
输入一个正整数n(1<n≤10),再输入n个正整数,找出其中的素数,并将它们从大到小排序后输出
输入:
输入一个正整数n(1<n≤10),再输入n个正整数。
输出 :
找出其中的素数,并从大到小排序。
样例输入:
6
1 2 3 6 5 4
样例输出:
5 3 2
2 回复
#2
c鳌白2019-11-25 11:26
应该可以帮到你。

#include<stdio.h>
#include<stdlib.h>
#define N 10
int QIShu(int a)
{
   int i,t=0;
   for(i=a;i>0;i--)
   {
       if(a%i==0)
       {
           t++;
       }
   }
  return t;
}
int main()
{
    int y[N];
    int i,j,n,z,t=0;
    for(i=0;i<N;i++)
    {
    printf("请输入第%d个数(1--%d):",i+1,N);
    AAA:scanf("%d",&n);  
    if(n>0&&n<=N)
        {
          t=QIShu(n);
          if(t==2)
          {
              y[i]=n;
          }
          else
              y[i]=0;
        }
       else
      {printf("这个值不符合输入!请重新输入第%d个数:",i+1);
       goto AAA;
       }
    }
    for(i=0;i<N;i++)
    {
       for(j=i+1;j<N;j++)
       {
          if(y[i]<y[j])
          {
          z=y[i];
          y[i]=y[j];
          y[j]=z;
          }
       }
    }
    printf("\n以下为素数,排序后为:");
     for(i=0;i<N;i++)
       if(y[i]!=0)
       {printf("%-3d",y[i]);}
       puts("\n");
    system("pause");
}

[此贴子已经被作者于2019-11-25 13:06编辑过]

#3
纯蓝之刃2019-11-25 12:43
程序代码:
#include<stdio.h>

int sushu(int a);

int main()
{
    int a[10]={0},b[10],n;
    int i=0,j=0,k=0,temp;

    printf("请输入数据个数:");
    scanf("%d",&n);

    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        if(sushu(a[i]))
        {
            b[k]=a[i];
            k++;
        }
    }

    for(i=0;i<k-1;i++)
    {
       for(j=0;j<k-1-i;j++)
       {
          if(b[j]<b[j+1])
          {
              temp=b[j];
              b[j]=b[j+1];
              b[j+1]=temp;
          }
       }
    }

    printf("\n以下为素数,排序后为:");

     for(i=0;i<k;i++)
        printf("%d  ",b[i]);

    return 0;
}

int sushu(int a)
{
    int i=0;
    for(i=2;i<a;i++)
    {
        if(a%i==0)
            break;
    }
    if(i==a)
        return 1;
    else
        return 0;
}
1