会计考友 发表于 2012-8-2 09:08:23

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

 9.1单项选择题
  1.在下列代码中,正确的C代码是(   )
  ①# define MYNAME="ABC"
  ②# include string.h
  ③ for(i=0;i

会计考友 发表于 2012-8-2 09:08:24

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

  9.2    填充题
  1.设有定义"# define F(N) 2*N",则表达式 F(2+)的值是_____。
  【解】F(N)被定义成2*N,表达式F(2+3)被替换成2*2+3,其值是7。
  2.设有下列程序:
  # include
  main(int argc,int *argv[])
  { while( --argc> 0) printf("%s",argv);
  printf("\n");
  }
  假定上述程序编译连接成目标程序名为p.exe,如果输入如下的命令:
  P 123 AAA BBB ↓(其中的↓表示回车)
  则输出结果是_____。
  【解】程序启动时,参数argc的值是4,由于循环条件是一即组>0,是先减1后判大于0,循环共进行三次,顺序输出argv,argv和argv,即输出BBBAAAl23。
  9.3    程序分析题
  1.阅读下面程序,写出程序运行结果。
  # define PR(ar) printf("%d,", ar)
  main()
  { int j,a[] ={1,3,5,7, 9,11,15}, * p= a+5;
  for(j=3; j; j--)
  switch(j) { case 1:
  case 2: PR( * p++); break;
  case 3: PR(*(--p));
  }
  printf("\n");
  }
  【解】程序的宏定义PR以d格式输出参数的值和远号字符。程序给数组a 赋初值,并由指针p指向元素a。程序让j从3减至1,共循环三次。当j是3时,让p减1,并输出p所指元素的值9;当 j是2和1时,输出p所指的数组元素的值,并让p增1,顺序输出9和11。所以
  程序输出:
  9,9,11
  2.设下面的程序经编译连接后生成的目标程序名为:ABC.EXE,写出输入以下命令行后的输出:
  ABC FILE1 FILE2 ↓(其中的↓表示回车)
  # include
  main( int argc, char *argv[])
  { int i;
  printf("%d \n",argc);
  for(i=O;i    printf("\n");
  }
  【解】程序首先输出参数argv的值3,然后循环三次,顺序输出ABC、FILE1和FILE2,并回车:
  3
  ABC FILE1 FILE2
  3.读程序,写功能。
  # include
  # include
  main(int argc, char *argv[])
  { FILE *fl,*f2;
  char ch;
  if(argc< 3)
  { printf("Parameters missing! \n");exit(0); }
  if(((f1 =fopen(argv,"r"))== NULL) ||
  ((f2=fopen(argv,"w"))== NULL))
  { printf("Can not open file! \n"); exit(0); }
  while(!feof(f1)) fputc(fgetc(f1),f2);
  fclose(f1);
  fclose(f2);
  }
  【解】程序在argc小于3时,报告出错信息结束。当argc大于2时,以程序启动时的第一和第二参数为文件名打开文件,井用循环将第一参数的文件内容复制到第二参数的文件。</p>
页: [1]
查看完整版本: 2012年软件水平考试软件设计师基础习题(9)