3基网络问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 10:02:51
题目:
已知数据文件IN30.DAT中存有200个四位数, 并已调用读函数readDat()把这些数存入数组a中,请考生编制一个函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该数连续大于该四位数以前的5个数,且该数是偶数,则统计出满足此条件的个数cnt,并把这些四位数按从大到小的顺序存入数组b中。最后,main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT30.DAT文件中。
注意:部分源程序已给出。程序中已定义数组:a[200]、b[200];已定义变量:cnt。请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。

答案:
int i,j,flag=0;
for(i=5;i<MAX;i++)
if(a[i]>a[i-5]&&a[i]>a[i-4]&&a[i]>a[i-3]&&a[i]>a[i-2]&&a[i]>a[i-1]&&a[i]%2==0)
{ b[cnt]=a[i]; cnt++; } /*将满足条件的数存入数组b中并统计其个数*/
for(i=0;i<cnt-1;i++) /*对b数组进行降序排列*/
for(j=i+1;j<cnt;j++)
if(b[i]<b[j]) { flag=b[i]; b[i]=b[j]; b[j]=flag; }

疑问:
为什么是int i,j,flag=0; 而不是int i,j,flag; 这个0是怎么来的呢? 解惑比给高分 希望详细点

FLAG只是一个INT变量,起一个交换的ij大小的中间人罢了,他只会在第一次调用的时候用到0这个数字,这个数字没有任何意义,当然,我们要考虑那种很小的概率:即B数组没有一个数字的结果。
这时预先给FLAG分配一个内存空间并且为0,就是防止这种情况的出现,一旦出现这种情况,那么你最后的写函数调用这个函数的时候,将会出现内存错误,因为这段内存空间不存在导致程序出错。当然你也可以定义FLAG为其他数字,只要不超过4位数,但是呢,这会导致最后的输出是一个数字而不是0.
这是我个人的一点看法,如有错误请多多包涵。