机时十一:
抽到题目:已知数据文件IN.DAT中存有200个两位数且相邻的两个数之间均不相等,并已调用函数readDat()把这些数存入数组b中,请考生编制一个函数jsVal(),实现的功能是对经常上下波动的数据可采用只记录峰值的数据压缩方法,即每次将采样到的当前值和前一次值比较,如数据变化方向改变(原递增现递减或原递减现递增),说明已过峰值,这时就将当前值记录下来,接着将结果依次存入数据b中(从0开始存放),注意数组b中的第一个数据a[0]原样存入b[0]单元中。最后调用输出函数writeDat()把结果c输出到文件OUT.DAT中。例如:原数据: 35,69,87,73,62,54,60,70, 压缩后: 35,73,60, 注意:部分源程序存在文件PROG1.C文件中。 程序中已定义:a[200]、b[200]。请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat的内容。
| Word-WRAP: break-word" bgColor=#f3f3f3>以下是引用片段: { int i; b[0]=a[0]; cnt=1; for(i=1;i if((a>a[i-1]&&a>a[i+1])||(a b[cnt++]=a;} |
本人是昨天晚上考的,前面也有人抽到,但我觉得答案有问题现将我的答案归纳如下,尽请指教!!
抽到题目:已知在文件IN.DAT中存有10x20个实数, 并已通过函数ReadDat( )数组aa[10][20]中。请编制函数jsVal(), 其功能要求: 1.分别剔除每行的第一个和最后一个数,求出剩余18个数的平均值存入数组bb[10]中; 2.将bb[10]中的数按从达到小顺序排列,结果仍存入bb[10]中。 最后调用函数WriteDat()把所求的结果输出到文件OUT.DAT中。
| Word-WRAP: break-word" bgColor=#f3f3f3>以下是引用片段: int aa[10][20]; float bb[10]; void jsVal() {int i,j; float a; for(i=0;i<10;i++) { bb=0; for(j=1;j<19,j++) bb+=aa[j]; bb/=18; } for(i=0;i<10;i++) for(j=i;j<10;j++) if(bb{ a=bb; bb=bb[j] bb[j]=a; }} |