计算机四级2004年9月的上机

输入文件in.dat:

3246 3657 8074 8551 2365 7351 1442 7845 1786 3021 9796 9073 3102 3812 6464 9554 3955 3672 1962 4603
1829 9071 1585 7606 1609 1274 3379 5743 3669 7139 2311 9963 4365 8010 3422 1290 1767 9535 9031 6045
4185 4187 7048 1762 1368 6166 4108 1689 7273 3359 6247 7323 8536 8483 9253 7005 3823 9934 2459 3135
1632 8911 3961 1714 9718 4546 4876 4957 1737 3047 5933 4968 6795 4146 9120 4791 2040 9168 4567 5709
6583 6322 1651 6348 8082 4984 8782 6610 9323 3757 2636 2272 1197 5452 8007 3543 6355 9189 2778 2479
2416 1532 7042 4329 7660 2498 2524 1830 2880 2661 6396 4967 2707 5631 9028 2731 3267 2791 9493 8866
8386 8377 1047 3229 8413 8618 8377 7768 2420 1217 1851 2512 1683 9914 8655 9873 2465 7525 6679 8500
3558 8070 6054 5314 8434 1068 1325 7239 9335 4824 2729 7265 4022 1795 1933 6358 2024 1059 8046 1355
5873 1353 7600 1388 5049 5649 8799 3849 7600 7815 1626 5831 5819 8565 9497 6390 2354 5527 2744 9000
8531 1735 8390 3887 1524 4433 1114 6151 6427 5095 8007 3329 1110 3313 5884 4951 1981 7750 7103 4041

1.已知数据文件IN.DAT中存有10组每组20个四位数的数据, 每个数据间用空格分隔,并已调用读函数readDat()把这10组数据存入数组aa中(其中,aa定义为int aa[10][20]),请考生编制一函数jsVal(), 其功能是: 首先计算每组中的数属于奇数的算术平均值,然后取每组小于其算术平均值的最大一个四位数依次存入数组bb?其中,数组bb定义为int bb[10],其中bb[0]为第一组中符合条件的数,bb[1]为第二组中符合条件的数,其它依此类推),最后调用输出函数writeDat()把结果bb输出到文件OUT.DAT中。
注意: 部分源程序存在文件PROG1.C文件中。
程序中已定义全局变量: aa[10][20]、bb[10]
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include

  1<stdio.h>   
  2int aa[10][20] ;   
  3int bb[10];   
  4  
  5void jsVal()   
  6{ int i,j,max,cnt;   
  7double aver;   
  8for(i=0;i&lt;10;i++)   
  9{ aver=0.0; cnt=0; max=0;   
 10for(j=0;j&lt;20;j++)   
 11if(aa  [  i][j]%2) { cnt++; aver+=aa  [  i][j];}   
 12if(cnt==0) aver=0.0;   
 13else aver/=(double)cnt;   
 14for(j=0;j&lt;20;j++)   
 15if(aa  [  i][j]<aver&&aa [="" i][j]="">max) max=aa  [  i][j];   
 16bb  [  i]=max;   
 17}   
 18}    
 19  
 20/* 以下函数均无需修改 */   
 21void readDat()   
 22{   
 23int i, j ;   
 24FILE *fp ;   
 25fp = fopen(\"D:\\\EXAM\\\40010001\\\in.dat\", \"r\") ;   
 26for(i = 0 ; i &lt; 10 ; i++)   
 27for(j = 0 ; j &lt; 20 ; j++) fscanf(fp, \"%d\", &amp;aa  [  i][j]) ;   
 28fclose(fp) ;   
 29}   
 30  
 31void main()   
 32{   
 33int i ;   
 34readDat() ; /* 读数据 */   
 35jsVal() ; /* 按要求计算 */   
 36for(i = 0 ; i &lt; 10 ; i++) /* 从屏幕输出结果 */   
 37printf(\"%d \", bb  [  i]) ;   
 38writeDat() ; /* 输出结果到文件 */   
 39}   
 40  
 41writeDat()   
 42{   
 43FILE *fp ;   
 44int i ;   
 45fp = fopen(\"D:\\\EXAM\\\40010001\\\out.dat\", \"w\") ;   
 46for(i = 0 ; i &lt; 10 ; i++)   
 47fprintf(fp, \"%d \", bb  [  i]) ;   
 48fclose(fp) ;   
 49}   
 50  
 51  
 52输出文件out.dat:    
 534603   
 544365   
 554187   
 564968   
 574984   
 583267   
 593229   
 603558   
 615873   
 624433   
 63  
 642.已知数据文件IN.DAT中存有10组每组20个四位数的数据, 每个数据间用空格分隔,并已调用读函数readDat()把这10组数据存入数组aa中(其中,aa定义为int aa[10][20]),请考生编制一函数jsVal(), 其功能是: 首先计算每组中的数中十位数位置上的数字是3、6、9的数的算术平均值,然后取每组小于其算术平均值的最大一个四位数依次存入数组bb中(其中,数组bb定义为int bb[10],其中bb[0]为第一组中符合条件的数,bb[1]为第二组中符合条件的数,其它依此类推),最后调用输出函数writeDat()把结果bb输出到文件OUT.DAT中。   
 65注意: 部分源程序存在文件PROG1.C文件中。   
 66程序中已定义全局变量: aa[10][20]、bb[10]   
 67请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。   
 68#include <stdio.h>   
 69int aa[10][20] ;   
 70int bb[10];   
 71  
 72void jsVal()   
 73{ int i,j,max,cnt,sw;   
 74double aver;   
 75for(i=0;i&lt;10;i++)   
 76{ aver=0.0; cnt=0; max=0;   
 77for(j=0;j&lt;20;j++)   
 78{ sw=aa  [  i][j]%100/10;   
 79if(sw==3||sw==6||sw==9) { cnt++; aver+=aa  [  i][j];}   
 80}   
 81if(cnt==0) aver=0.0;   
 82else aver/=(double)cnt;   
 83for(j=0;j&lt;20;j++)   
 84if(aa  [  i][j]<aver&&aa [="" i][j]="">max) max=aa  [  i][j];   
 85bb  [  i]=max;   
 86}   
 87}    
 88  
 89/* 以下函数均无需修改 */   
 90void readDat()   
 91{   
 92int i, j ;   
 93FILE *fp ;   
 94fp = fopen(\"D:\\\EXAM\\\40010001\\\in.dat\", \"r\") ;   
 95for(i = 0 ; i &lt; 10 ; i++)   
 96for(j = 0 ; j &lt; 20 ; j++) fscanf(fp, \"%d\", &amp;aa  [  i][j]) ;   
 97fclose(fp) ;   
 98}   
 99  
100void main()   
101{   
102int i ;   
103readDat() ; /* 读数据 */   
104jsVal() ; /* 按要求计算 */   
105for(i = 0 ; i &lt; 10 ; i++) /* 从屏幕输出结果 */   
106printf(\"%d \", bb  [  i]) ;   
107writeDat() ; /* 输出结果到文件 */   
108}   
109  
110writeDat()   
111{   
112FILE *fp ;   
113int i ;   
114fp = fopen(\"D:\\\EXAM\\\40010001\\\out.dat\", \"w\") ;   
115for(i = 0 ; i &lt; 10 ; i++)   
116fprintf(fp, \"%d \", bb  [  i]) ;   
117fclose(fp) ;   
118}   
119输出文件out.dat为:   
1204603   
1215743   
1224187   
1234791   
1241651   
1254329   
1263229   
1274824   
1287815   
1295095   
130  
1313.已知在文件IN.DAT中存有N个实数(N&lt;200), 函数ReadDat( )读取这N个实数并存入数组xx中。   
132请编制函数CalValue( ), 其功能要求是:   
1331.求出这N个实数的平均值aver;   
1342.分别求出这N个实数的整数部分值的平均值averint 以及其小数部分值的平均值averdec。   
135最后调用函数WriteDat( )把所求的结果输出到文件OUT10.DAT中。   
136注意: 部分源程序存放在PROG1.C中。   
137请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。   
138  
139#include <stdio.h>   
140#include <conio.h>   
141#define MAXNUM 200   
142  
143float xx[MAXNUM] ;   
144int N = 0 ; /* 文件IN.DAT中共有多少个实数 */   
145double aver = 0.0 ; /* 平均值 */   
146double averint = 0.0 ; /* 整数部分值的平均值 */   
147double averdec = 0.0 ; /* 小数部分值的平均值 */   
148int ReadDat(void) ;   
149void WriteDat(void) ;   
150  
151void CalValue(void)   
152{   
153int i ;   
154for(i=0; i<n; &xx[n])="" (double)="" *fp="" +="(int)" -="" 1="" ;="" =="" [="" \"%f,\",="" \")="" \",="" \"r\"))="NULL)" aver="" aver)="" averdec="" averdec)="" averint="" averint)="" calvalue()="" clrscr()="" file="" fscanf(fp,="" i++)="" i]="" if((fp='fopen(\"in.dat\",' if(readdat())="" if(xx[n]="" int="" j="" main()="" n="" n)="" printf(\"小数部分值的平均值="%.2lf" printf(\"平均值="%.2lf" printf(\"数据文件in.dat不能打开!\007="" printf(\"整数部分值的平均值="%.2lf" printf(\"文件in.dat中共有实数%d个="" readdat(void)="" return="" void="" while(!feof(fp))="" writedat()="" xx="" {="" }=""> 0.001) N++ ;   
155}   
156fclose(fp) ;   
157return 0 ;   
158}   
159  
160void WriteDat(void)   
161{   
162FILE *fp ;   
163fp = fopen(\"OUT10.DAT\", \"w\") ;   
164fprintf(fp, \"%d %.2lf %.2lf %.2lf \", N, aver, averint, averdec) ;   
165fclose(fp) ;   
166}   
167  
1684.已知数据文件IN.DAT中存有10组每组20个四位数的数据, 每个数据间用空格分隔,并已调用读函数readDat()把这10组数据存入数组aa中(其中,aa定义为int aa[10][20]),请考生编制一函数jsVal(), 其功能是: 首先计算每组中的数的最大值和最小值的算术平均值,然后取每组小于其算术平均值的最大一个四位数依次存入数组bb中(其中,数组bb定义为int bb[10],其中bb[0]为第一组中符合条件的数,bb[1]为第二组中符合条件的数,其它依此类推),最后调用输出函数writeDat()把结果bb输出到文件OUT.DAT中。   
169注意: 部分源程序存在文件PROG1.C文件中。   
170程序中已定义全局变量: aa[10][20]、bb[10]   
171请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。   
172  
173#include <stdio.h>   
174  
175int aa[10][20] ;   
176int bb[10];   
177  
178void jsVal()   
179{ int i,j,max1,max2,min,cnt;   
180double aver;   
181for(i=0;i&lt;10;i++)   
182{ aver=0.0; cnt=0; min=9999; max1=max2=0;   
183for(j=0;j&lt;20;j++)   
184{ if(aa  [  i][j]&gt;max1) max1=aa  [  i][j];   
185if(aa  [  i][j]<min) [="" aver="(double)(max1+min)/2.0;" for(j="0;j&lt;20;j++)" i][j]="" i][j];="" i][j]<aver&&aa="" if(aa="" min="aa" }="">max2) max2=aa  [  i][j];   
186bb  [  i]=max2;   
187}   
188}    
189  
190/* 以下函数均无需修改 */   
191void readDat()   
192{   
193int i, j ;   
194FILE *fp ;   
195  
196fp = fopen(\"D:\\\EXAM\\\40010001\\\in.dat\", \"r\") ;   
197for(i = 0 ; i &lt; 10 ; i++)   
198for(j = 0 ; j &lt; 20 ; j++) fscanf(fp, \"%d\", &amp;aa[i][j]) ;   
199fclose(fp) ;   
200}   
201  
202void main()   
203{   
204int i ;   
205readDat() ; /* 读数据 */   
206jsVal() ; /* 按要求计算 */   
207for(i = 0 ; i &lt; 10 ; i++) /* 从屏幕输出结果 */   
208printf(\"%d \", bb[i]) ;   
209writeDat() ; /* 输出结果到文件 */   
210}   
211  
212writeDat()   
213{   
214FILE *fp ;   
215int i ;   
216  
217fp = fopen(\"D:\\\EXAM\\\40010001\\\out.dat\", \"w\") ;   
218for(i = 0 ; i &lt; 10 ; i++)   
219fprintf(fp, \"%d \", bb[i]) ;   
220fclose(fp) ;   
221}   
222  
223输出文件out.dat为:   
2244603   
2254365   
2264187   
2274968   
2284984   
2294967   
2303229   
2314824   
2325049   
2334433   
234  
2355.已知在文件IN.DAT中存有N个实数(N&lt;200), 函数ReadDat( )是读取这N个实数并存入数组xx中。请编制函数CalValue( ), 其功能要求:1.求出这N个实数的小数部分值的平均值aver; 2.分别求出这N 个实数中其小数部分值大于平均值aver的该数的整数部分值之和sumint以及该数的小数部分之和sumdec, 最后调用函数WriteDat()把所求的结果输出OUT5.DAT文件中。   
236注意: 部分源程序存放在PROG1.C中。   
237请勿改动主函数main( )、读数据函数ReadDat()和输出数据函数WriteDat()的内容。   
238#include <stdio.h>   
239#include <conio.h>   
240#define MAXNUM 200   
241  
242float xx[MAXNUM] ;   
243int N = 0 ; /* 文件IN.DAT中共有多少个实数 */   
244double aver = 0.0 ; /* 小数部分的平均值 */   
245double sumint = 0.0 ; /* 整数部分值之和 */   
246double sumdec = 0.0 ; /* 小数部分值之和 */   
247  
248int ReadDat(void) ;   
249void WriteDat(void) ;   
250  
251void CalValue(void)   
252{   
253int i ;   
254long val ;   
255float dec ;   
256  
257for(i = 0 ; i &lt; N ; i++) {   
258val = (long) xx[i] ;   
259aver += xx[i] - val ;   
260}   
261aver /= (double) N ;   
262for(i = 0 ; i &lt; N ; i++) {   
263val = (long) xx[i] ;   
264dec = xx[i] - val ;   
265if(dec &gt; aver) {   
266sumint += val ;   
267sumdec += (xx[i] - val) ;   
268}   
269}   
270}   
271  
272void main()   
273{   
274clrscr() ;   
275if(ReadDat()) {   
276printf(\"数据文件IN.DAT不能打开!\007 \") ;   
277return ;   
278}   
279CalValue() ;   
280printf(\"文件IN.DAT中共有实数%d个 \", N) ;   
281printf(\"平均值=%.2lf \", aver) ;   
282printf(\"整数部分值之和=%.2lf \", sumint) ;   
283printf(\"小数部分值之和=%.2lf \", sumdec) ;   
284WriteDat() ;   
285}   
286  
287  
288int ReadDat(void)   
289{   
290FILE *fp ;   
291int j ;   
292  
293if((fp = fopen(\"in.dat\", \"r\")) == NULL) return 1 ;   
294while(!feof(fp)) {   
295fscanf(fp, \"%f,\", &amp;xx[N]) ;   
296if(xx[N] &gt; 0.001) N++ ;   
297}   
298fclose(fp) ;   
299return 0 ;   
300}   
301  
302  
303void WriteDat(void)   
304{   
305FILE *fp ;   
306  
307fp = fopen(\"OUT5.DAT\", \"w\") ;   
308fprintf(fp, \"%d %.2lf %.2lf %.2lf \", N, aver, sumint, sumdec) ;   
309fclose(fp) ;   
310}</conio.h></stdio.h></min)></stdio.h></n;></conio.h></stdio.h></aver&&aa></stdio.h></aver&&aa></stdio.h>
Published At
Categories with 认证考试
Tagged with
comments powered by Disqus