a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 66|回复: 0

[软件设计师] 2012年软件水平考试软件设计师基础习题(8)

[复制链接]
发表于 2012-8-2 09:08:23 | 显示全部楼层 |阅读模式
8.1  单项选择题
4 U9 ?+ O3 E' b# [+ h# ~  1.若与文件型指针中相关联的文件的当前读位置已到了文件的末尾,则函数feof(fp)的返回值是(  )( J" r4 x  p" W; |: v: v
  ①0               ②-l
% q+ x4 a2 ?9 B* v% B  ③非零值          ④NULL
: J8 T% j% e9 N) r: E) b( M  【解】当调用fopen函数时,系统将为实参文件设定一个存放文件读写控制信息的控制块。该控制块记录有关文件持征、使用方式,当前读写位置等文件状态,并将该控制块的指针返回,作为文件指针变量的值。以后程序通过该指针调用函数时,系统能访问到这个控制块,利用该文件控制块中的控制信息,正确完成文件的读或写。所以文件指针并不真正指向文件当前读写位置,但通过文件指针,系统能在文件控制块中访问文件的当前读写位置。若某文件与文件指针中相关联着,该文件的当前读写位置在文件的末尾时,函数调用feof(fp)的返回值是一个非零值。所以正确解答是③。9 u" g0 j  G' W+ t) }' w) Q' H. E
  2.下列语句中,将C定义为文件型指针的是(   )
' q* L* m# p4 |! O- c1 ], r# ^  ① FILE c;         ② FILE *c;        ③ file c;        ④ file *c;4 {/ ~$ {! G0 D4 f
  【解】如上题所述,文件控制块的类型已由系统命名为FILE。所以定义文件指针变量是C,就得用代码:“FILE *c;”。所以正确解答是②。
8 V1 H8 \0 n; \, `% z+ S- g7 E  3.标准库函数fputs(pl,p2)的功能是(     )
4 I  E1 c' b- a8 G4 Y  p9 l% D( v  ①从pl指向的文件中读一个字符率存入p2指向的内存
2 y5 H% D* I: E. _0 f2 \' ~) j  ②从p2指向的文件中读一个字符串存入pl指向的内存& T% D. J$ \1 h) |
  ③从pl指向的内存中的一个字符串输出到p2指向的文件  K. R) ]+ j9 \7 i9 Z
  ④从p2指向的内存中的一个字符串输出到pl指向的文件
  C1 }5 z  E& L  【解】标准函数调用fputs(p1,p2)完成的功能是将由字符指针pl所指的字符串内容输出到与文件指针p2相关联的文件中,即将从pl所指的内存中的字符串内容输出到p2所指向的文件中。所以正确解答是③。& Q; f2 ^( r' f8 A6 H; S' z
  8.2  填充题6 n4 p1 R7 P# B+ I% ?7 F7 y; O
  1."FILE *p"的作用是定义一个______,其中的"FILE"是在________头文件中定义的。" u& m# f9 s; ~. d
  【解】代码"FILE *p"的作用是定义一个文件指针变量,其中的FILE是在标准输入输出头文件stdio.h中定义的。
& J+ p9 `8 H! w% z  2.在对文件进行操作的过程中,若要求文件的现行位置回到文件的开头,应当调用的函数是_______函数。* O( r  M+ Q# E/ j; s
  【解】若要让文件随机地从某个现行位置回到文件的开头,可调用库函数rewind(  )。# _! W7 i& _2 q% o+ V! }
  3.下面的程序用来统计文件中字符的个数,请填空。
0 v9 t$ G& h0 |: r  o" `  # include  E( I% ?. A7 i
  # include4 w) o& ?4 Q5 ?9 x7 a) R
  main()
1 R4 j& d" `. e' g8 w$ ?  { FILE *fp;" c! L0 v! t1 W. \3 X& c* v
  long num=0;8 e- c% w% U( }/ _
  if(( fp =fopen("fname.day","r"))== NULL)$ r, ]" Q2 q" l$ L. B
  { printf("Cann’t open file! \n"); etit(0); }
' C" W; H; O1 X$ l5 d7 H. l  while________ { fgetc(fp); num++; }8 m: h' a$ G( S8 ]2 n
  printf("num =%d \n". num);, |, z" C4 l& N2 T! o( S  `6 Z0 S
  fclose(fp);' f7 N" a# J& Q5 O% R7 V
  }
* {) m. W3 @/ z  【解】若要统计文件中的字符个数,程序设计一个计数器,并预置该计数器为0值,并打开文件。在正确打开情况下,接着是一个循环。循环在文件未结束的情况下,反复读人字符,并增加字符计数器。所以循环条件可写成:!feof(fp)。程序有一个错误,由于num变量的类型是long型的,输出它的值应在格式符d之前加上格式修饰符’l’,不加这个修饰符只有在long型与int型实现相同的系统才是正确的。另外,要统计文件的长度,最好用二进制方式打开,通过读入的字节数求出文件的长。这是因为正文文件方式打开时,文件中的双字符(回车字符和换行字符)读入后将被当作一个字符存储,二进制方式不进行这样的转换。
- Z$ x; J9 I; |% l  }  8.3  程序分析题
! ]: b, C" r; ~: E# @* d: x  1.读程序,写功能。 & N% ?' J2 c% p/ v/ p4 O) l! I9 [9 H
  # include
$ u& f0 p' p6 B$ T4 g" V  # include, m2 P" d! i$ c. Q+ T; o
  main()+ R2 O% h! V; o4 r7 M# l) i
  { FILE *f1,* f2;, [9 s9 A9 `9 [1 H* L4 Y  q: v
  int k;( S8 I+ R: P" I# O6 u/ ?
  if(( f1= fopen("c:\\tc \\ pl.c","r" )== NULL)8 E- }4 t! `2 |& R( l
  { printf("Can not open file! \n");
% ?8 a7 j# e, N: J1 I  exit(0);! Q! ]/ c/ F8 N
  }
' ^4 B; i0 b7 n8 {4 }3 T  if((f2= fopen("a:\\ pl.c","w" ))== NULL)
  U! ^( Q6 q0 G3 Y5 X8 S  { printf("Can not open file! \n" );, ]! t& E7 ~- O6 Z5 }
  exit(0) ;
0 S3 ^8 F! T$ r  }
+ e$ b3 f$ Y8 d# T; a# h9 L& a; `  for( k=1;k
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 21:50 , Processed in 0.199122 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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