a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 131|回复: 3

[计算机四级] 全国计算机四级考试之试题练习(二)

[复制链接]
发表于 2012-7-31 20:48:14 | 显示全部楼层 |阅读模式
题目:
' r+ o8 {7 I' C; l+ ^7 ~已知数据文件IN.DAT中存有200个四位数, 并已调用读函数 readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:从数组a的头开始,依次取每20个数中的最大值组成一个数, 这样可以获得10个新数并存入数组b中,接着把数组b中的数按从小到大的顺序重新存入数组b中。最后main()函数调用写函 数writeDat()把结果b输出到OUT.DAT文件中。
: Y6 v% R; U) Y$ _注意: 部分源程序存在文件PROG1.C文件中。# o" o( S2 l5 \- Y  H2 d
程序中已定义: a[200]、b[10]! J( @5 p( M# [' q) X7 v/ G1 C% h
请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。$ A7 X' B* F. L. z
�6 g3 ], O# R9 S: G- A6 D' H
初始化程序:
, b6 f3 @* `. Y! _- R  q#include
$ R/ V  b( z; [- a#define MAX 200
2 u' x$ c/ p% Q7 eint a[MAX], b[10];/ U' o, F+ {) |
void jsVal()7 d, l8 G; U: s- b- e" E
{0 H0 q! S* V, R# ]8 W! z* w9 Z/ I
}
- s0 l9 {! R% g! Vvoid readDat()+ D  l" w. \" E% d- W  z: ~' k
{
4 ~2 K' B% A6 qint i ;/ \  ~' f4 Z9 T  c" B
FILE *fp ;5 A: k7 o, O8 h& S9 w
fp = fopen(in.dat, r) ;
5 k  b$ _( O% v. Y# xfor(i = 0 ; i 《 MAX ; i++) fscanf(fp, %d, &a[i]) ;
回复

使用道具 举报

 楼主| 发表于 2012-7-31 20:48:15 | 显示全部楼层

全国计算机四级考试之试题练习(二)

fclose(fp) ;# K; \9 q2 f0 E# A( p0 ~
}
. Q1 `7 _  O. H" X- p4 Hvoid main()
' Z6 F7 t- S7 \0 }7 P' M% }3 r{! o! v6 n2 ^! k1 Y; f) H
int i ;
" ~( O( i. d  d) h1 l& GreadDat() ;
3 [' s( `( u" |, x2 r) O9 KjsVal() ;3 Q/ j- N5 \+ }: V& @
for(i = 0 ; i 《 10 ; i++)+ ^/ \, n- b2 ~" A; }/ H
printf(b[%d]=%d\n, i, b[i]) ;
. }& B/ c+ p: k( i. b8 x# EwriteDat() ;+ d6 H) G3 r2 m* h0 a
}0 u8 Z( E8 C! V" M& \
writeDat()
8 |5 U7 p. a" ?) f{4 X5 G! K) }# K4 k& B
FILE *fp ;
# H2 o* s7 c' P, d9 A/ dint i ;& e$ F3 P/ y: m, E9 z# C6 c
fp = fopen(out.dat, w) ;( D7 g* q" H1 X
for(i = 0 ; i 《 10 ; i++) fprintf(fp, %d\n, b[i]) ;
" i1 C/ @1 S  O! h. @4 hfclose(fp) ;
; f( u4 g9 [* _% y5 G1 A2 V* {) h% a9 }" l}
! s/ X& {* C  ?1 k5 l参考答案:# {9 Y! N/ t* K' s, \, {+ v( o
#include
, t$ g; Y  D) e/ t, C& U6 ]8 ~#define MAX 200; f+ b/ Z8 @' C/ A* j' }+ j
int a[MAX], b[10];; |+ E* [. N% m$ s# i- v& u3 r
void jsVal()
" B2 A4 J7 a: J; ]" g5 `5 B{) R* e8 w7 I- q; O: i% {
int i,j,k; /* j,k,i-循环变量 */
1 v. G( G; O+ I; V/ i: y3 U" E1 {5 hint iMax;) D  s# e( `9 l; ^/ R1 w5 [
for(i=0;i《10;i++) /* 根据取数要求循环 */% x1 Y9 i6 J8 m& b0 ?
{
2 x1 z: ^6 h! T2 H8 x+ ]4 YiMax=0;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 20:48:16 | 显示全部楼层

全国计算机四级考试之试题练习(二)

for(j=i*20;j《(i+1)*20;j++) if(iMaxb[i]=iMax;
0 F: ?. F* S0 B6 d) e" J3 n; g* afor(j=0;j{- r  ?0 |" e( u
if(b[j]》iMax) /* 在b中寻找dt的位置 */1 e( E" n; p# q& l: m- T
{) f7 x1 F$ O5 R/ |: A, a' U
for(k=i;k》j;k--) b[k]=b[k-1]; /* 顺序移动 */* z: i7 H$ D% h& C. d3 k& K
b[j]=iMax;9 k$ g! {( ]/ }$ b  s4 v
break;
4 W: b( W& o' o* e( k}( K* D/ V9 y; }. F7 v
}/ v$ n' C- p7 _- P: T
}- l3 `) F- m  w2 J" h
}
6 h& i& O; l& l4 Ivoid readDat()
1 i2 p# E9 t1 y+ G; f* M{9 u% s2 ]* @$ ^9 o
int i ;
) Z3 M1 o  ~$ k8 c* WFILE *fp ;, [- I: L9 \% i, v1 b
fp = fopen(in.dat, r) ;3 T5 U+ ^+ ~2 m2 _
for(i = 0 ; i 《 MAX ; i++) fscanf(fp, %d, &a[i]) ;
, m% x  V8 j9 n) E; ifclose(fp) ;
( C0 N' o' f$ X/ `/ ~}2 i. p2 X% i& t
void main()( U9 w9 d' _, ]$ P0 A, b/ G
{5 z2 L( v" J$ A; g3 w
int i ;, f0 R& \, T3 K* W
readDat() ;
/ D3 x8 k/ N0 k3 u9 JjsVal() ;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 20:48:17 | 显示全部楼层

全国计算机四级考试之试题练习(二)

for(i = 0 ; i 《 10 ; i++)
( p! A. y/ e, y/ _/ U, Uprintf(b[%d]=%d\n, i, b[i]) ;% {6 c# _. k1 _0 ^& l
writeDat() ;
7 |/ W% T. Y5 Q2 t0 P- ^}
" g0 q0 a4 u  T/ U+ {& X$ kwriteDat(), C( W, A1 x) W5 ]0 E: T* Q
{$ o7 G( U; V! ]- w) D5 S
FILE *fp ;
5 [2 [$ x' g; B6 |* w  s. b9 q1 Iint i ;
; |- v8 V3 Y1 C1 z1 Tfp = fopen(out.dat, w) ;! P- z7 Q9 }* v# b4 j
for(i = 0 ; i 《 10 ; i++) fprintf(fp, %d\n, b[i]) ;- ^: e9 @* |0 j- V
fclose(fp) ;) ^2 z, T' c# e) x  H
}
8 i& V* ^. w: Y7 [; W& v本题评析:1 _2 k$ _8 D" O4 Y, G
本题,是一道考察循环和数组排序的题目,通过20个一个平均一般可以安排两层循环,结合本题获得10个最大值的要求,在外层安排0-9的循环。
% F8 S0 O6 W4 n. @- n( r" l数组的排序一般可以使用冒泡和二分等算法排序,在本题目中,加入的因素是可以在获得数据后直接在数组中寻找到合适的位置,这样我们可以假设b已经是有序的数组,可以简化程序。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-16 17:41 , Processed in 0.189824 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表