2402_89321029 2024-12-04 13:12 采纳率: 20%
浏览 24

这个怎么用C语言写?

输入n个数(n<=10),对其中的素数进行排序(剔除非素数),输出排序后的数列结果。
建议:编写若干函数,用以判断素数,以及对数组进行排序。

输入格式:
第一行是一个正整数t,表示测试的总数。
然后是t行测试数据,每行由整数n开头,后面跟随n个整数。

输出格式:
对于每组测试,输出从小到大排序后的结果(数字之间保留1空格,尾端无多余空格)。

输入样例:
2
5 2 4 7 9 3
6 8 6 4 2 11 7

输出样例:
2 3 7
2 7 11

  • 写回答

3条回答 默认 最新

  • a5156520 2024-12-04 13:36
    关注

    一个实现,如下:

    #include <stdio.h>
    
    // 定义函数findPrime(),判断参数num是否是素数,如果是,返回1,否则返回0 
    int findPrime(int num){
        
        int i;
        
        if(num<2){
            return 0;
        }
        
        for(i=2;i*i<=num;i++){
            
            if(num%i==0){
                return 0;
            }
            
        }
        
        return 1;
        
    }
    
    int main(void){
        
        int t,arr[10],i,j,k,p,q,n,temp,prime[10];
        
        scanf("%d",&t);   // 获取数据组数t 
        
        // 循环n次,以从输入获取n行测试数据,并从小到大打印每组整数中的素数 
        for(i=0;i<t;i++){
            
            scanf("%d",&n);  // 获取每行的整数个数n 
            k=0;
            // 循环n次,以从输入获取当前组的n个整数,并将当前组的素数存入数组prime中 
            for(j=0;j<n;j++){
                
                scanf("%d",&arr[j]);
                
                if(findPrime(arr[j])==1){
                    prime[k]=arr[j];
                    k++;
                }
                
            }
            
            
            // 从小到大排序当前组的素数 
            for(p=0;p<k-1;p++){
                
                for(q=0;q<k-1-p;q++){
                    
                    if(prime[q]>prime[q+1]){
                        
                        temp=prime[q];
                        prime[q]=prime[q+1];
                        prime[q+1]=temp;
                        
                    }
                    
                }
                
            }
            
            // 输出当前组排序后的素数 
            for(p=0;p<k;p++){
                
                printf("%d",prime[p]);
                
                if(p<k-1){
                    printf(" ");
                }
                
            }
            
            printf("\n");
            
        }
        
        
        return 0;
        
    } 
    
    

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月4日