首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經(jīng)濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內(nèi)審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 計算機等級考試 > 計算機二級 > C語言 > 模擬試題 > 正文

05年9月等級考試二級C語言考前密卷(三)


    (26)以下程序的輸出結(jié)果是________。
  main()
  { int k=4,m=1,p;
  p=func(k,m);printf("%d,",p);
  p=func(k,m);printf("%d\n",p);
  }
  func(int a,int b)
  { static int m:O,i=2;
  i+=m+l;m=i+a+b;
  return(m);
  }
  A)8,17  B)8,16  C)8,20  D)8.8
  答案:A
  評析:k和m的值帶入函數(shù)func中,第一次調(diào)用完func()后,其中m和i的值要保留,并在第二次調(diào)用時使用,這是因為兩者都是局部靜態(tài)變量。所以最后的結(jié)果是8和17。
  
  (27)以下程序調(diào)用findmax函數(shù)求數(shù)組中值最大的元素在數(shù)組中的下標,請選擇填空:
  #include<stdio.h>
  findmax(int*s,int t,int*k)
  { int p;
  for(p=0,*k=p;p<t;p++)
  if(s[p]>s[*k])___________;
  }
  main()
  { int a[10],i,k;
  for(i=0;i<10;i++)scanf("%d",&a[I]);
  findmax(a,lO,&k);
  printf("%d,%d\n",k,a[k]);
  }
  A)k=p  B)*k=p-s  C)k=p-s  D)*k=p
  答案:D
  評析:k是一個指針,它的值是一個地址,要通過它為主函數(shù)的變量改變數(shù)據(jù),必須使用*p,這樣就可以把一個下標數(shù)賦給p指針指向的那個內(nèi)存單元,所以橫線處應填入*k=p。
  
  (28)在執(zhí)行以下程序時,為了使輸出結(jié)果為t=4,給a和b輸入的值應該滿足的條件是_________。
  main()
  {
  int s,t,a,b;
  scanf("%d%d",&a,&b);
  s=l;t=I;
  if(a>O)s=s+1;
  if(a>b)t=s+t;
  else if(a==b)t=5;
  else t=20s:
  printf("t=%d\n",t);
  }
  A)a>b  B)a<b<0  C)0<a<b  D)0>a>b
  答案:C
  評析:要使輸出結(jié)果為t=4,必須要執(zhí)行else t=2*s;和if(a>b)t=s+t;語句。如果執(zhí)行if(a>b)t=s+t;語句,則條件為a>b,要求s=3,在該語句前面的語句中沒有條件可以滿足s=3;如果執(zhí)行else t=2*s;語句,則條件為a<b,要求s=2,需要執(zhí)行if(a>O)s=s+l;語句,所以應滿足條件0<a<b。
  
  (29)以下函數(shù)調(diào)用語句中含有_________個實參。
  func((expl,exp2),(exp3,exp4,exp5));
  A)l  B)2  C)4  D)5
  答案:B
  評析:實參可以是常量、變量或表達式,(expl,exp2)是逗號表達式,它的值是exp2的值;(exp3,exp4,exp5)是逗號表達式,它的值是exp5的值。所以該函數(shù)調(diào)用語句含有的實參個數(shù)是2,即:(expl,exp2)和(exp3,exp4,exp5)。
  
  (30)執(zhí)行以下程序后,輸出的結(jié)果是__________。
  main()
  {
  int y=10;
  do{y--;}while(--y);
  printf("%d\n",y--);
  }
  A)一l  B)l  C)8  D)0
  答案:D
  評析:do-while語句的特點是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立,當循環(huán)條件的值為0時循環(huán)結(jié)束。當y=O時循環(huán)結(jié)束,printf("%d\n",y--);語句是先輸出y再自減,所以輸出結(jié)果為0。
  
  (31)在C語言中,要求運算數(shù)必須是整型的運算符是__________。
  A)%  B)/  C)<  D)!
  答案:A
  評析:題目的四個選項中,(B)(c)(D)都不要求運算數(shù)必須為整數(shù),參與模運算(%)的運算數(shù)必須是整型數(shù)據(jù)。
  
  (32)c語言提供的合法的數(shù)據(jù)類型關(guān)鍵字是__________。
  A)DoubIe  B)noat  C)integer  D)Char
  答案:B
  評析:選項A和D中第一個字母大寫,不正確;
  選項c是PASCAL中的整型關(guān)鍵字,不是c語言中的關(guān)鍵字。
  
  (33)設(shè)有以下定義:
  int a[3][3]={1,2,3,4,5,6,7,8,9};
  int(*ptr)[3]=a,*p=a[0];
  則下列能夠正確表示數(shù)組元素a[1][2]的表達式是___________。
  A)*((*ptr+1)[2])  B)*(*(p+5))
  C)(*ptr+1)+2    D)*(*(a+1)+2)
  答案:D
  評析:+(p+5)所指向的數(shù)組元素是a[1][2],所以B不對;ptr所指向的是一個含有三個元素的一維數(shù)組,所以A和C是錯誤的。
  
  (34)若有以下說明:
  int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
  則值為6的表達式是__________。
  A)*p+6  B)*(p+6)  C)*p+=5  D)p+5
  答案:C
  評析:選項A,*p+6,其值等于1+6=7;選項B,*(p+6),其值等于a[6]=7;選項c,*p+=5,其值等于*p=*p+5=l+5=6;選項D,p+5是個地址值。
  
  (35)下列程序的輸出結(jié)果是__________。
  fun()
  {
  static int x=5:
  if(x++>5)printtf("%dft,x);
  else printf("%d.',)汁+);
  }
  mainO
  {
  fun();fun();
  }
  A)67  B)69  C)68  D)78
  答案:C
  評析:模塊的代碼開始運行后,使用static語句聲明的變量會一直保持其值,直至該模塊復位或重新啟動。在第1次調(diào)用fun函數(shù)時,x的初值為5,if語句的條件不成立,執(zhí)行else printf("%d"x++);語句,輸出6,執(zhí)行后x的值變?yōu)?,由于x是靜態(tài)局部變量,在函數(shù)調(diào)用結(jié)束后,它并不釋放,仍保留x=7。在第2次調(diào)用fun函數(shù)時,if語句的條件成立,執(zhí)行print掣%∽x);語句,輸出8。
  
  (36)下面程序的輸出是__________。
  main()
  {
  int m=Oxa,n=2;
  m+=n:
  printf(""%x\n"",m);
  }
  A)C  B)c  C)99  D)2
  答案:A
  評析:格式控制符x表示數(shù)據(jù)按十六進制形式輸出(不輸出前導符0x)。本題在執(zhí)行語句m十一n:后,m的值變?yōu)樽帜竎,又因為在輸出a-f時,如果格式控制符用x,則以大寫字母輸出;如果用x,則以小寫字母輸出,故本題答案為A。
  
  (37)以下程序的輸出結(jié)果是_________。
  #include<string.h>
  main()
  {char*a="abcdefghi";int k;
  fun(a);puts(a);
  }
  fun(char *s)
  { intx,y;char c;
  for(x=O,y=strlen(s)-l;x<y;x++,y--)
  { C=S[y];s[y]=s[x];s[x]=c;}
  }
  A)ihgfedcba  B)abcde電hi  C)abcdedcba  D)ihgfefghi
  答案:A
  評析:觀察子函數(shù)fun()可知,它是實現(xiàn)一個數(shù)組首末元素位置互相依次交換。聯(lián)系主函數(shù),可以看出,是對字符串中的元素依次進行首末位置的對調(diào)。
  
  (38)設(shè)有如下函數(shù)定義,則輸出結(jié)果為_________。
  Char*fun(char*str)
  {
  char*p=str;
  while(*p)
  {if(*p>'d')continue;
  p++;
  }
  return p;
  }
  main()
  {
  printF%s\n",fun("welcome!"));
  }
  A)welcome  B)come!  C)w  D)程序進入死循環(huán)
  答案:D
  評析:continue語句的作用是用于結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判定。由于'w'>'d'執(zhí)行continue語句,結(jié)束本次循環(huán)(即跳過p++;語句),還是繼續(xù)比較'w'>'d',程序進入死循環(huán)。
  
  (39)以下程序的輸出結(jié)果是_________。
  main()
  { union{char i[2];
  int k:
  }r;
  r.i[0]=2;r.i[1]=0;
  printf("%d\n",r.k);
  }
  A)2  B)l  C)0  D)不確定
  答案:A
  評析:根據(jù)共用體的定義可知:共用體r的成員k和成員i[2]是共用同一段內(nèi)存空間,所以,當程序給r.i[0]賦值后,實際上,共用體成員k的值也確定了,為2。所以打印輸出的結(jié)果應當為2。
  
  (40)設(shè)p1和p2是指向同一個int型一維數(shù)組的指針變量,k為int型變量,則下列不能正確執(zhí)行的語句是_________。
  A)l(=*pl+*p2;  B)p2=k;  C)pl=p2;  D)k=*pl*(*p2);
  答案:B
  評析:指針變量中只存放地址(指針),不要將一個整型量(或任何其他非地址類型的數(shù)據(jù))賦給一個指針變量,所以B是不正確的。
  
  (41)以下程序的輸出結(jié)果是__________。
  #define f(x) X*X
  main()
  { int a=6,b=2,c;
  c=f(a)/f(b);
  printf("%d\n",c);
  }
  A)9  B)6  C)36  D)18
  答案:C
  評析:觀察程序段可知,對帶參數(shù)的宏的展開只是將語句中的宏名后面括號內(nèi)的實參字符串代替#define命令行中的形參。本題中c=f(a)/f(b)用#define f(x)X*X代替得c=f(6)/f(2),即c=6*6/2*2,結(jié)果為36。
  
  (42)若有以下定義:
  char s[20]="programming",*ps=s;
  則不能代表字符。的表達式是__________。
  A)ps+2  B)s[2]  C)ps[2]  D)ps+=2,*ps
  答案:A
  評析:ps+2就是s[21的地址,即存放字符。的地址、所以A是錯誤的。
  
  (43)以下程序的輸出結(jié)果是_________。
  main()
  { int i;
  for(i=1;i<6;i++)
  { if(i%2){printf("∥);continue;}
  printf("引');
  }
  printf("\n");
  }
  A)#*#*#  B)#####  C)*****  D)*#*#*
  答案:A
  評析:i從1到5循環(huán)5次,i為1時,滿足條件,打印輸出"#":i為2時,條件為假,打印輸出"*"。也就是說,當i為奇數(shù)時,條件為真,程序打印輸出"#",否則,輸出"*"。
  
  (44)有如下程序
  main()
  {
  int n=9:
  while(n>6)
  {
  n--;
  printf("%d|.,n);
  }
  }
  該程序的輸出結(jié)果是__________。
  A)987  B)876  C)8765  D)9876
  答案:B
  評析:符合n>6的n只有7,8,9;所以循環(huán)次數(shù)為3。選項c、D可以排除。又因n在輸出之前要執(zhí)行n--,所以輸出結(jié)果只能是876。
  
  (45)下列程序是將一個十進制正整數(shù)轉(zhuǎn)化為一個八進制數(shù),在程序的空白處應填入的語句是__________。
  #include<stdio.h>
  main()
  {
  int I=9,a,b[10]={0};
  scanf("%d",&a);
  sub(a,b);
  for(;i>=O;i--)printf("%d",b[I]);
  }
  sub(int c,int d[])
  { int e,i=O;
  while(c!=0)
  {e=c%8;
  d[i]=e;
  __________;
  i++:
  }
  return;
  }
  A)c=e/8  B)C=C%8  C)C=C/8  D)c=e%8
  答案:C
  評析:本題主要考查了進制轉(zhuǎn)換的除余取整法。本算法中,是先對數(shù)c除8取余作為轉(zhuǎn)換后的8進制數(shù)的第l位,然后對c整除以8的商作同樣的操作,直到商為0為止,因此本題應選c。
  
  (46)執(zhí)行下面的程序段
  int x=35;
  char z='A';
  int B:
  B=((x&15)&&(z<'a'));
  后,B的值為____________。
  A)0  B)1  C)2  D)3
  答案:B
  評析:從整個表達式來看是個邏輯表達式,而與運算符"&&"的右邊的子表達式中由于z的值為"A",而A的ASCII碼的值小于a的ASCII碼值,所以這個子表達式的值為真,即l;在與運算符"&&"的左邊的子表達式是個基于位運算的子表達式,將<的值與15做位與運算,表達式值不為零,所以兩個子表達式的與值應當為1。
  
  (47)要為讀/寫操作打開一個字符文件,其正確的打開方式為__________。
  A)wr  B)r+  C)rb+  D)rw
  答案:B
  評析:在c中可以通過fopen函數(shù)來打開一個文件,在該函數(shù)的第二個參數(shù)中指定其打開方式。要以讀寫方式打開文件可以用"r++"、"w+"、"a+"來表示,要打開二進制文件,可以在打開方式中加上字母b,對于字符文件不要加b。
  
  (48)下列程序的輸出結(jié)果是_________。
  #include<stdio.h>
  main()
  {
  union
  {
  int k:
  chari[2];
  }*s,a;
  s=&a:
  s->i[0]=Ox39;s->I[l]=0x38;
  printf("%x\n",s->k);
  }
  A)3839  B)3938  C)380039  D)390038
  答案:A
  評析:在主函數(shù)定義了一個共用體變量a,及一個指向該變量的指針s。執(zhí)行s->i[0]=0x39;s->i[1]=0x38;,將分別共用體的第一字節(jié)及第二字節(jié)存入十六進制數(shù)據(jù)0x39及0x38,由于在共用體中,變量共同占用存儲空間,在輸出s->k.時,實際上就是輸出開始寫入的數(shù)據(jù),而對于PC機,在存放int型數(shù)據(jù)時,低位在前,高位在后,故本題輸出為3839。
  
  (49)若有以下定義:int t[3][2];能正確表示t數(shù)組元素地址的表達式是_______。
  A)&t[3][2]  B)t[3]  C)t[1]  D)*t[2]
  答案:C
  評析:選項A和B兩個表達式都越界了;選項D中,*t[2]是目標變量,即一個整型值,而不是地址值。
  
  (50)以下對結(jié)構(gòu)體類型變量的定義中,不正確的是___________。
  A)typedef struct aa
  {
  int n:
  float m:
  }aa;
  aatdl;
  B)#define aa struct aa
  aa{
  int n:
  float m:
  }tdl;
  C)struct
  {
  int n:
  float m:
  }aa;
  structaatdl;
  D)struct
  {
  int n:
  float m:
  }tdl;
  答案:C
  評析:在題的考查點是結(jié)構(gòu)體類型變量的定義。
  在選項c中,aa是一個結(jié)構(gòu)體變量,而不是結(jié)構(gòu)體名,所以struct aatdl;是非法的。
  
  二、填空題(每空2分,共40分)
  
  請將每一個空的正確答案寫在答題卡的【1】至【20】序號的橫線上,答在試卷上不得分。
  
  (1)設(shè)一棵完全二叉樹共有500個結(jié)點,則在該二叉樹中有 【1】 個葉子結(jié)點。
  答案:【l】250
  評析:所謂完全二叉樹是指除最后一層外,每一層上的結(jié)點數(shù)均達到最大值;在最后一層上只缺少右邊的若干結(jié)點。
  具有n個結(jié)點的完全二叉樹,其父結(jié)點數(shù)為int(n/2),而葉子結(jié)點數(shù)等于總結(jié)點數(shù)減去父結(jié)點數(shù)。本題n=500,故父結(jié)點數(shù)等于int(500/2)=250,葉子結(jié)點數(shù)等于500-250=250。
  
  (2)在最壞情況下,冒泡排序的時間復雜度為 【2】 。
  答案:【2】n(n-1)/2或O(n(n-1)/21
  評析:冒泡排序法是一種最簡單的交換類排序方法,它是通過相鄰數(shù)據(jù)元素的交換逐步將線性表變成有序。
  假設(shè)線性表的長度為n,則在最壞的情況下,冒泡排序需要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。
  
  (3)面向?qū)ο蟮某绦蛟O(shè)計方法中涉及的對象是系統(tǒng)中用來描述客觀事物的一個 【3】 。
  答案:【3】實體
  評析:面向?qū)ο蟮某绦蛟O(shè)計方法中涉及的對象是系統(tǒng)中用來描述客觀事物的一個實體,是構(gòu)成系統(tǒng)的一個基本單位,它由一組表示其靜態(tài)特征的屬性和它可執(zhí)行的一組操作組成。
  
  (4)軟件的需隸分析階段的工作,可以概括為四個方面: 【4】 、需求分析、編寫需求規(guī)格說明書和需求評審。
  答案:【4】需求獲取
  評析:軟件的需求分析階段的工作,可以概括為四個方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。需求獲取的目的是確定對目標系統(tǒng)的各方面需求。涉及到的主要任務是建立獲取用戶需求的方法框架,并支持和監(jiān)控需求獲取的過程。
  
  (5)  【5】  是數(shù)據(jù)庫應用的核心。
  答案:【5】數(shù)據(jù)庫設(shè)計
  評析:數(shù)據(jù)庫設(shè)計是數(shù)據(jù)庫應用的核心。在數(shù)據(jù)庫應用系統(tǒng)中的一個核心問題就是設(shè)計一個能滿足用戶要求,性能良好的數(shù)據(jù)庫,這就是數(shù)據(jù)庫設(shè)計。
  
  (6)若由以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達式是  【6】  。
  int w[10]:{23,54,10,33,47,98,72,80,61},*p=w;
  答案:【6】*(p+5)或p[5]
  評析:本題的考查點是通過指針引用數(shù)組元素。
  98是數(shù)組w的第5個元素(最開始的為第0個),而通過+p=w已經(jīng)將p指向了數(shù)組w,要想不移動指針p而引用98,可以有以下兩種方法:p[5]、*(p+5)。
  
  (7)以下程序的輸出結(jié)果是  【7】  。
  #define MAX(x,y)(x)>(y)?(x):(y)
  main()
  {
  int a=5,b=2,c=3,d=3,t;
  t=MAX(a+b,c+d)*lO;
  printf("%d\n",t);
  }
  答案:【7】7
  評析:宏替換后,表達式t=MAX(a+b,c+d)*10即變?yōu)椋簍=(a+b)>(c+d)?(a+b):(c+d)*10;
  由于(a+b)>(c+d)為真, 所以t=(a+b),即為7。
  
  (8)以下程序的輸出結(jié)果是  【8】  。
  main()
  {
  unsigned short a=65536;
  int b:
  primf("%d\n",b=a);
  }
  答案:【8】0
  評析:對于一個unsigned short來說,它能取的最大值是65535。這里給a賦值.65536,已經(jīng)超出了它的取值范圍,這樣它的高位將被截掉,只把低位賦給它(全零)。所以a的值實際為0。
  
  (9)若已經(jīng)定義im a=25,b:14,c=19;,以下三目運算符(?:)所構(gòu)成的語句的執(zhí)行結(jié)果是  【9】  。
  a++<=2&&b--<=2&&c++?printf("***
  a=%d,b=%d,c=%d\n",a,b,c):printf("a=%d,b=%d,c=%d\n",a,b,c);
  答案:【9】a=26,b=14,c=19
  評析:這種條件表達式的一般形式為:表達式17表達式2:表達式3,三目運算符的執(zhí)行順序:先求解表達式1,若非0則求解表達式2,此時表達式2的值就作為整個表達式的值,若表達式1的值為0,則求解表達式3,此時表達式3的值就作為整個表達式的值。c語言在做一系列表達式相與時,從左到右分別計算各表達式的值,一旦遇到一個表達式為false,則剩余的表達式都不再進行運算。該題中,a++(=2的值為false,則b--<=2和c++就都不再運算。
  
  (10)下面的if語句與y=(x>=10)?3*x-11:(x<1)?x:2'x.1;的功能相同,請補充完整。
  If(  【10】  )
  if(  【11】  )y=2*x-1;
  else y=x;
  else y=3*x-11:
  答案:【10】x<10
  【11】x>=1
  評析:條件表達式的一般形式為:表達式l?表達式2:表達式3
  條件運算符的執(zhí)行順序:先求解表達式1,若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值;若表達式1的值為O(假),則求解表達式3,表達式3的值就是整個條件表達式的值。y。(x>。10)?3。x-1 1:(x>=1)?x:2*x-1;的功能是先求(x>=1)?x:2*x-1:的值,所的的結(jié)果再與前面的語句構(gòu)成條件表達式進行求值。所以【10】應該填x<10,【11】應該填x>=1。
  
  (11)以下程序中用戶由鍵盤輸入一個文件名,然后輸入一串字符(用拌結(jié)束輸入)存放到此
  文件中,形成文本文件,并將字符的個數(shù)寫到文件的尾部。請?zhí)羁铡?BR>  #include<stdio.h>
  main()
  { FILE *fp;
  char ch,fname[32];im count=0;
  printf("Input the filename:");
  scanf("%s",fname);
  if((幣=fopen( 【12】 ,"w+"))==NULL)
  { print印Can't open file:%s\n",fname};exit(0);}
  printf("Enter data:in");
  while((ch=getchar())!_1≠)')
  { fputc(ch,fp);count++;}
  fprintf( 【13】 ,"\n%d\n",count);
  fclose(fp);
  }
  答案:【12】fname
  【13】fp
  評析:fopen()函數(shù)實現(xiàn)打開文件的功能,通常的調(diào)用方式為:FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一個橫線處要求填寫要打開文件的名字fname。fprintf()函數(shù)的一般調(diào)用方式為:fprintf (文件指針,格式字符串,輸出表列),所以第二個橫線處應填寫fb。
  
  (12)函數(shù)void fun(noat*sn,int n)的功能是:根據(jù)以下公式計算s,計算結(jié)果通過形參指針sn傳回;n通過形參傳入,n的值大于等于0。請補全程序。
  S=I-1/3+1/5-1/7+...+1/(2n+1)
  void fun(float*sn,int n)
  {  float s=O.O,w,f=-1.0;
  int i=0:
  for(I=0;i<=n;i++)
  { f= 【14】 *f;
  w=f/(2*i+1);
  S+=W:
  }
  【15】  =s;
  }
  答案:【14】-1或-1.0
  【15】*sn
  評析:由于在對s求和時,相鄰兩項的符號剛好相反,而在函數(shù)fun中沒有對數(shù)據(jù)進行取反的操作,故第一空的目的是對數(shù)據(jù)進行取反,以保證序列中相鄰兩項的符號不同。故第一個應填-1或-1.0。在執(zhí)行完循環(huán)體后,要將求和結(jié)果通過指針參數(shù)的形式傳遞給調(diào)用fun的函數(shù),故第二空應填*sn。
  
  (13)下面的函數(shù)strcat(strl,str2)實現(xiàn)將字符串str2拼接到字符串strl后面的功能。請?zhí)羁帐怪暾?BR>  Char*strcat(strl,str2)
  char*strl.*str2;
  { char*t=strl;
  while( 【16】 )strl++;
  while( 【17】 );
  return(t);}
  答案:【16】*strl或*str1!='\0'或*str1!=0或*strl!=NULL
  【17】*strl++=*str2++或*strl++=*str2,*str2++
  評析:函數(shù)strcat(strl,str2)實現(xiàn)將字符串str2連接到字符串strl后面,所以首先要找到字符串strl的串尾,根據(jù)c語言的語法規(guī)定,一個串的串尾一定是一個隱含字符"\0",而在程序中,對字符串中字符的訪問是通過兩/卜指針變量來完成的,因此要找到字符串strl的串尾,要判斷*strl是否為"\0",要找到字符串str2的串尾,要判斷*str2是否為"\0",程序中必須可以使字符串中字符逐一順序體現(xiàn),所以在題中我們應填寫"*str1"和"*strl++=*str2++"。
  
  (14)以下函數(shù)fun用于求兩個整數(shù)a和b的最大公約數(shù)。
  fun(a'b)
  int a'b;
  {int I,J,m,n;
  if(a>b)
  {m=a;a=b; 【18】;}
  i=a.j=b;
  while((n= 【19】 )!=O)
  {j=i;i= 【20】 ;}
  retum(i);
  }
  答案:【18】b=m
  【19】j%i
  【20】n
  評析:函數(shù)中的變量i和j分別存放兩個形參的最小數(shù)和最大數(shù),在語句i=a和i=b執(zhí)行之前,要將a和b分別變?yōu)樽钚?shù)和最大數(shù),當a>b時,程序使用中間變量將兩者交換,所以題中第一個空中應當填寫"b=m";為求兩個整數(shù)的最大公約數(shù),程序的where循環(huán)條件必須為j整除i成立,所以題_中第二個空中應當填寫"j%i";程序要通過i的值返回最大公約數(shù),因此在循環(huán)中要將每次整除的公約數(shù)賦給i,以保證最后返回的是兩個整數(shù)的最大公約數(shù),所以第三個空中應當填寫"n"。

文章搜索
版權(quán)聲明:如果計算機等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計算機等級考試網(wǎng)內(nèi)容,請注明出處。