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

《C和指针》——6.4

题目:

  质数是只能被1和本身整除的整数。

  在1到1000之间的质数,在数组中剔除不是质数的数。

解答代码:

#include <stdio.h>

#define LIMIT 1000

void show_array(int *p, int n)        //显示数组p[]中的n个元素
{
int i;
for(i=; i<n; i++)
{
if(i% == )
printf("\n");
printf("%5d ", *(p+i));
}
printf("\n");
} void def_array(int *p) //初始化数组元素值为索引号+1
{
int i; for(i=; i<(LIMIT); i++)
{
*(p+i) = i+;
}
} void DataProcess(int *p) //将数组中的非质数替换为0
{
int i, j;
for(i=; i<(LIMIT/); i++)
{
if (*(p+i) > )
{
for(j=i+; j<LIMIT; j++)
{
if (*(p+j) % *(p+i) == )
{
*(p+j) = ;
}
}
}
}
} int DataSelect(int *p) //将数组中的所有0去掉
{
int i, j;
for(i=, j=; i<LIMIT; i++)
{
if(*(p+i) > )
{
*(p+j) = *(p+i);
j++;
}
}
return j;
} int main()
{
int arrayt[LIMIT];
int *p = arrayt;
int n = ; def_array(p); //初始化数组元素值为索引号+1
show_array(p, LIMIT); //显示数组p[]中的n个元素
DataProcess(p); //将数组中的非质数替换为0
n = DataSelect(p); //将数组中的所有0去掉,n为质数的个数
show_array(p, n);
printf("There are %d numbers!\n", n);
getchar();
return ;
}

代码简析:

  1、定义一个数组,元素依次为从1、2、3、……

  2、使用两层循环,外层从2开始遍历数组前半部分,内层从3开始遍历之后的全部数组元素,内层元素除以外层元素,余数为零时内层元素置为0。

  3、将数组中为零的元素全部剔除

上一篇:copy sqlserver中DATE类型的数据转化 CONVERT


下一篇:【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask