学历改变命运
24小时客服:4008135555/010-82335555
当前位置:首页 > 笔记串讲 > 2012年自考“高级语言程序设计”经典习题及

2012年自考“高级语言程序设计”经典习题及答案(32)

2012年08月10日    来源:网络   字体:   打印

  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[argc]);

  printf(“\n”);

  }

  假定上述程序编译连接成目标程序名为p.exe,如果输入如下的命令:

  P 123 AAA BBB ↓(其中的↓表示回车)

  则输出结果是_____.

  “解”程序启动时,参数argc的值是4,由于循环条件是一即组>0,是先减1后判大于0,循环共进行三次,顺序输出argv[3],argv[2]和argv[1],即输出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[5].程序让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[1],“r”))== NULL) ||

  ((f2=fopen(argv[2],“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时,以程序启动时的第一和第二参数为文件名打开文件,井用循环将第一参数的文件内容复制到第二参数的文件。

  9.4 程序设计题

  1.设计一个复制文本文件的程序,源文件名和目标文件名随程序启动执行命令输入。

  “解”直接写出程序如下:

  # include

  FILE *rfp,*wfp;

  int main( int argc, char *argv[])

  {

  if( argc < 3) {

  printf(“Parameters missing ! \n”); return 0 ;

  }

  if(((rfp= fopen(argv[1],“r”))== NULL) ||

  ((=fopen(argv[2],“w”))== NLILL)) {

  printf(“不能打开文件\n”);

  return 0;

  }

  while( ! feof(rfp))

  fputc( fgetc(rfp), wfp);

  fclose(wfp);fclose(rfp);

  printf(“程序结束\n”);

  return l;

  }

关闭