查看全部128種考試
1
2
3
4
5
6
7
8
9
10
admin  
【字體: 二級C語言典型題解析
二級C語言典型題解析
djks.exam8.com 來源:考試吧(Exam8.com) 更新:2004-9-8 14:02:00 計算機等級考試 考試論壇

2004年4月二級C語言選擇題


(46)有以下程序

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

       {  int  t;

          if(i<j)

          {  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");

       }

       執(zhí)行后輸出結果是

A)5,4,3,2,1,   B)5,2,3,4,1,   C)1,2,3,4,5,   D)1,5,4,3,2,

答案:A
解析:f(aa,0,4)調用是地址雙向傳遞.i=0,j=4,交換aa=[0]、aa[4]的值使aa[5]={5,4,3,2,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("%d  %d\n", s[1].Score, p[1]->Score);

       }

       執(zhí)行后輸出結果是

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)字節(jié))

       #include    <stdio.h>

       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)字節(jié)的數據到變量b中*/

          fclose(fp);

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

       }

       執(zhí)行后輸出結果是

A)2   B)1   C)4   D)3

答案:D
解析:本程序先是建立一個二進制文件data.dat,并從數組a[4]中取出四個整型變量數據塊寫入該文件,從該文件中位置指針處開始取一個整型變量數據塊給變量b即b=3.

轉帖于:計算機等級考試_考試吧
文章搜索  
看了本文的網友還看了:
計算機等級考試權威輔導教材: 訂書電話:010-62168566  更多>>>
網友評論
昵 稱: *  評 分: 1分 2分 3分 4分 5分
標題:   匿名發(fā)表    (共有條評論)查看全部評論>>
版權聲明 -------------------------------------------------------------------------------------
  如果計算機等級考試網所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系,我們將會及時處理。如轉載本計算機等級考試網內容,請注明出處。
關于本站  網站聲明  廣告服務  聯(lián)系方式  付款方式  站內導航  客服中心  友情鏈接  考試論壇  網站地圖
Copyright © 2004-2008 考試吧計算機等級考試網 All Rights Reserved    
中國科學院研究生院權威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認證  十佳網絡教育機構  經營許可證號:京ICP060677