網(wǎng)站首頁
分類導(dǎo)航
試題中心
下載中心
英語學(xué)習(xí)
繽紛校園
考試論壇
網(wǎng)站留言
客服中心
 05年9月等級考試二級C語言考前密卷(九)
【字體:
05年9月等級考試二級C語言考前密卷(九)
http://1glr.cn 來源:ChinaITLab 點擊: 更新:2005-9-15

    (28)已定義以下函數(shù):
  fun(char*p2,char*p1)
  {while((*p2=*p1)!='\0'){pl++;p2++;}}
  函數(shù)的功能是__________。
  A)將p1所指字符串復(fù)制到p2所指內(nèi)存空間
  B)將pl所指字符串的地址賦給指針p2
  C)對p1和p2兩個指針?biāo)缸址M(jìn)行比較
  D)檢查p1和p2兩個指針?biāo)缸址惺欠裼?\O'
  答案:A
  評析:由于在while循環(huán)的條件中執(zhí)行了*p2=*pl運(yùn)算,其作用是將*pl中的內(nèi)容復(fù)制到*p2中,而(*p2=*p1)!='\0'的作用是判斷當(dāng)前字符是否為字符串結(jié)束字符'\O'。在循環(huán)體中p1++,p2++的目的是移動字
  
  (29)有以下程序
  void fun(char*c,int d)
  {*c=*c+1;d=d+1;
  printf("%c,%c,",*c,d);
  }
  main()
  {char a:。A',b。'a';
  fun(&b,a);printf("%c,%c\n",a,b);
  )
  程序運(yùn)行后的輸出結(jié)果是_________。
  A)B,a,B,a  B)a,B,a,B  C)A,b,A,b  D)b,B,A,b
  答案:D
  評析:將a,b代入函數(shù)得+&b=。&b+1=a+l=b,所以打印出第一個字母b;
  a=a+l=A+l=B,打印出第二個字符B;
  a='A',輸出字母A;
  b由于是按地址傳到函數(shù)而被修改,為'b',輸出字母b
  
  (30)以下程序中函數(shù)sort的功能是對a所指數(shù)組中的數(shù)據(jù)進(jìn)行由大到小的排序。
  void sort(int a[],im n)
  {intiJ,t;
  for(i=O;i<n-1;i++)
  for=i+1 0<n0++)
  if(a[i]<aD)) {t=-a[I];a[I=a[j];a[j]=t;}
  }
  main()
  {int aa[10]:{1,2,3,4,5,6,7,8,9,10},i;
  sort(&aa[3],5);
  for(i=0;i<lO;i++)primf("%d,",aa[I]);
  printf("\n");
  )
  程序運(yùn)行后的輸出結(jié)果是________。
  A)l,2,3,4,5,6,7,8,9,10,  B)10,9,8,7,6,5,4,3,2,1,
  C)l,2,3,8,7,6,5,4,9,10,  D)l,2,10,9,8,7,6,5,4,3,
  答案:C
  評析:本題并不是對數(shù)組的所有元素進(jìn)行排序,而是對從a[3]開始往后的4個元素進(jìn)行排序。
  
  (31)對于基類型相同的兩個指針變量,不能進(jìn)行的運(yùn)算是________。
  A)<  B)=  C)+  D)
  答案:C
  評析:對于指針變量,除了常規(guī)的*、&、=運(yùn)算外,還可以對其比較地址的大小,計算兩指針變量的差值,但對于地址執(zhí)行+、*、/、%等算術(shù)運(yùn)算都是無意義的。
  
  (32)有以下程序
  main()
  {char a[]={'a','b','c','d','e','f','g','h','\O'};int I,J;
  i=sizeof(a); j=strlen(a);
  printf("%d,%d\n",I,J);
  }
  程序運(yùn)行后的輸出結(jié)果是________。
  A)9,9  B)8,9  C)1,8  D)9,8
  答案:D
  評析:sizeof()函數(shù)是計算字符數(shù)組的長度,因為'\0'也是一個字符,要計算在內(nèi)。strlen()是計算字符串長度的函數(shù),遇到'\0'即認(rèn)為是字符串結(jié)束,不把空字符計入字符串的長度。
  
  (33)以下不能正確定義二維數(shù)組的選項是_________。
  A)int a[2][2]={{1},{2}}  B)int a[][2]={l,2,3,4}
  C)int a[2][2]={{l},2,3}  D)int a[2][]={{1,2},{3,4}}
  答案:D
  評析:在二維數(shù)組進(jìn)行初始化時,可以省略數(shù)組的一個維度,但省略的維數(shù)只能是高維部分,不能是低維。對于多維數(shù)組的初始化時,也是同樣處理,因此,本題答案應(yīng)選D,其它選項均能對數(shù)組進(jìn)行正確的初始化。
  
  (34)有一函數(shù)
  ┏  l x>O
  y=┨  O x=O
  ┗ -1 x<O
  以下程序段中不能根據(jù)x的值正確計算出y的值的是___________。
  A)if(x>O)y=l;else if(x==O)y=0;else y=-l;
  B)y=O;if(x>O)y=1;else if(x<O)y=-1;
  C)y=0;if(x>=0)if(x>O)y=1;else y=-l;
  D)if(x>=0)if(x>O)y=l;else y=O;else y=-1;
  答案:C
  評析:本題應(yīng)當(dāng)注意if與else的配對關(guān)系。從最內(nèi)層開始,else總是與它上面最近的(未曾配對的)if配對。
  
  (35)以下程序中的函數(shù)reverse的功能是將a所指數(shù)組中的內(nèi)容進(jìn)行逆置。
  void reverse(int a[],im n)
  {int i,t;
  for(i=O;i<n/2;i++)
  {t=a[i];a[i]=a[n-l-i];a[n-1-i]=t;}
  }
  main()
  {int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0;
  reverse(b,8);
  for(i=6;i<10;i++)s+=b[I];
  printf("%d\n",s);
  }
  程序運(yùn)行后的輸出結(jié)果是
  A)22  B)10  C)34  D)30
  答案:A
  評析:本題并不是將整個數(shù)組中的內(nèi)容逆置,而是逆置前8個元素。逆置后的數(shù)組為:8,7,6,5,4,3,2,1,9,10通過for循環(huán)計算b[6]+b[7]+b[8]+b[9]即2+1+9+10=22。
  
  (36)執(zhí)行下面的程序段后,變量k的值為___________。
  int k=3,s[2];
  s[0]=k;k=s[1]*10;
  A)不確定  B)33  C)30  D)10
  答案:A
  評析:由于本題中未對數(shù)組進(jìn)行初始化,因此程序運(yùn)行時,數(shù)組s中各個元素的值都是不確定的,雖然在代碼中對s[O]進(jìn)行了賦值,但沒有對s[1]進(jìn)行賦值,故執(zhí)行l(wèi)(=s[1]+10;后,k的值不確定。
  
  (37)有以下程序
  #include<string.h>
  main()
  { char'p="abcde\0fghjik\O";
  printf("%d\n",strlen(p));
  }
  程序運(yùn)行后的輸出結(jié)果是__________。
  A)12  B)15  C)6  D)5
  答案:D
  評析:"\0"是字符串結(jié)束標(biāo)志,當(dāng)遇到此標(biāo)志時字符串已結(jié)束。所以字符串的長度為5。
  
  (38)程序中頭文件t)rpel_h的內(nèi)容是:
  #define N 5
  #define Ml N*3
  程序如下:
  #include"type 1.h"
  #define M2 N*2
  main()
  { int i;
  i=MI+M2;
  printf("%d\n",i);
  }
  程序編譯后運(yùn)行的輸出結(jié)果是_________。
  A)lO  B)20  C)25  D)30
  答案:C
  評析:宏定義就是用一個指定的標(biāo)識符(即名字)來代表一個字符串,它的一般形式為:
  #define  標(biāo)識符   字符串
  這種方法使用戶能以一個簡單的名字代替一個長的字符串,因此把這個標(biāo)識符(名字)稱為"宏名"。
  
  (39)若有以下的程序段,則在執(zhí)行for語句后,*(*(pt+1)+2)表示的數(shù)組元素是________。
  int t[3][3],*pt[3],k;
  for(k=0;k<3;k++)pt[k]=&t[k][O];
  A)t[2][0]  B]t[2][2]  C]t[1][2]  D]t[2][1]
  答案:C
  評析:在題面中定義了一個二維數(shù)組l,及一個一維指針數(shù)組pt,在循環(huán)語句中分別對指針數(shù)組賦值為二維數(shù)組t的第k行首元素的地址。*(pt+1),表示的是數(shù)組pt中下標(biāo)為1的元素的值,而該值為二維數(shù)組t的第l行(從第0行算起)的首元素的地址,故*(*(pt+1)+2)表示的是數(shù)組t中t[1][2]的元素的值。
  
  (40)以下敘述中錯誤的是_________。
  A)二進(jìn)制文件打開后可以先讀文件的末尾,而順序文件不可以
  B)在程序結(jié)束時,應(yīng)當(dāng)用fclose函數(shù)關(guān)閉已打開的文件
  C)利用fread函數(shù)從二進(jìn)制文件中讀數(shù)據(jù),可以用數(shù)組名給數(shù)組中所有元素讀入數(shù)  據(jù)
  D)不可以用FILE定義指向二進(jìn)制文件的文件指針
  答案:D
  評析:每個被使用的文件都在內(nèi)存中開辟一個區(qū),用來存放文件的有關(guān)信息,這些信息是保存在一個名為FILE的結(jié)構(gòu)體類型的結(jié)構(gòu)體變量中的。而文件又分為ASCII文件和二進(jìn)制文件,所以,、可以用FILE定義指向二進(jìn)制文件的文件指針。
  
  (41)有以下程序
  #include<string.h>
  main(int argc,char *argv[])
  { inti,len=0;
  for(i=1;i<argc;i++)len+=strlen(argv[I]);
  printf("%d\n",len);
  )
  程序編譯連接后生成的可執(zhí)行文件是exl.exe,若運(yùn)行時輸入帶參數(shù)的命令行是:
  exl  abcd  efg  10↙
  則運(yùn)行的結(jié)果是________。
  A)22  B)17  C)12  D)9
  答案:D
  評析:本題主函數(shù)帶有兩個參數(shù),一個int型變量argc,另一個是char型的一維一級指針數(shù)組argv。當(dāng)主函數(shù)被執(zhí)行時,系統(tǒng)自動將根據(jù)命令行的情況,分別給主函數(shù)的兩個參數(shù)賦值。argc用于存放命令行中命令字和參數(shù)的總和的個數(shù)4,argv用來存放命令行中命令字和所有參數(shù)的字符串,并規(guī)定argv[0]存放命令字字符串exl,argv[1]用來存放第一個參數(shù)的字符串a(chǎn)bcd,argv[21用來存放第二個參數(shù)的字符串e龜,argv[3]用來存放第三個參數(shù)的字符串10。那么for循環(huán)將循環(huán)3次分別將argv數(shù)組中元素的長度累加到len中,所以答案為9。
  
  (42)若有以下說明和定義:__________。
  fun(*C){…}
  main()
  {int(*a)()=fun,(*b)(),w[10],c;}
  在必要的賦值后,對fun函數(shù)調(diào)用正確的是_________。
  A)a=a(w);  B) (*a)(&C);  C)b=*b(w);  D)fun(b);
  答案:B
  評析:在主函數(shù)中定義了二個指向函數(shù)的指針a,b,其中指針a指向函數(shù)fun,指針b未初始化。對于選項A、c,其返回類型是錯誤的,對于D,其調(diào)用的參數(shù)是錯誤的,選項B是正確的,其相當(dāng)于調(diào)用函數(shù)fhll(&C);。
  
  (43)有以下程序
  intfa(intx、
  {returnx*x;}
  int fb(intxl
  {returnX*X*x;}
  int f(int(*f1)(),int(*f2)(),int x)
  {return f2(x)-fl(x);)
  main()
  { int i;
  i=f(fa,fb,2);printf("%d\n",i);
  }
  程序運(yùn)行后的輸出結(jié)果是
  A) 4  B)1  C)4  D)8
  答案:C
  評析:f[fa,fb,2]即為fb(2)-fa(2)=2*2*2-2*2=8-4=4。
  
  (44)有以下程序
  void ss(char *s,char t)
  {while(*s)
  { if(*s==t)*s=t-'a'+'A';
  s++:
  }
  }
  main()
  {char strl[100]="abcddfefdbd",c='d';
  ss(strl,C); printf("%s\n",strl);
  }
  程序運(yùn)行后的輸出結(jié)果是_________。
  A)ABCDDEFEDBD  B)abcDDfefDbD
  C)abcAAfefAbA  D)Abcddfefdbd
  答案:B
  評析:在主函數(shù)中因為c被賦值為字符'd.,所以函數(shù)的功能是將字符串中d字母轉(zhuǎn)換為大寫。
  
  (45)下面程序運(yùn)行后的輸出結(jié)果是__________。
  intf()
  {
  static int i=O:
  int s=l:
  s+=i;i++;
  return s:
  }
  main()
  {
  inti,a=0;
  for(I=0;i<5;i++)a+=f();
  printf("%dha",a);
  )
  A)20  B)24  C)25  D)15
  答案:D
  評析:在主函數(shù)main中,當(dāng)I=0時,f()返回1;當(dāng)I=1時,f()中保留前次執(zhí)行后的i,返回2,i為n時;f()返回n+l,,在主函數(shù)main中一共調(diào)用了5次f(),其返回值分別是1,2,3,4,5,對各次的返回值進(jìn)行累加,其和為15。
  
  (46)設(shè)有如下定義:
  struct sk
  {int a;
  float b:
  }data;
  int*p;
  若要使p指向data中的a域,正確的賦值語句是_________。
  A)p=&a;  B)p=data.a(chǎn);  C)p=&data.a(chǎn);  D)*p。data.a(chǎn)
  答案:C
  評析:將data.a(chǎn)的起始地址賦給指針變量p,也就是使p指向data.a(chǎn)。
  
  (47)有以下程序
  #include<stdlib.h>
  struct NoDE
  {int num;struct NoDE。next;}
  main()
  {struct NODE *p,*q,*r;
  p=(struct NoDE*)malloc(sizeof(struct NODE));
  q=(struct NODE*)malloc(sizeof(struct NODE));
  r==(struct NODE*)malloc(sizeof(struct NODE));
  p->num=10;q->num=20;r->num=30;
  p->next=q;q->next=r;
  pdntf("%d\n",p->num+q->next->num);
  }
  程序運(yùn)行后的輸出結(jié)果是____________。
  A)10  B)20  C)30  D)40
  答案:D
  評析:p->num即為10,q->next->num即為r->num,為30,所以p->num+q->next=>num=10+30=40。
  
  (48)若有以下說明和定義
  typedef int *INTEGER
  INTEGER p,*q;
  以下敘述正確的是________。
  A)p是int型變量       B)p是基類型為int的指針變量
  C)q是基類型為int的指針變量 D)程序中可用INTEGER代替int類型名
  答案:B
  評析:typedef int*INTEGER;(聲明INTEGER為整型指針類型):
  INTEGER p,*q;(定義p,*q為整型指針類型),所以p是基類型為int的指針變量;*q是基類型為int的指針變量;程序中可用*INTEGER代替int類型名。
  
  (49)有以下程序
  main()
  {unsigned char a,b,c;
  a=0x3;b=a︱0x8;c=b<<l;
  printf("%d%d\n",b,C);
  }
  程序運(yùn)行后的輸出結(jié)果是___________。
  A)-11 12  B)-6 -13  C)12 24  D)l1 22
  答案:D
  評析:0x3表示16進(jìn)制表,"︱"為按位或,"<<"為按位左移,將a,b轉(zhuǎn)換為二進(jìn)制數(shù)進(jìn)行位運(yùn)算,再將結(jié)果以十進(jìn)制打印出,結(jié)果為11 22。
  
  (50)以下程序中函數(shù)f的功能是將n個字符串,按由大到小的順序進(jìn)行排序。
  #include<string.h>
  void f(char p[][lO],int n)
  {chart[201;int ij;
  for(i=0;i<n-1;i++)
  for 0=i+l;j<n;j++)
  if[strcmp(p[i],p[j])<O]
  {strcpy(t,p[i]);strcpy(p[i],pD)};strcpy(p[j],t);)
  }
  main()
  {char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};int i;
  f(p,5);print"%d\n",strlen(p[0]));
  }
  程序運(yùn)行后的輸出結(jié)果是__________。
  A)6  B)4  C)5  D)3
  答案:C
  評析:比較字符串的大小是從字符串的第一個字母開始比較,如果第一個字母相同則比較第二個字母,以此類推,直至字符串結(jié)束。
  
  二、填空題(每空2分,共40分)
  
  請將每一個空的正確答案寫在答題卡的【l】至【20】序號的橫線上,答在試卷上不得分。
  
  (1)測試的目的是暴露錯誤,評價程序的可靠性;而 【1】 的目的是發(fā)現(xiàn)錯誤的位置并  改正錯誤。
  答案:【1】調(diào)試
  評析:軟件測試的目標(biāo)是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定:調(diào)試是一個與測試有聯(lián)系又有區(qū)別的概念。具體來說,測試的目的是暴露錯誤,評價程序的可靠性,而調(diào)試的目的是發(fā)現(xiàn)錯誤的位置,并改正錯誤。
  
  (2)在最壞情況下,堆排序需要比較的次數(shù)為 【2】 。
  答案:【2】O(nlog2n1)
  評析:在最壞情況下,冒泡排序所需要的比較次數(shù)為n(n-1)/2;簡單插入排序所需要的比較次數(shù)為n(n-1)/2;希爾排序所需要的比較次數(shù)為O(n^1.5);堆排序所需要的比較次數(shù)為O(nlog2n)。
  
  (3)若串s="Program,,,則其子串的數(shù)目是 【3】 。
  答案:【3】29
  評析:串s中共有7個字符,由于串中字符各不相同,則其子串中字符個數(shù)為0的串有1個,即空串;字符個數(shù)為1的字符串有7個;字符個數(shù)為2的字符串有6個;字符個數(shù)為3的字符串有5個;字符個數(shù)為4的字符串有4個;字符個數(shù)為5的字符串有3個;字符個數(shù)為6的字符串有2個;字符個數(shù)為7的字符串有1個;共有1+2+3+4+5+6+7+1=29。
  
  (4)一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體""項目主管""與實體""項目""的聯(lián)系屬于 【4】 的聯(lián)系。
  答案:【4】l對多或1:N
  評析:兩個實體集間的聯(lián)系實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有3種,即一對一(1:1)的聯(lián)系、一對多(1:N)或多對一(N:1)的聯(lián)系和多對多(N:N)的聯(lián)系。
  
  (5)數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和 【5】 三種。
  答案:【5】關(guān)系模型
  評析:數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,是用戶與數(shù)據(jù)庫之間的一個標(biāo)準(zhǔn)接口,其總是基于某種數(shù)據(jù)模型,可以分為層次模型、網(wǎng)狀模型和關(guān)系模型。
  
  (6)以下程序運(yùn)行后的輸出結(jié)果是 【6】 。
  main()
  { int x=10,y=20,t=O;
  if(x==y)t=x;x=y;y=t;
  printf("%d,%d\n",x,y);
  }
  答案:【6】20,0
  評析:在本題給出的程序中,if條件為假,不執(zhí)行t=x;語句,而去執(zhí)行x=y;和y=t;語句,所以打印出x的值為20,y的值為0;但是如果程序這樣寫{t=-x;x=y;y=t;},那么就是實現(xiàn)x與y的交換。
  
  (7)若已知a=20,b=lO,則表達(dá)式!a>b的值為 【7】 。
  答案:【7】O
  評析:c語言中邏輯運(yùn)算符按由高到低順序依次為:邏輯非(!)、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯與(&&)和邏輯或(1f)、賦值運(yùn)算符。所以表達(dá)式!a>b先運(yùn)算!a的值為0,再運(yùn)算0>b,所以結(jié)果為0。
  
  (8)以下程序運(yùn)行后的輸出結(jié)果是 【8】 。
  main()
  {intx=15;
  while(x>10&&x<50)
  {x++;
  if(x/3){x++;break;)
  else continue;
  }
  print("%d\n",x);
  }
  答案:【8】17
  評析:當(dāng)x=15時,while條件為真,執(zhí)行x++;,這時x的值為16,if條件為真,執(zhí)行x++:后跳出循環(huán)體,此時x的值為17a
  
  (9)有以下程序:
  #include<stdio.h>
  main()
  {charc;
  while((c=getchar())!d?。)putchat(--C);
  }
  程序運(yùn)行時,如果從鍵盤輸入:Y?N?↙,則輸出結(jié)果為 【9】 。
  答案:【9】X
  評析:getchar()只能接收一個字符,當(dāng)從鍵盤輸入Y?N?↙,系統(tǒng)判斷出第一個字符Y!='?'條件為真,輸出x,繼續(xù)循環(huán),這時while條件不成立,循環(huán)結(jié)束。
  
  (10)以下函數(shù)的功能是計算s=1+1/2!+1/3!+……+l/n!,請?zhí)羁铡?BR>  double fun(int n)
  {double s=0.0,fac=1.O;int i;
  for(i=1;i<=n;i++)
  { fac=fac  【10】;
  s=s+fac;
  }
  return s;
  }
  答案:【10】/i或*1.0/i或*1/I或*(1.0/i)或/(double)i
  評析:該程序?qū)崿F(xiàn)的功能是求各個因式的和,觀察表達(dá)式可以看出,只要將i的值的倒數(shù)乘以fac就得到每個因式的值。
  
  (11)下面程序的運(yùn)行結(jié)果是: 【11】 。
  #define N 10
  #define s(x)X*X
  #define f(x)(x*x)
  main()
  {int i1,i2;
  il=1000/s(N);i2=1000/f(N);
  printf("%d%d\n",t1,i2);
  }
  答案:【11】1000 10
  評析:根據(jù)宏定義,變量i1的值為1000/10*10=1000,變量i2的值為1000/(10*lO)=lO
  
  (12)以下程序的運(yùn)行結(jié)果是 【12】 。
  main()
  {
  static int a[]={l,2,3,4};
  int iJ=2;
  for(I=l;i<3;i++)
  {n(a);J++;}
  printf(%d,%d\n",a[0],J);
  }
  f1(int a[4])
  {
  int I,J=l;
  for(I=1;i<4;i+|+)
  a[I-1]=a[I];
  j++;
  }
  答案:【12】3,4
  評析:用static對局部變量聲明,則為該變量分配的空間在整個程序執(zhí)行期間始終存在。n函數(shù)中定義的變量為局部變量,主函數(shù)中j的初值為2,循環(huán)執(zhí)行了兩次,所以j=4。主函數(shù)通過對n的調(diào)用輸出原數(shù)組a[3]的值。
  
  (13)下面程序的運(yùn)行結(jié)果是: 【13】 。
  typedef union student
  {char name[10];
  long sno;
  char sex;
  float score[4];
  }STU;
  main()
  {STU a[5];
  primf("%d\n",sizeof(a));
  }
  答案:【13】80
  評析:共用體變量所占的內(nèi)存長度等于最長的成員的長度,所以變量、STU所占的字節(jié)數(shù)等于其成員score[4]所占的字節(jié)數(shù),即為16個字節(jié),最終打印出共用體數(shù)組a[5]的長度為J6*5=80。
  
  (14)若f1)已正確定義為一個文件指針,d1.dat為二進(jìn)制文件,請?zhí)羁,以便?讀"而打開此文件:f1):fopen(【14】 );。
  答案:【14】"d1.dat"."rb"
  評析:ANSIC規(guī)定了標(biāo)準(zhǔn)輸入輸出函數(shù)庫,用fopen()函數(shù)來實現(xiàn)打開文件,其調(diào)用方式為(fb已定義為一個文件指針):fb=fopen(文件名,使用文件方式)。
  
  (15)以下程序的功能是將無符號八進(jìn)制數(shù)構(gòu)成的字符串轉(zhuǎn)換為十進(jìn)制的整數(shù),請?zhí)羁铡?BR>  #include<stdio-b>
  main()
  {
  char*p,s[6];
  int n:
  p=s;
  gets(p);
  n=*p-'0';
  while(【15】 !='\0')n=n*8+*p-'0';
  printf("%d\n",n);
  }
  答案:【15】*++D
  評析:本題中,主要是通過將8進(jìn)制數(shù)各位上的數(shù)乘以對應(yīng)位的權(quán)值,然后累加轉(zhuǎn)換成10進(jìn)制數(shù)的。在程序中,n=*p-'0',用于將8進(jìn)制字符串的最高位轉(zhuǎn)換成10進(jìn)制字符。在while循環(huán)中,通過不斷對已轉(zhuǎn)換的10進(jìn)制數(shù)*8+*p-'0'形成新的10進(jìn)制數(shù)。由于在該循環(huán)中沒有其它地方對指針p的值進(jìn)行更改,要實現(xiàn)對8進(jìn)制字符串的遍歷,必須要對其進(jìn)行自加,而在循環(huán)的外面己處理了第1個8進(jìn)制字符,故應(yīng)該是采用先自加的形式,同時要對自加后的p所對應(yīng)的字符進(jìn)行判斷以確定該字符串是否結(jié)束,故該空應(yīng)填*++p。
  
  (16)設(shè)有定義:int n,*k=&n;,以下語句將利用指針變量k讀寫變量n中的內(nèi)容,請將語  句補(bǔ)充完整。
  scanf("%d",【16】);
  printf("%d",【17】);
  答案:【16】k
  【17】*k
  評析:本題中的笫一空,要求輸入變量n的地址,而指針變量k指向整型變量n,故填寫k.第二空要求打印輸出變量n的值,應(yīng)該填入*k。
  
  (17)以下程序的功能是:從鍵盤輸入一行字符,存入一個字符數(shù)組中,然后輸出該字符  串,請?zhí)羁铡?BR>  #include<ctype.H>
  #include<stdio.h>
  main()
  {
  char str[8l],*sptr;
  int i:
  for(I=0;i<80;i++)
  { str[I]=getchar();
  if(str[I]=='\n')break;
  }
  str[i]= 【18】 ;
  sptr=str;
  while(*sptr)putchar(*sptr【19】 );
  }
  答案:【18】0或NULL
  【19】++
  評析:在for循環(huán)中,其作用是直接從標(biāo)準(zhǔn)輸入設(shè)備獲取字符,直到遇到回車符結(jié)束。由于在while循環(huán)輸出字符時,是根據(jù)*sptr來判斷字符串是否結(jié)束,故在字符串的結(jié)束部分必須添加上字符'\0'。對于第二空,要實現(xiàn)對字符串的遍歷,必須要進(jìn)行自加操作,以使下次訪問時能夠訪問下一個字符,故第二空應(yīng)為++。
  
  (18)fun函數(shù)的功能是:首先對a所指的N行N列的矩陣,找出各行中的最大的數(shù),再求這N個最大值中的最小的那個數(shù)作為函數(shù)值返回。請?zhí)羁铡?BR>  #include<stdio.h>
  #define N 100
  int fun(im(*a)[N])
  { int row,col,max,min;
  for(row=0;row<N;row++)
  {for(max=a[row][0],col=1;coI<N;col++)
  if(【20】]max=a[row][col];
  if(row==0)min=max;
  else if(max<min)min=max;
  }
  retummin;
  }
  答案:【20】max<a[row][col]或max<=a[row][col]或a[row][col]>max或a[row][col]>=max
  評析:本題空格所在的if條件要求判斷出每一行中的最大數(shù),應(yīng)該填寫條件max<a[row][col]。

上一頁  [1] [2] 

文章錄入:ak47    責(zé)任編輯:ak47  
 版權(quán)聲明
   如果本網(wǎng)站所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本網(wǎng)內(nèi)容,請注明出處。
 發(fā)表評論
關(guān)于本站 網(wǎng)站聲明 廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接   
Copyright © 2004-2006 考試吧 (Exam8.com) All Rights Reserved 
中國科學(xué)院研究生院中關(guān)村園區(qū)(北京市海淀區(qū))