输出数组函数的控住部分使用的数组指针不是很理解。
题目中代码如下:
#include"stdio.h"
void initarray(int b[],int n);
void shaixuan(int *b,int n);
void output(int *b,int n);
main()
{
int a[201]={},n;
scanf("%d",&n);
initarray(a,n); //每个数组单元格内容存放为其下标
@#1 //调用筛选函数
output(a,n); //输出结果
}
void initarray(int b[],int n)
{
@@1
@@1
}
void shaixuan(int * b,int n)
{
int i,j;
//重点理解下面的循环控制
//从第三个单元格开始(内容2),然后从该数的后面一个开始
//逐个向后找该数的倍数,找到了设置为-1
for(i=2;i<=n;i++)
{
if (*(b+i)!=-1) //如果是-1,则不用处理(已经删除的数据)
{
@@2
@@2
}
}
}
void output(int *b,int n) //b指针指向的是a[2]单元格
{
int *p;
for(p=&b[2];p<&b[n];p++) //注意理解循环为什么这没控制,
@@3
@@3
}