a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 112|回复: 1

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

[复制链接]
发表于 2012-8-2 09:08:23 | 显示全部楼层 |阅读模式
 9.1  单项选择题6 D; }( v/ o% i4 w
  1.在下列代码中,正确的C代码是(     )
/ B3 Z2 q4 e, l$ m  ①# define MYNAME="ABC"
; T1 H, O. L: c  ②# include string.h+ i! E- }4 Z& A; f
  ③ for(i=0;i
回复

使用道具 举报

 楼主| 发表于 2012-8-2 09:08:24 | 显示全部楼层

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

  9.2    填充题
7 J* G2 p6 P# |% E2 H: a  1.设有定义"# define F(N) 2*N",则表达式 F(2+)的值是_____。
! H6 s( e6 @0 v; y/ o# j0 h9 [  【解】F(N)被定义成2*N,表达式F(2+3)被替换成2*2+3,其值是7。
1 R9 Y8 n, l! t8 b  2.设有下列程序:) x; V; g9 w' o2 d
  # include
9 y  P$ e% V5 |! r/ d& z  main(int argc,int *argv[])0 B; R( D* b% R
  { while( --argc> 0) printf("%s",argv[argc]);
5 Z' [. R% Y8 c  o  printf("\n");/ d, E3 k, \2 v2 v' Z5 j! T
  }4 o3 ?! m: I9 k# W' g* ?
  假定上述程序编译连接成目标程序名为p.exe,如果输入如下的命令:( J; R2 P; J) {! z
  P 123 AAA BBB ↓(其中的↓表示回车)
% b) H# T5 ]- \/ m" K  则输出结果是_____。9 d6 C* ]  O! J' l1 c& s2 T$ f/ i& a
  【解】程序启动时,参数argc的值是4,由于循环条件是一即组>0,是先减1后判大于0,循环共进行三次,顺序输出argv[3],argv[2]和argv[1],即输出BBBAAAl23。6 U  O- ?% \0 q, N9 }
  9.3    程序分析题: c# y/ D! C8 h* F
  1.阅读下面程序,写出程序运行结果。
) c0 M4 W- C8 F  # define PR(ar) printf("%d,", ar)$ c  R, s8 {. [$ w" N
  main()) l( {& R/ ]# R3 e- j1 r
  { int j,a[] ={1,3,5,7, 9,11,15}, * p= a+5;
( d# ?& B* Y. ]( E  for(j=3; j; j--)# N9 O" U' @  Z7 m, p
  switch(j) { case 1:
( r: V) {$ n2 z! a! P; P  case 2: PR( * p++); break;" }; t% N! W/ _9 @% l5 B; k- [0 |  w
  case 3: PR(*(--p));
' A( c4 a* i- L, @8 v% s" R  }
$ d; G/ @' r+ I3 l  printf("\n");7 Z( Q2 v) _! o4 n
  }# ^. t( g9 k/ a' }
  【解】程序的宏定义PR以d格式输出参数的值和远号字符。程序给数组a 赋初值,并由指针p指向元素a[5]。程序让j从3减至1,共循环三次。当j是3时,让p减1,并输出p所指元素的值9;当 j是2和1时,输出p所指的数组元素的值,并让p增1,顺序输出9和11。所以
: R* G8 W" v! C  程序输出:
+ _7 v6 V4 I+ c1 a9 J4 I. J  9,9,11; f3 v  n& x) x# |/ p4 D7 R
  2.设下面的程序经编译连接后生成的目标程序名为:  ABC.EXE,写出输入以下命令行后的输出:
  z* `& _. D* y5 Z4 e% m  ABC FILE1 FILE2 ↓(其中的↓表示回车); m& u; r! H. x) @6 u, ^
  # include. ?4 i5 z; W# v2 Q9 D
  main( int argc, char *argv[])
5 p8 Z' A' n$ C; S9 o" J  { int i;" A1 x* Q4 e" b+ e
  printf("%d \n",argc);
0 v% G: ]9 T" N, |) g3 a  for(i=O;i    printf("\n");" g) E# O  d* v7 k2 g: L) N$ @6 I
  }  Y6 J8 c7 [0 I9 U
  【解】程序首先输出参数argv的值3,然后循环三次,顺序输出ABC、FILE1和FILE2,并回车:
. `) r( Y/ H8 G6 L3 |6 {  3
, H( j7 G- q4 N/ J* N3 u/ L1 w& C  ABC FILE1 FILE2
/ H1 L+ R3 t6 G6 I' u- }- L/ b2 J  3.读程序,写功能。. a/ ]# s/ k# L" I
  # include
' O3 X, z1 Y8 S, z0 j' D) [  # include
1 m; M. |- b6 \! a2 A: |/ T  main(int argc, char *argv[])% K  v) d/ e- D9 ?' k$ t/ ^
  { FILE *fl,*f2;: x0 K: N* L/ ?, \9 o5 ]$ I6 X
  char ch;
  |4 ^' w, u! I7 l* d6 a; n  if(argc< 3)' P) P, ^- Q; `5 _% k4 x! h/ {
  { printf("Parameters missing! \n");exit(0); }
2 G& n4 M. |9 q+ ~8 W( Y' `  if(((f1 =fopen(argv[1],"r"))== NULL) ||0 v7 q+ r* }% k: O9 o, G
  ((f2=fopen(argv[2],"w"))== NULL))0 L- H0 o; M" l* p
  { printf("Can not open file! \n"); exit(0); }
( `7 u' Z. s: u% D  while(!feof(f1)) fputc(fgetc(f1),f2);/ S2 r/ G/ {+ E' B  n
  fclose(f1);5 V7 ]- S: j0 H& E
  fclose(f2);' O* M. w( N/ ~; g
  }
5 O9 t: e6 x) ^% W$ ]- M2 K  【解】程序在argc小于3时,报告出错信息结束。当argc大于2时,以程序启动时的第一和第二参数为文件名打开文件,井用循环将第一参数的文件内容复制到第二参数的文件。</p>
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 22:50 , Processed in 0.335534 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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