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

     (28)以下程序的輸出結(jié)果是_______。
  fun(int x,inty,int z)
  {z=x*x+y*y;}
  main()
  {
  int a=3l:
  fun(5,2,a);
  printf("%d",a);
  }
  A)0  B)29  C)3l  D)無定值
  答案:C
  評析:本題中,a的值并沒有改變,因?yàn)閭鬟f到函數(shù)中的是變量值。
  
  (29)下列程序段的輸出結(jié)果是__________。
  void fun(、int *x,int *y)
  {primf("%d%d",*x,*y);*x=3;*y=4;}
  main()
  {
  int x=l,y=2;
  fun(&y,&x);
  printf("%d%d",x,y);
  }
  A)2 1 4 3  B)1 2 l 2  C)l 2 3 4  D)2 1 l 2
  答案:A
  評析:本題中函數(shù)傳遞的是變量的地址,如果形參在函數(shù)中發(fā)生改變,相對應(yīng)的實(shí)參也就有了改變。
  
  (30)對于下面的程序
  #include<stdio.h>
  #include<string.h>
  char*scmp(char*s1,char*s2)
  {
  if(strcmp(sl,s2)<0)retum(s1);
  else return(s2);
  }
  main()
  {
  int i;char string[20],str[3][20];
  for(I=0;i<3;i++)gets(str[i]);
  strcpy(string,scmp(str[0],str[1]));
  strcpy(string,scmp(string,str[2]));
  printf("%s\n",string);
  }
  若運(yùn)行時依次輸入:abcd、abba和abc三個字符串,則輸出結(jié)果為________。
  A)abcd  B)abba  C)abc  D)abca
  答案:B
  評析:本題自定義函數(shù)semp()的作用是比較字符串s1和s2的大小,如果sl<s2,函數(shù)返回s1的值,否則返回s2的值。若運(yùn)行時依次輸入abed、abba和abe三個字符串,執(zhí)行strcpy(string,scmp(str[O],str[1]));后,string的值為abba,再執(zhí)行strepy(string,scmp(string,str[2]));,由于scmp(string,str[2])返回string的值
  abba,再拷貝到字符串?dāng)?shù)組string中,所以本題輸出abba。
  
  (31)下列程序的輸出結(jié)果是__________。
  main()
  {
  char a[10]={9,8,7,6,5,4,3,2,1,O},*p=a+5;
  print"%d*--p);
  }
  A)非法  B)a[4]的地址  C)5  D)3
  答案:C
  評析:本題中char*p=a+5;即相當(dāng)于p=&a[5],而--p,是先要減1,則printf語句要輸出的值就是a[4]。
  
  (32)對下面的程序進(jìn)行編譯與連接生成可執(zhí)行文件c.exe,并在DOS命令提示符下輸入:
  c I said"I love China"!
  程序代碼如下:
  main(、int argc,char*argv[])
  {
  printf("%d",argC);
  }
  其輸出結(jié)果為________。
  A)4  B)5  C)6  D)7
  答案:B
  評析:帶參數(shù)的main()函數(shù)常用形式為:main(int argc,ehar*argv[])
  其中,參數(shù)的個數(shù)由C程序運(yùn)行時自動計算出來。字符型指針數(shù)組argv的第一個元素存放命令名,其后各個元素依次存放命令行中各個參數(shù)的首地址;整型變量arge用來記錄命令行中的參數(shù)個數(shù),文件名也作為一個參數(shù),對于命令行中雙引號內(nèi)的字符串,即使有空格分開,也只算是一個參數(shù),同時雙引號本身不算參數(shù)的內(nèi)容,因此本題argc的值等于5
  
  (33)下列程序的運(yùn)行結(jié)果是________。
  void fun(int *a,int *b)
  {
  int *k:
  k=a;a-b;b=k;
  }
  main()
  {
  int a=3,b=6,*x=&a,*y=&b;
  fun(x,y);
  printf["%d%d.f,a,b);
  }
  A)6 3  B)3 6  C)編譯出錯  D)0 0
  答案:B
  評析:本題中主函數(shù)里的x、y,fun函數(shù)里的a、b、k,這些都是指針,fun函數(shù)中只是將a、b這兩個指針交換了位置,而并沒有改變主函數(shù)中變量a、b的值。
  
  (34)若有定義:int*p[3];,則以下敘述中正確的是________。
  A)定義了一個基類型為int的指針變量p,該變量有三個指針
  B)定義了一個指針數(shù)組p,該數(shù)組含有三個元素,每個元素都是基類型為int的指針
  C)定義了一個名為+p的整型數(shù)組,該數(shù)組含有三個int類型元素
  D)定義了一個可指向一維數(shù)組的指針變量p,所指一維數(shù)組應(yīng)具有三個int類型元素
  答案:B
  評析:由于運(yùn)算符[]優(yōu)先級比*高,int*p[3];相當(dāng)于int *(p[3]);表示數(shù)組p的三個元素都是指針變量,且每個元素都是基類型為int的指針。
  
  (35)有以下程序:
  void swapl(int *a,int *b)
  {int *c=a;
  a=b,b=c;
  }
  void swap2(int *a,int *b)
  {
  int c=*a:
  *a=*b,*b=c;
  }
  main()
  (int a=lO,b=15;
  swapl(&a,&b);
  printf("%d,%d,",a,b);
  a=lO,b=15;
  swap2(&a,&b);
  printf("%d,%dt.,a,b);
  }
  其輸出結(jié)果為_________。
  A)15,10,10,15  B)15,10,15,10  C)10,15,10,15  D)10,15,15,10
  答案:D
  評析:C語言規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是"值傳遞",只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。在內(nèi)函數(shù)調(diào)用結(jié)束后,形參單元被釋放,實(shí)參單元仍保留并維持原值。本題中swapl()函數(shù)中,雖然改變了形參指針的值,但實(shí)參指針的值并沒有改變,所以執(zhí)行第一個printf后應(yīng)輸出10,15,;swap2()函數(shù)實(shí)現(xiàn)了交換兩個變量a和b的值,因此執(zhí)行第二個printf后輸出交換后的值15,10,所以本題答案為D。
  
  (36)當(dāng)調(diào)用函數(shù)時,實(shí)參是一個數(shù)組名,則向函數(shù)傳送的是__________。
  A)數(shù)組的長度       B)數(shù)組的首地址
  C)數(shù)組每一個元素的地址  D)數(shù)組每個元素中的值
  答案:B
  評析:當(dāng)調(diào)用函數(shù)時,實(shí)參是一個數(shù)組名,則向函數(shù)傳送的是數(shù)組的首地址,函數(shù)中的形參可定義成以下三種形式:
 、傩螀⒍x成數(shù)組;
 、谛螀⒍x成可變長數(shù)組;
  ③形參定義為指針變量。
  
  (37)下面的程序輸出結(jié)果是________。
  #define r16
  #ifr==16
  void p(int a)
  {
  printf("%x",a);
  }
  #else
  voidp(int a)
  {
  printf("%d",a);
  }
  #endif
  main()
  {
  p(32);
  }
  A)32  B)20  C)編譯時錯誤 D)運(yùn)行時錯誤
  答案:B
  評析:"#define r16"的作用是指定用標(biāo)識符r來代替16,因此程序編譯時只編譯#if部分,故程序運(yùn)行時,打印輸出十六進(jìn)制的32,即20。
  
  (38)設(shè)有以下聲明語句
  struct ex
  {  intx;floaty;char z;}example;
  則下面的敘述中不正確的是_________。
  A)struct是結(jié)構(gòu)體類型的關(guān)鍵字  B)example是結(jié)構(gòu)體類型名
  C)x,y,z都是結(jié)構(gòu)體成員名    D)struct ex是結(jié)構(gòu)體類型
  答案:B
  評析:example是結(jié)構(gòu)體變量名。
  
  (39)以下只有在使用時才為該類型變量分配內(nèi)存的存儲類說明是_________。
  A)auto和stmic      B)auto和register
  C)register和static   D)extem和register
  答案:B
  評析:extem、register、static、auto分別是定義外部變量、寄存器變量、靜態(tài)變量、自動變量,其中,自動變量和寄存器變量屬于動態(tài)存儲,調(diào)用時臨時分配單元;而靜態(tài)變量和外部變量屬于靜態(tài)存儲,在整個程序運(yùn)行時都存在。
  
  (40)下面程序運(yùn)行后的輸出結(jié)果是__________。
  fut(int**s,int p[2][3])
  {
  **s=p[l][1];
  }
  main()
  {
  int a[2][3]={1,3,5,7,9,1l},*p;
  p=(int*)malloc(sizeof(int));
  fut(&p,a);
  printf("%d\n",*p);
  }
  A)l  B)7  C)9  D)ll
  答案:C
  評析:本題a[2][3]定義為一個具有兩行三列的元素的數(shù)組,malloc()函數(shù)的作用是開辟了一個長度為sizeof(int)的內(nèi)存區(qū),p為指向整型數(shù)據(jù)的指針變量,程序調(diào)用fur()函數(shù),將第一行第一列對應(yīng)的元素值賦給一s,由于數(shù)組中第一行第一列對應(yīng)的元素為9,所以本題輸出值9。
  
  (41)以下程序的輸出結(jié)果是_________。
  main()
  {
  inti,k,a[10],p[3];
  k=5;
  for(I=O;i<10;i++)a[i]=i;
  for(i=0;i<3;i++)p[i]=a[I*(i+1)];
  fbr(i=O;i<3;i++)k+=p[I]*2;
  printf("%d\n",k);
  }
  A)20  B)2l  C)22  D)23
  答案:B
  評析:按照程序的流程走一遍,可以得到,p[O]=0,p[1]=2,p[3]=6;執(zhí)行三次k+=p[i]*2,相當(dāng)于k=5+0*2+2*2+6*2=21
  
  (42)當(dāng)執(zhí)行下面的程序時,其輸出結(jié)果為__________。
  union st
  {
  int a:
  charb:
  }
  main()
  {
  union st s:
  char*p=(char*)&s;
  s.a(chǎn)=Ox3132;
  s.b=Ox33;
  printf("%c",*p);
  }
  A)l  B)2  C)3  D)不確定
  答案:C
  評析:共用體類型結(jié)構(gòu)的特點(diǎn)是使幾個不同的變量共占同一段內(nèi)存,但在每一瞬時只能存放其中一種,而不是同時存放幾種,共用體變量中起作用的成員是最后一次存放的成員,在存入一個新的成員后原有的成員就失去作用。因此本題起作用的是成員b的值,所以程序打印輸出3。
  
  (43)當(dāng)執(zhí)行下面的程序時,如果輸入ABc,則輸出結(jié)果是________。
  #include"stdio.h"
  #include"string.H"
  main()
  { char ss[10]="12345";
  gets(ss);strcat(ss,"6789");
  printf("%s\n",ss);
  }
  A)ABC6789  B)ABC67  C)12345ABC6  D)ABC456789
  答案:A
  評析:strcat(str1,str2)合并字符串函數(shù)的作用是把str2所指字符串的內(nèi)容連接到strl字符串的后面,自動刪去strl原來串中的'\0'。為了進(jìn)行這項(xiàng)操作,要求strl所指的字符串后面有足夠的空間來容納'str2所指字符串中的內(nèi)容。函數(shù)值為strl所指第一個字符的地址。
  
  (44)main(im argo,char*argv[])
  {
  while(--argc>0)printf("%s",argv[argc]);
  printf("\n");
  }
  假定以上程序經(jīng)編譯和連接后生成可執(zhí)行文件PROG.ExE,如果在此可執(zhí)行文件所
  在目錄的Dos提示符下鍵入:PROG ABcDEFGHIJKL↙,則輸出結(jié)果為_________。
  A)ABCDEFG     B)IJHL
  C)ABCDEFGHIJKL   D)lJKLABCDEFGH
  答案:C
  評析:本題主函數(shù)帶有兩個參數(shù),一個int型變量argc,另一個是char型的一維一級指針數(shù)組argv。當(dāng)主函數(shù)被執(zhí)行時,系統(tǒng)自動將根據(jù)命令行的情況,分別給主函數(shù)的兩個參數(shù)賦值。Arge中存放命令行中命令字和參數(shù)的總和的個數(shù),argv用來存放命令行中命令字和所有參數(shù)的字符串的,并規(guī)定argv[0]存放命令字字符串,argv[1]用來存放第一個參數(shù)的字符串,argv[2]用來存放第2個參數(shù)的字符串,依次類推。
  題中argc的值是2,執(zhí)行完--argc后為1,輸出argv[1],此數(shù)組存在第一個參數(shù)的字符串ABCDEFGHIJKL。
  
  (45)設(shè)char型變量x中的值為10100lll,則表達(dá)式(2+x)"(~3)的值為_________。
  A)10101001  B)10101000  C)lll11101  D)0101010l
  答案:D
  評析:異或運(yùn)算符(n)的運(yùn)算規(guī)則是:參加運(yùn)算的兩個相應(yīng)位同號,則結(jié)果為0(假):異號則為-1(真)。
  取反運(yùn)算符(~)的運(yùn)算規(guī)則是:對一個二進(jìn)制數(shù)按位取反,即將0變?yōu)閘,l變?yōu)镺。本題(~3)是對3(二進(jìn)制形式為00000011)按位取反即11111100。
  表達(dá)式(2+x)n(~3)的值就等價于(00000010+10100111)^11111100,結(jié)果為01010101。
  
  (46)以下程序的輸出結(jié)果是________。
  long fun(int n)
  {  long s;
  if(n==1‖n==2)s=2;
  else s=n-fun(n-1);
  return S:
  }
  main()
  {primf("%ld\n",fun(3));}
  A)l  B)2  C)3  D)4
  答案:A
  評析:這是一個遞歸函數(shù)。遞歸的結(jié)束條件是,n=l或者n=2。按照程序順序,即可得出本題結(jié)果為l。
  
  (47)以下程序試圖把從終端輸入的字符輸出到名為abe.txt的文件中,直到從終端讀入字 符串撐號時結(jié)束輸入和輸出操作,但程序有錯
  #include<stdio.h>
  main()
  {
  FILE*fout:
  char ch:
  fout=fopen('abc.txt','w');
  ch=fgetc(stdin);
  while(chI_'))')
  {
  fputc(ch,fout);
  ch=fgetc(stdin);
  }
  fclose(fout);
  }
  出錯的原因是_________。
  A)函數(shù)fopen調(diào)用形式錯誤  B)輸入文件沒有關(guān)閉
  C)函數(shù)龜etc調(diào)用形式錯誤  D)文件指針stdin沒有定義
  答案:A
  評析:本題考查的是文件的打開函數(shù)fopen(),其調(diào)用方式通常為:FLIE*fp;fp=fopen(文件名,使用文件方式);,如:fp=fopen("abc.txt","w");表示要打開名字為abc.txt的文件,使用文件方式寫入。fopen函數(shù)帶回指向abc.txt文件的指針并賦給fp,即審指向文件abc.txt。
  
  (48)以下程序的輸出結(jié)果是_______。
  #define SQR(X) X*X
  main()
  {  int a=16,k=2,m=l;
  a/=SQR(k+m)/SQR(k+m);
  printf("%d\n",a);
  }
  A)16  B)2  C)9  D)l
  答案:B
  評析:c語言在預(yù)編譯時遇到帶實(shí)參的宏名,則按命令行中指定的字符串從左到右進(jìn)行置換。在做這題時,也不妨將運(yùn)用置換法。得到:a/=k+m*k+m/k+m*k+m=16/7=2。注:a為整型,所以在做除法時,自動取整。
  
  (49)假定建立了以下鏈表結(jié)構(gòu),指針p、q分別指向如圖所示的結(jié)點(diǎn),則以下可以將q所指結(jié)點(diǎn)從鏈表中刪除并釋放該結(jié)點(diǎn)的語句組是________。
  ↓p          ↓q
  8
  4
  3
  head→      →…→        →       →……
  datanext
  A)free(q);p->next=q->next;
  B)(*p).next=(*q).next;free(q);
  C)q=(*q).next;(*p).next=q;free(q);
  D)q=q->next;p->next=q;p=p->next;free(p);
  答案:B
  評析:選項(xiàng)A的錯誤在于,先已經(jīng)把q結(jié)點(diǎn)給釋放,無法再進(jìn)行余下語句了:選項(xiàng)c和D的錯誤在于因?yàn)橛辛藂=(*q).next做了賦值,則free(q)釋放了原來q后面的一個結(jié)點(diǎn)。
  
  (50)以下程序的輸出結(jié)果是__________。
  main()
  {  int x=05;char z='a';
  printf("%d\n",(x&1)&&(z<'z'));)
  A)0  B)1  C)2  D)3
  答案:B
  評析:"&"是位運(yùn)算符表示按位與運(yùn)算,"&&"是邏輯運(yùn)算符當(dāng)其兩邊的表達(dá)式都為真時返回真值。關(guān)系表達(dá)式()&1)&&(z<'z'),(x&1)為真,(Z<'Z')也為真,兩者相與,自然也為真,以整型輸出,則輸出1。
  
  二、填空題(每空2分,共40分)
  
  請將每一個空的正確答案寫在答題卡的【1】至【20】序號的橫線上,答在試卷上不得分。
  
  (1)棧的基本運(yùn)算有三種:入棧、退棧和 【1】 。
  答案:【1】讀棧頂元素
  評析:棧的基本運(yùn)算有三種:入棧、退棧和讀棧項(xiàng)元素。
  入棧運(yùn)算是指在棧項(xiàng)位置插入一個新元素。這個運(yùn)算有兩個基本操作:首先將棧頂指針進(jìn)一(即top加1),然后將新元素插入到棧頂指針指向的位置。
  退棧運(yùn)算是指取出棧頂元素并賦給一個指定的變量。這個運(yùn)算有兩個基本操作:首先將棧頂元素(棧項(xiàng)指針指向的元素)賦給一個指定的變量,然后將棧項(xiàng)指針退一(即top減1)。
  讀棧頂元素是指將棧頂元素賦給一個指定的變量。這個運(yùn)算不刪除棧頂元素,只是將它的值賦給一個變量。
  
  (2)在面向?qū)ο蠓椒ㄖ校畔㈦[蔽是通過對象的 【2】 性來實(shí)現(xiàn)的。
  答案:【2】封裝
  評析:軟件工程的基本原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗(yàn)證性。
  信息隱蔽是指采用封裝技術(shù),將程序模塊的實(shí)現(xiàn)細(xì)節(jié)隱藏起來,使模塊接口盡量簡單。
  
  (3)數(shù)據(jù)流的類型有 【3】 和事務(wù)型。
  答案:【3】變換型
  評析:典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。
  變換型:是指信息沿輸入通路進(jìn)入系統(tǒng),同時由外部形式變換為內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。
  事務(wù)型:在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。
  
  (4)數(shù)據(jù)庫系統(tǒng)中實(shí)現(xiàn)各種數(shù)據(jù)管理功能的核心軟件稱為 【4】 。
  答案:【4】數(shù)據(jù)庫管理系統(tǒng)或DBMS
  評析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。
  
  (5)關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一般有 【5】  、增加、刪除  和修改四種操作。
  答案:【5】查詢
  評析:關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一般有查詢、增加、刪除和修改四種操作。
  數(shù)據(jù)查詢:用戶可以查詢關(guān)系數(shù)據(jù)庫中的數(shù)據(jù),它包括一個關(guān)系內(nèi)的查詢以及多個關(guān)系間的查詢。
  數(shù)據(jù)刪除的基本單位是一個關(guān)系內(nèi)的元組,它的功能是將指定關(guān)系內(nèi)的指定元組刪除。
  數(shù)據(jù)插入僅對一個關(guān)系而言,在指定關(guān)系中插入一個或多個元組。
  數(shù)據(jù)修改是在一個關(guān)系中修改指定的元組和屬性。
  
  (6)下列程序的輸出結(jié)果是 【6】 。
  main()
  {
  int a=l,b=2;
  a=a+b;b=a-b;a=a-b;
  printf("%d,%d\n",a,b);
  }
  答案:【6】2,1
  評析:本題中,執(zhí)行a=a+b時,a=l,b=2,a=l+2=3;b=a-b時,a=3,b=2,b=3-2=1;a=a-b時,a=3,b=l,a=3.1=2;因此,本題的輸出是2,1.
  
  (7)下列程序的輸出結(jié)果是16.00,請?zhí)羁;?BR>  main()
  {
  int a=9,b=2:
  float x= 【7】 ,y=1.1,z;
  z=a/2+b*x/y+l/2;
  printf("%5.2tin",z);
  }
  答案:【7】6.6
  評析:本題,已知結(jié)果z=16.00,即16.0=a/2+b*x/y+l/2,分別把a(bǔ)、b代入,得到16.0=9/2+2"x/1.1+1/2。
  因?yàn)閍=9,a是整型,所以9/2的值在沒有進(jìn)行類型轉(zhuǎn)換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。
  
  (8)用以下語句調(diào)用庫函數(shù)malloc,使字符指針st指向具有11個字節(jié)的動態(tài)存儲空間,  請?zhí)羁铡?BR>  st=(chhr*) 【8】;
  答案:181 malloc(11)
  評析:malloc函數(shù)的格式是:void*(或char*)malloc(size),size表示應(yīng)分配的存儲區(qū)。此題要分配11字節(jié)的單元,把11代入即可。
  
  (9)下列程序段的輸出結(jié)果是 【9】 。
  main()
  {char b[]="Hello,you";
  b[5]=0;
  printf("%s\n",b);
  }
  答案:【9】Hello
  評析:字符串中,數(shù)值0或符號'\O'表示字符串的結(jié)束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結(jié)束標(biāo)志。因此,只輸出前五個字符,即Hello。
  
  (10)下列程序段的輸出結(jié)果是 【10】 。
  int n='c':
  switch(n++)
  {default:printf("error");break;
  case。a':
  case'A。:
  caseIb':
  tase'B':printf("good");break;
  case'c':case'C':printf("pass");
  case'd':case'D':printf("warn");
  }
  答案:【10】passwarn
  評析:n++是在執(zhí)行完其所在的語句后再加l,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出"pass";在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是:passwarn。
  
  (11)以下程序通過函數(shù)指針p調(diào)用函數(shù)mn,請?jiān)谔羁諜趦?nèi),寫出定義變量p的語句。
  void fun(int'x,int*y)
  { …… }
  main()
  { int a=lO,b=20;
  【11】。
  p=fun; p(&a,&b);
  ……
  }
  答案:【11】void(*p)();
  評析:要定義p為指向函數(shù)的指針變量,需寫成:void(*p)();注意+p兩側(cè)的括弧不可以省略,表示p先與*結(jié)合,是指針變量,再與后面的()結(jié)合,表示此指針變量指向函數(shù),這個函數(shù)無返回值(同fun函數(shù))。
  
  (12)以下程序的輸出結(jié)果 【12】 。
  main()
  {
  int p[7]={ll,13,14,15,16,17,18};
  int i=0,J=0;
  while(1<7&&p[i]%2==1)j+=p[i++];
  printf("%d\n"J);
  }
  答案:【12】24
  評析:本題程序定義了一維數(shù)組p,有七個數(shù)組元素,整型變量i,.j初值分別為0,當(dāng)while的條件表達(dá)式(i<7&&p[i]%2==1)的值為真時,執(zhí)行語句j+=p[i++];,如:當(dāng)i=0時,i<7為真,p[I]%2=11%2=1,表達(dá)式(p[i]%2:=1)的值為真,所以整個表達(dá)式(i<7&&p[i]%2==1)的值為真,執(zhí)行j=j+p[i++]=0+11=11,i=l;依次類推可以得出答案24。
  
  (13)下列程序的輸出結(jié)果是 【13】  。
  void fun(int *n)
  {
  while((*n)--);
  printf("%d",++(*n));
  }
  main()
  { int a=100;
  fun(&a);
  }
  答案:【13】0
  評析:在函數(shù)fun()中,while((*n)--)是先引用+n的值,再做(*n)--運(yùn)算,所以循環(huán)結(jié)束時*n的值為O,再做(+n)--運(yùn)算后,*n的值為-1;執(zhí)行++(*n)后,*n的值是O。
  
  (14)以下程序的輸出結(jié)果是 【14】 。
  main()
  {
  int arr[]={30,25,20,15,10,5},*p=arr;
  p++;
  printf("%d\n",*(p+3));
  )
  答案:【14】10
  評析:整型指針最初被賦的值是數(shù)組art的頭指針,即指向數(shù)組的第一個元素30,p++后,指針指向數(shù)組的下一個元素,即*p=arr[1]=25,在執(zhí)行*(p+3)時,則相當(dāng)于a[1+3],即10。因此,輸出應(yīng)為10。
  
  (15)以下程序運(yùn)行后的輸出結(jié)果是 【15】 。
  main()
  {
  char a[]="Language",b[]="Programe";
  char *p1,*p2;
  int k:
  pl=a,p2=b;
  for(k=0;k<=7;k++)
  if(*(pl+k)==*(p2+k))printf("%c",*(pl+k));
  }
  答案:【15】gae
  評析:本題定義了兩個字符串?dāng)?shù)組a[],b[],字符型指針變量p1和p2,且分別指向字符串?dāng)?shù)組a和b,執(zhí)行for循環(huán),當(dāng)if(*(pl+k)==*(p2+k))條件為真,執(zhí)行輸出*(pl+k)對應(yīng)的字符。即當(dāng)k=0時,*(pl+k)對應(yīng)的字符串?dāng)?shù)組a.中的字符L,*(p2+k)對應(yīng)的字符串?dāng)?shù)組b中的字符P,因此if(*(pl+k)==*(p2+k))條件為假,不執(zhí)行printf語句,依次類推,將字符串?dāng)?shù)組a和b中對應(yīng)位置上的字符一一比較,如果對應(yīng)位置上的字符相同,則輸出該字符。
  
  (16)下面程序把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個名為bi.dat的新文  件中,請?zhí)羁铡?BR>  #include "stdio.H"
  FILE *fp;
  main()
  {  char ch;
  if((fp=fopen( 【16】 ))==NULL)exit(0);
  while((ch=getchar())!='@')fputc(ch,fp);
  fclose(fp);
  }
  答案:【l6】"bi.Dat", "w"或"bi.dat","w+"或"bi.dat","r+"
  評析:本題的考點(diǎn)是fopen()函數(shù),此函數(shù)的格式是fopen(文件名,使用文件方式),題目的要求是將從鍵盤讀入的文本寫到文件中,因此選擇的打開方式應(yīng)該是"w"(只寫);蛘呤亲x寫"r+"或"w+"。
  
  (17)以下程序是從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們的和。請?zhí)羁铡?BR>  main()
  {
  int i,a[20],sum,count;
  sum=count= 【17】。
  for(i=0;i<20;i++)scanf("%d", 【18】  );
  for(i=0;i<20;i++)
  {
  if(a[I]>0)
  { count++;
  sum+=  【19】;
  }
  }
  printf("sum=%d,count=%d\n",sum,count);
  }
  答案:【17】0
  【18】&a[i]
  【19】a[i]
  評析:本題要求從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們的和。程序中首先要對存放正數(shù)個數(shù)的變量count及存放和值的變量sum初始化為0,所以第一空應(yīng)填:0。接著要求從終端讀入數(shù)據(jù)到數(shù)組中,可以通過scanf函數(shù)實(shí)現(xiàn),因此第二空應(yīng)填:&a[i]。最后通過sum+=a[i];語句累加正數(shù)a[i]的值到sum中,因此第三空應(yīng)填:a[i]。
  
  (18)若變量n中的值為24,則pint函數(shù)共輸出 【20】 行。
  void prnt(int n,int aa[])
  { int i;
  for(I=1;i<=n;i++)
  {  printf("%6d",aa[I]);
  if(!(i%5,J)printf("\n");
  }
  printf("\n");
  }
  答案:【20】5
  評析:本題的關(guān)鍵在于if(!(i%5))printf("\n");這句,即如果i可被5整除時,則換行。i值為24,可以被5整除4次,并余4,因此,prnt函數(shù)共輸出5行,最后一行有4個

上一頁  [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ū))