ccidnet????

出版日期:2004-9-06 总期号:584 本年期号:34

本期导读
综合报道
硬件世界
网络新时空 
整机与数码
软件与应用
教育信息化
培训与职场 
读者俱乐部 
等级考试典型题解析(下)
2004年4月二级C语言选择题
山西晋城职业技术学院 张双斌

  46.有以下程序:

  void f(int a[],int i,int j)

  { int t;

   if(i
   { t=a[i]; a[i]=a[j];a[j]=t;

   f(a,i+1,j-1);

   }

  }

  main( )

  { int i,aa[5]={1,2,3,4,5};

   f(aa,0,4);

   for(i=0;i<5;i++) printf("%d,",aa[i]); printf("\n");

  }

  执行后输出结果是( )。

  (A)5,4,3,2,1, (B)5,2,3,4,1, 

  (C)1,2,3,4,5, (D)1,2,3,4,5,

  答案:A

  解析:faa04 调用是地址双向传递。i=0,j=4,交换aa0 、aa4的值使aa5=52341接着递归调用fai+1j-1即fa13 ,交换aa1 、aa3的值使aa5=54321;接着递归调用fai+1j-1即fa22,由于i=j=2,退出函数调用,依次输出aa5的数组元素为“54321”。

  

  47. 有以下程序

  struct STU

  { char name[10];

   int num;

   int Score;

  };

  main( )

  { struct STU s[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},

   {"wangYin",20043,680},{"SunDan",20044,550},

   {"Penghua",20045,537}},*p[5],*t;

   int i,j;

   for(i=0;i<5;i++) p[i]=&&s[i];

   for(i=0;i<4;i++)

   for(j=i+1;j<5;j++)

   if(p[i]->Score>p[j]->Score)

   { t=p[i];p[i]=p[j];p[j]=t;}

   printf("5d %d\n",s[1].Score,p[1]->Score);

  }

  执行后输出结果是( )。

  (A)550 550 (B)680 680 

  (C)580 550 (D)580 680

  答案:C

  解析:本题算法类似于“冒泡排序”,它是依次将p0、p1、p2、p3、p4分别指向 s5中成员Score从低到高排列的数组单元,即537、550、580、680、703,而 s5数组的值不变,因此s1.Score=580,p1->Score=550。

  

  50. 有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);

  语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)

  #include

  main( )

  { FILE *fp; int i,a[4]={1,2,3,4},b;

   fp=fopen("data.dat","wb");

   for(i=0;i<4;i++) fwrite(&&a[i],sizeof(int),1,fp);

   fclose(fp);

   fp=fopen("data.dat","rb");

   fseek(fp,-2L*sizeof(int).SEEK_END);

   fread(&&b,sizeof(int),1,fp);/从文件中读取sizeof(int)字节的数据到变量b中/

   fclose(fp);

   printf("%d\n",b);

  }

  执行后输出结果是( )。

  (A)2 (B)1 

  (C)4 (D)3

  答案:D

  解析:本程序先是建立一个二进制文件data.dat,并从数组a4中取出四个整型变量数据块写入该文件,从该文件中位置指针处开始取一个整型变量数据块给变量b即b=3。

  (全文完)