输入文件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<10;i++)
9{ aver=0.0; cnt=0; max=0;
10for(j=0;j<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<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 < 10 ; i++)
27for(j = 0 ; j < 20 ; j++) fscanf(fp, \"%d\", &aa [ i][j]) ;
28fclose(fp) ;
29}
30
31void main()
32{
33int i ;
34readDat() ; /* 读数据 */
35jsVal() ; /* 按要求计算 */
36for(i = 0 ; i < 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 < 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<10;i++)
76{ aver=0.0; cnt=0; max=0;
77for(j=0;j<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<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 < 10 ; i++)
96for(j = 0 ; j < 20 ; j++) fscanf(fp, \"%d\", &aa [ i][j]) ;
97fclose(fp) ;
98}
99
100void main()
101{
102int i ;
103readDat() ; /* 读数据 */
104jsVal() ; /* 按要求计算 */
105for(i = 0 ; i < 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 < 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<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<10;i++)
182{ aver=0.0; cnt=0; min=9999; max1=max2=0;
183for(j=0;j<20;j++)
184{ if(aa [ i][j]>max1) max1=aa [ i][j];
185if(aa [ i][j]<min) [="" aver="(double)(max1+min)/2.0;" for(j="0;j<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 < 10 ; i++)
198for(j = 0 ; j < 20 ; j++) fscanf(fp, \"%d\", &aa[i][j]) ;
199fclose(fp) ;
200}
201
202void main()
203{
204int i ;
205readDat() ; /* 读数据 */
206jsVal() ; /* 按要求计算 */
207for(i = 0 ; i < 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 < 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<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 < N ; i++) {
258val = (long) xx[i] ;
259aver += xx[i] - val ;
260}
261aver /= (double) N ;
262for(i = 0 ; i < N ; i++) {
263val = (long) xx[i] ;
264dec = xx[i] - val ;
265if(dec > 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,\", &xx[N]) ;
296if(xx[N] > 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>