• 《C和指针》章节后编程练习解答参考——6.6


    《C和指针》——6.6

    题目:

      在指定的下限、上限之间使用数组方法查找质数,并将质数提取出来。

    要求:

      略

    解答代码:

    #include <stdio.h>
    
    #define UPLIMIT        11000
    #define DOWNLIMIT    10000
    #define NUM            UPLIMIT-DOWNLIMIT
    
    void show_array(int *p, int n)        //显示数组p[]中的n个元素
    {
        int i;
        for(i=0; i<n; i++)
        {
            if ((i%10 == 0) && (i!=0))
                printf("
    ");
            printf("%6d", *(p+i));
        }
        printf("
    ");
    }
    
    void def_array(int *p)        //初始化数组元素值为序号+1
    {
        int i;
        for(i=0; (i+DOWNLIMIT)<(UPLIMIT); i++)
        {
            *(p+i) = i+1+DOWNLIMIT;
        }
    }
    
    void DataProcess(int *p)        //将数组中的非质数替换为0
    {
        int i, j;
        for(i=2; i<=(UPLIMIT/2); i++)
        {
            for(j=0; j<NUM; j++)
            {
                if ((*(p+j) >= 2) && (*(p+j) != i) && (*(p+j) % i == 0))
                {
                    *(p+j) = 0;
                }
            }
        }
    }
    
    int DataSelect(int *p)            //将数组中的所有0去掉
    {
        int i, j;
        for(i=0, j=0; i<NUM; i++)
        {
            if(*(p+i) > 1)
            {
                *(p+j) = *(p+i);
                j++;
            }
        }
        return j;
    }
    
    int main(void)
    {
        int arrayt[NUM];
        int *p = arrayt;
        int n = 0;
    
        def_array(p);            //初始化数组元素值为索引号+1
        show_array(p, NUM);        //显示数组p[]中的n个元素
        DataProcess(p);            //将数组中的非质数替换为0
        n = DataSelect(p);        //将数组中的所有0去掉,n为质数的个数
        printf("There are %d numbers:
    ", n);
        show_array(p, n);
    
        getchar();
        return 0;
    }

    注:

      下限和上限可以设置

  • 相关阅读:
    Golang学习
    Golang学习
    基础知识
    Golang学习
    基础知识
    hyper-v server 2016安装,客户端远程管理
    inotifywait命令
    CENTOS 7发送邮件测试
    NFS学习
    awk命令
  • 原文地址:https://www.cnblogs.com/microxiami/p/4972512.html
Copyright © 2020-2023  润新知