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

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


     (26)有以下程序:
  #include<stdio.h>
  main(){
  char c[6];
  int I=0:
  for(;i<6;c[-]=getchar(),i++);
  for(I=0;i<6;i++)putchar(c[i]);
  primf("\n");
  }
  如果從鍵盤上輸入:
  ab<回車>
  c<回車>
  def<回車>
  則輸出結果為_________.
  A)a  B)a  C)ab  D)abcdef
  b   b   c
  c   c   d
  d   d
  e
  f
  答案:C
  評析:1.getchar():此函數的作用是從終端(或系統(tǒng)隱含指定的輸入設備)輸入一個字符。
  2.putchar():此函數的作用是向終端輸出一個字符,也可以輸出控制字符。
  本題在輸入字符時,ab和c后面的回車符分別賦給了c[2]和e[4],所以,正確答案為c。
  
  (27)在調用函數時,如果實參是簡單變量,它與對應形參之間的數據傳遞方式是_______。
  A)地址傳遞       B)單向值傳遞
  C)由實參傳遞給形參,再由形參傳遞給實參
  D)傳遞方式由用戶指定
  答案:B
  評析:c語言規(guī)定,實參變量對形參變量的數據傳遞是"單向值傳遞",只由實參傳給形參。在內存中,實參單元與形參單元是不同的單元。調用結束后,實參單元仍保留并維持原值。
  
  (28)下面程序
  #include<stdio.h>
  #include<string.h>
  main()
  { char*p1="abc",*p2="ABC",str[50]="xyz";
  strcpy(str+2,strcat(p1,p2));
  printf("%s\n",str);
  }
  的輸出是_________。
  A)xyzabcABC    B)zabcABC
  C)yzabcABC     D)xyabcABC
  答案:D
  評析:strcat(pl,p2)將字符串abcABC放到了*pl所指向的存儲單元中;strcpy在本題將abcABC復制到str+2所指向的存儲單元中,即覆蓋原str數組中的字符z及其后的所有字符,故str的值為"xyabcABC"。
  
  (29)下面程序
  int aa[3][3]:{{2},{4},{6}};
  main()
  {  int i,*p:&aa[0][0];
  for(I=0;i<2;i++){
  if(i==0)aa[I][i+l]=*p+1;
  else++p;
  printf("%d'.,。p);
  }
  }
  的輸出是__________。
  A)23  B)26  C)33  D)36
  答案:A
  評析:觀察題目,可以發(fā)現,*p=&aa[01[o]語句實際是將數組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時,aa[0][1]=3,+p=2;*p輸出的是指針所指向的數組值,此時p所指向的是aa[O][O],輸出2,而i=l時執(zhí)行了++p操作使指針向后移動指向了aa[O兒1],所以在輸出*p時應為3。
  
  (30)以下程序的輸出結果是_________。
  #include<stdio.h>
  #include<s~ing.h>
  fun(char*w,int n)
  {
  char t,*s1,*s2;
  s1=w;s2=w+n-l:
  while(s1<s2)
  {
  t=*s1++:
  *sl=*s2--;
  *s2=t;
  }
  }
  main()
  {
  char*p;
  p="1234567";
  fun(p,strlen(p));
  puts(p);
  }
  A)1234567  B)7654321  C)1711717  D)717717l
  答案:C
  評析:在子函數fun中,sl為字符串w的起始地址,s2為字符串的結束地址(字符'\O'除外),當執(zhí)行循環(huán)結束循環(huán),w="1711717"。
  
  
  (31)下面程序
  main()
  { int x=100,a=10,b=20,okl=5,ok2=0;
  if(a<b)
  if(b!=15)
  if(10k1) x=l;
  else i"oL2)x。10;
  X=-1;
  Printf(%d\n",x);
  }
  的輸出是________。
  A)-1  B)0  c)1  D)不確定的值
  答案:A
  評析:第一個判斷值為真,過渡到下一個判斷,第二個判斷為真,過渡到第三個判斷……如此循環(huán),在打印輸出語句的前一行,程序給變量x賦了值,為.1,所以,無論前期如何變化,最后的x值依然為-1。
  
  (32)下面程序
  main()
  {
  int x=32:
  printf("%d\n",x=x<<1);
  }
  的輸出是________。
  A)100  B)160  C)120  D)64
  答案:D
  評析:<<是c語言中規(guī)定的左移運算符,例如,a=a<<2,這個語句即是將a的二進制數左移兩位,左移一位相當于該數乘于2,左移兩位相當于該數乘以2的2次方。所以,x<<1=32.2=64。
  
  (33)設有以下定義和語句,輸出的結果是(用small模式編譯,指針變量占2個字節(jié))_________。
  
  struct date
  {
  long *cat;
  struct date *next;
  double dog;
  }too;
  printf("%d",sizeof(too));
  A)20  B)16  C)14  D)12
  答案:D
  評析:sizeof函數計算已知類型所占的字節(jié)數。結構體變量所占內存長度是各成員占的內存長度之和。指針變量占2個字節(jié),所以cat和*next各占2個字節(jié);double型占8個字節(jié),故too共占12個字節(jié)。
  
  (34)以下程序的輸出結果是_________。
  #include<stdio.h>
  #define FUDGE(y)    2.84+y
  #define PR(a)printf  ("%d",(int)(a))
  #define PRINT l(a)   PR(a);putchar('\n')
  main()
  { intx=2;
  PRINTl(FUDGE(5)*x);
  }
  A)ll  B)12  C)13  D)15
  答案:B
  評析:在程序中如果有帶實參的宏,則按#define命令行中指定的字符串從左到右進行置換,如果串中包含宏中的形參,則將程序語句中相應的實參代替形參。將實參帶入已經定義的宏中,可以得出答案燈"12"。
  
  (35)以下程序段給數組所有的元素輸入數據,請選擇正確答案填入:
  #include<stdio.h>
  main()
  {
  int a[10],i=O;
  while(i<l0)scanf("%d",________);
  :
  :
  }
  A)a+(i++)  B)&a[i+l]  C)a+i  D)&a[++I]
  答案:A
  評析:a就是數組a的首地址,而a+x是數組中第x個元素的地址,。所以在四個選項中,選項B和c只能輸入一個數據,選項D不能給a[O]輸入數據,只有A可以完成給數組所有的元素輸入數據的任務。
  
  (36)以下對枚舉類型名的定義中正確的是________。
  A)enum a={one,two,three};      B)enum a{one=9,two=-1,three};
  C)enum a={"one","two","three"}; D)enum a{"one","two","three"};
  答案:B
  評析:聲明枚舉類型用enum開頭。例如:enum weekday(sun,mon,tue,wed,thu,fri,sat);
  說明:1、在c編譯中,對枚舉元素按常量處理,同時可以改變他們的值。2、枚舉值可以用來做判斷比較。3、一個整數不能直接賦給一個枚舉變量。
  
  (37)字符(char)型數據在微機內存中的存儲形式是________.
  A)反碼      B)補碼
  C)EBCDIC碼   D)ASCII碼
  答案:D
  評析:將一個字符常量放到一個字符變量中,實際上并不是把該字符本身放到內存單元中去,而是將該字符的ASCII碼值放到存儲單元中。
  
  (38)下面程序的輸出是________。
  typedef union
  { long x[2];
  int y[4];
  char z[8];
  }MYTYPE;
  MYTYPE them;
  main()
  { printf("%d\n",sizeof(them));}
  A)32  B)16  C)8  D)24
  答案:C
  評析:sizeof(x)是一個標準c函數,它的返回值是x型的數據結構占用的內存字節(jié)數。題目中定義了一個共用體,共用體變量在內存中所占的長度等于最長的成員的長度。
  
  (39)有以下程序,程序運行后的輸出結果是_________。
  Int f(intb[][4])
  { int I,J,s=O;
  for(j=00<4;j++)
  {
  I=j;
  if(I>2)i=3-j;
  s+=b[i][j];
  }
  return s:
  }
  main()
  {
  int a[4][4]={{1,2,3,4},{O,2,4,6},{3,6,9,12},{3,2,1,0}};
  printf("%d\n",f(a));
  }
  A)22  B)ll  C)18  D)16
  答案:D
  評析:本題通過函數調用對數組a[0][0]、a[1][l]、a[2112]、a[0][3]進行求和,然后用return語句返回s的值。
  
  (40)不能把字符串:Hello!賦給數組b的語句是_________。
  A)charb[10]={'H','e','1','l','0','!'};
  B)char b[10]={'h','e','1','l''O','!'};
  C)charb[10];strcpy(b,"Hello!");
  D)char b[10]="Hello!";
  答案:B
  評析:在c語言中,大寫字母和小寫字母被認為是兩個不同的字符,因此,"hello!"和"Hello!"是兩個不同的字符串。
  
  (41)下面程序的輸出是_________。
  main()
  { int x=3,y=6,a=0;
  while(x++!=(y-=1))
  { a+=1;
  if(y<x)break;
  }
  primf("x=%d,y=%d,a=%d\n",x,y,a);
  }
  A)x=4,y=4,a=1  B)X=5,y=5,a=1
  C)x=5,y=4,a=3  D)x=5,y=4,a=l
  答案:D
  評析:注意的是x++中x值的引用時,這里應當是先引用,后自加,具體執(zhí)行過程如下:
  第一次while循環(huán):條件為真,執(zhí)行a=a+l=l;此時,x的值已為4,判斷y<x不成立,繼續(xù)執(zhí)行循環(huán);
  第二次while循環(huán):條件為假,此時x的值已為5,退出while循環(huán),執(zhí)行printf。
  
  (42)若有程序:
  fun(int a,int b)
  {
  static int c=O:
  c+:a+b:
  return C;
  }
  main()
  {
  int x=5,y=3,z=7,r;
  r=fun((y,x+y),z);
  r=fun(x,y);
  printf("%d\n",r);
  }
  上面程序的輸出結果是__________。
  A)23  B)15   C)19  D)18
  答案:A
  評析:stoic聲明的外部變量只限于被本文件引用,而不能被其他文件引用。用static來聲明一個變量的作用有:①對局部變量用static聲明,則為該變量分配的空間在整個程序執(zhí)行期間始終存在;②全部變量用static聲明,則該變量的作用域只限于本文件模塊(即被聲明的文件中)。調用第一個fun,其兩個實參的值為(3,5+3)與7即8與7,在函數fun執(zhí)行結束返回15。第二次調用fun時,由于stat~為靜態(tài)類型,其值保留,執(zhí)行fun(5,3)后,其返回值為23,故選A。
  
  (43)下面程序的輸出是________。
  main()
  {char*s="12134211";
  int vl=0,v2=0,v3=0,v4=0,k;
  for(k=0;s[k];k++)
  switch(s[k])
  {  default:v4++;
  case'l':vl++;
  case'3':v3++;
  case'2':v2++;
  }
  printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
  }
  A)vl=4,v2=2,v3=l,v4=l  B)vl=4,v2=9,v3=3,v4=l
  C)vl=5,v2=8,v3=6,v4=l  D)vl=8,v2=8,v3=8,v4=8
  答案:C
  評析:當switch后面括弧內的表達式的值與某一個case后面的常量的表達式的值相等時,就執(zhí)行此caSe后面的語句,若所有的case中的常量表達式的值都沒有與表達式的值匹配的,就執(zhí)行default后面的語句。
  
  (44)下面程序的輸出是_________。
  main()
  { int k=11;
  printf("k=%d,k=%o,k=%x\n",k,k,k);
  }
  A)k=l1,k=12,k=l1   B)k=ll,k=13,k=13
  C)k=l1,k=013,k=0xb  D)k=l1,k=13,k=B
  答案:D
  評析:在C語言格式字符的輸出中,"%d"是以帶符號的十進制形式輸出整數;"%0"是以8進制無符號形式輸出整數(不輸出前導符O);"O/ox"是以16進制無符號形式輸出整數(不輸出前導符0x)。
  
  (45)下面程序段中c的二進制值是__________。
  char a=3,b=6,c;
  c=a^b<<1:
  A)00001011   B)00001111  C)00011110  D)00011100
  答案:B
  評析:c語言提供六種位運算符,按優(yōu)先級由高到低的順序分別為:取反(~)、左移((<)和右移(>>)、按位與(&)、按位異或(八)、按位或(I)。所以表達式c=aAb<<l先運算b<<l得二進制值為00001 100,再運算aA00001 100,最后得二進制值00001ll1。B
  評析:c語言提供六種位運算符,按優(yōu)先級由高到低的順序分別為:取反(~)、左移((<)和右移(>>)、按位與(&)、按位異或(八)、按位或(I)。所以表達式c=aAb<<l先運算b<<l得二進制值為00001 100,再運算aA00001 100,最后得二進制值00001ll1。
  
  (46)以下敘述中正確的是__________。
  A)C語言比其他語言高級
  B)C語言可以不用編譯就能被計算機識別執(zhí)行
  C)C語言以接近英語國家的自然語言和數學語言作為語言的表達形式
  D)C語言出現的最晚,具有其他語言的一切優(yōu)點
  答案:C
  評析:計算機語言分為低級語言、匯編語言和高級語言,c語言屬于高級語言,但并不是說c語言比其他語言高級,所以選項A錯誤;除了低級語言外,其他各種語言都必須編譯成能被計算機識別的二進制數才能執(zhí)行,選項B錯誤;C語言出現從1972年到1973年間,并不是出現最晚的語言,所以選項D也是錯誤的。
  
  (47)下列可用于C語言用戶標識符的一組是__________。
  A)void define WORD   B)a3_b3 _123 Car
  C)For -abc IFCase    D)2a DO sizeof
  答案:B
  評析:c語言規(guī)定標識符只能由字母、數字和下劃線3種字符組成,且第一個字符必須為字母或下劃線,所以排除c和D。c語言還規(guī)定標識符不能為c語言的關鍵字,從而選項A(void是關鍵字)是錯誤的。
  
  (48)fgetc函數的作用是從指定文件讀入一個字符,該文件的打開方式必須是________。
  A)只讀  B)追加  C)讀或讀寫  D)以上均正確
  答案:D
  評析:fgetc函數是指從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的。電etc"函數的調用形式為:ch=fgetc(fp);。
  
  (49)請選出正確的程序段_________。
  A)int*p               B)int*s,k;
  Scanf(""%d"",p);  *s=100;
  ……                 ……
  C)int*s,k;             D)int*s,k;
  Char *p,c;             char *p,e;
  s=&k:                s=&k
  p=&c;                p=&c;
  *p='a';              s=p;
  ……                 *s=l;
  ……
  答案:C
  評析:本題的A和B犯了一個同樣的錯誤,即指針變量p定義后并沒有指向具體的變量,因此不能進行賦值操作。另外,在選項D中,s是int指針變量,p是char型指針變量,所指向的內存單元所占用的字節(jié)數是不同的,因而不能將字符指針變量p的值賦給整型指針變量s。
  
  (50)若有下面的說明和定義,則sizeof(struct aa)的值是__________。
  struct aa
  {
  int rl;double r2;float r3:
  union uu{char u1[5];long u2[2]}ua;
  }mya;
  A)30  B)29  C)24  D)22
  答案:D
  評析:結構體變量所占內存長度是各成員占的內存長度之和,每個成員分別占有自己的內存單元;共用體變量所占的內存長度等于最長的成員的長度。結構體變量aa中,成員r1占2個字節(jié),r2占8個字節(jié),r3古4個字節(jié),共用體ua占8個字節(jié),所以共占用2+8+4+8=22個字節(jié)。
  
  二、填空題(每空2分,共40分)
  
  請將每一個空的正確答案寫在答題卡的【1】至【20】序號的橫線上,答在試卷上不得  分。
  
  (1)在先左后右的原則下,根據訪問根結點的次序,二叉樹的遍歷可以分為三種:前序遍  歷、 【1】 遍歷和后序遍歷。
  答案:【1】中序
  評析:在先左后右的原則下,根據訪問根結點的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷。
  前序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結點,然后遍歷左子樹,最后遍歷右子樹。
  中序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。
  后序遍歷指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結點,最后遍歷左子樹;并且遍歷左、右子樹時,仍然先遍歷右子樹,然后訪問根結點,最后遍歷左子樹。
  
  (2)結構化程序設計方法的主要原則可以概括為自頂向下、逐步求精、 【2】 和限制使用goto語句。
  答案:【2】模塊化
  評析:結構化程序設計方法的主要原則可以概括為自項向下、逐步求精、模塊化和限制使用goto語句。
  自頂向下:程序設計時,應先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標。不要一開始就過多追求眾多的細節(jié),先從最上層總目標開始設計,逐步使問題具體化。
  逐步求精:對復雜問題,應設計一些子目標作過度,逐步細化。
  模塊化:一個復雜問題,肯定是由若干稍簡單的問題構成。模塊化是把程序要解決的總目標分解為分目標,再進一步分解為具體的小目標,把每個小目標稱為一個模塊。
  限制使用goto語句。
  
  (3)軟件測試是保證軟件質量的重要手段,而軟件測試的主要和重要的測試方法是通過測  試數據和 【3】  的設計來實現。
  答案:【3】測試實例
  評析:進行軟件測試時,應精心設計測試實例和選擇測試數據,以對系統(tǒng)進行全面測試。
  
  (4)數據庫系統(tǒng)的三級模式分別為 【4】 模式、內部級模式與外部級模式。
  答案:【4】概念 或 概念級
  評析:數據庫系統(tǒng)在其內部具有三級模式及二級映射,三級模式分別是概念級模式、內部級模式和外部級模式。
  概念模式是數據庫系統(tǒng)中全局數據邏輯結構的描述,是全體用戶(應用)公共數據視圖。
  內模式又稱物理模式,它給出了數據庫物理存儲結構與物理存取方法,如數據存儲的文件結構、索引、集簇及hash等存取方式與存取路徑,內模式的物理性主要體現在操作系統(tǒng)及文件級上,.它還未深入到設備級上(如磁盤及磁盤操作)。
  外模式也稱子模式或用戶模式,它是用戶的數據視圖,也就是用戶所見到的數據模式,它由概念模式推導面出。
  
  (5)數據字典是各類數據描述的集合,它通常包括5個部分,即數據項、數據結構、數據流、 【5】 和處理過程。
  答案:【5】數據存儲
  評析:數據字典是各類數據描述的集合,它通常包括5個部分,即數據項,是數據的最小單位;數據結構,是若干數據項有意義的集合;數據流,可以是數據項,也可以是數據結構,表示某一處理過程的輸入或輸出;數據存儲,處理過程中存取的數據,常常是手工憑證、手工文檔或計算機文件;處理過程。
  
  (6)下面程序的輸出是 【6】 。
  main()
  {int arr[10],i,k=O:
  for(i=0;i<10;i++)
  arr[i]=i;
  for(I=1;i<4;i++)
  k+=arr[I]+i;
  printf("%d\n",k);}
  答案:【6】12
  評析:本題通過第一個for循環(huán)將數組arr[O]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結果為12,具體分析如下:
  i=l:k=0+arr[1]+l即k=2:
  i=2:k=2+arr[2]+2即k=6:
  i=3:k=6+arr[3]+3即k=12;
  
  (7)若a=10,b=20,則表達式!(a<b)的值是 【7】 。
  答案:【7】0
  評析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應當為false,即為0。
  
  (8)有以下程序:
  int fa(int x){return x*x;}
  int fb(int x){return x*x*x;}
  int f(int(*f1)(),int(*f2)(),int x)
  {return f2(X)-n(x);}
  main()
  {int i;i=f(fa,fb,2);printf("%d\n",i);}
  程序運行后,輸出結果是 【8】 。
  答案:【8】4
  評析:在主函數中調用函數f,函數f有三個參數,形參f1與f2分別是兩個指向函數的指針。在f中執(zhí)行r2(x)-f1(x),實際上是執(zhí)行了fb(2).fa(2),故執(zhí)行i=(fa,fb,2)后i的值為2^3-2^2=4。
  
  (9)下面程序的輸出是 【9】 。
  main()
  {enum em{eml=3,em2=1,em3};
  char*aa[]={"AA","BB","CC","DD"};
  primf("%s%s%s\n",aa,aa,aa);
  }
  答案:【9】DDBBCC
  評析:c語言對枚舉的定義規(guī)定:在枚舉中聲明的各個枚舉元素,如果沒有明確指出某個枚舉元素的值,它的上一個元素存在并有明確值的情況下,這個枚舉元素的值為其上一個元素的值+1。
  在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+l=1+l=2,進而可知,在printf()打印函數中,要打印的數組元素是aa[3]、aa[1]、aa[2],因此最后的打印結果應當為"DDBBCC"。
  
  (10)若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數據的形式應該是 【10】 。
  int b,c;float a;
  scanf("%£%d,c=%d",&a,&b,&c)
  答案:【10】5.0,4,c=3
  評析:scanf(格式控制,地址表列),如果在"格式控制"字符串中除了格式說明以外還有其它字符,則在輸入數據時應輸入與這些字符相同的字符。所以此題中輸入數據的形式是5.0;4,c=3。
  
  (11)下列程序的輸出結果是 【11】 。
  int t(int x,int y,int cp,int dp)
  {  cp=x*x+y*y;
  dp=x*x-y*y;
  }
  main()
  {  int a=4,b=3,c=5,d=6;
  t(a,b,c,d);
  printf("%d%d\n",c,d);
  }
  答案:【ll】5 6
  評析:本題中a,b,c,d是實參,x,多,cp,dp是形參。c語言規(guī)定,實參變量對形參變量的數據傳遞是"值傳遞",即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內存中,實參單元與形參單元是不同的單元。在調用函數時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調用結束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結果是5 6。
  
  (12)下面程序的輸出結果是 【12】 。
  char b[]="ABCD";
  main()
  {
  char b[30];
  strcpy(&b[0],"GH");
  strcpy(&b[1],"GH");
  strcpy(&b[2],"GH");
  printf("%s\n",b);
  }
  答案:【12】GGGH
  評析:由于在函數main中定義了數組變量b,其將屏蔽全局變量b。對于一維數組變量,其值為一常數,等于數組首元素地址。strcpy(&b[0],"GH"),是將字符串。"GH"復制到數組b中從首元數開始的空間中,此是b中的字符串為"GH";strcpy(&b[1],"GH"),是將字符串。"GH"復制到數組b中從第二個元素開始的空間中,此是b中的字符串為"GH"。執(zhí)行第三次strcpy函數后,b中的字符串為"GGGH"。
  
  (13)有以下定義和語句,則sizeof(a)的值是 【13】 ,而sizeof(a.share)的值是 【14】 。
  struct date
  { int day;
  int mouth;
  int year;
  union{int sharel;
  float share2;
  }share;
  }a;
  答案:【13】10
  【14】4
  評析:結構體變量所占內存長度是各成員占的內存長度之和。每個成員分別占有其自己的內存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。
  
  (14)下述函數用于統(tǒng)計一行字符中的單詞個數,單詞之間用空格分隔。
  Word_num(str)
  char str[];
  {int i,num=O,word=O;
  for(i=0;str[i]!= 【15】。籭++)
  if( 【16】 =='')word=0;
  else if(word==0)
  {
  word=l;
  【17】 ;
  }
  return(num);
  }
  答案:【15】'\0'或0或NULL
  【16】str[I]
  【17】num++或num=num+l或num+=1
  評析:觀察題目要求,可以知道以下幾點:
  ①for循環(huán)的結束條件應當是:str[i]已是字符串的最后一個字符;
  ②strⅢ代表字符串str中的第i+1個字符;
 、壅妥兞縩um的值是要記錄的單詞的個數。
  c語言中規(guī)定字符串的最后一個字符是一個隱含的字符串結束符"\0",所以在題中第一個空中應填寫"\0";題中第二個空應填寫"str[i]",以判斷當前位置的字符是否為空格;題中第三個空中應當填寫"num++",通過變量num的加l累加得到字符串中的單詞個數。
  
  (15)有一個已排好序的數組,今輸入一個數,要求按原來的順序規(guī)律將它插入到數組中。算法是:假設排序順序是從小到大,對輸入的數,檢查它在數組中哪個數之后,然后將比這個數大的數順序后移一個位置,在空出的位置上將該數插入。請在程序中的空白處填上一條語句或一個表達式。
  #defineN 100
  main()
  { float a[N+1],x;
  inti,p;
  for(i=0;i<N;i++)
  scanf("%f",&a[I]);
  scanf("%f",&x);
  for(I=0,p=N;i<N;i++)
  if(x<a[I])
  { 【18】 ;
  break;}
  for(i=N-1; 【19】。籌--)
  a[I+1]=a[I];
  a[p]_x;
  for(i=0; 【20】。籭++)
  { primf("%8.2f",a[i]);
  if(i%5==O)
  printf("\n");
  }
  }
  答案:【18】p=i;
  【19】i>=p
  【20】i<=N
  評析:本題主要考查了插入排序。由于程序中的數組在開始已經按從小到的大順序排好。在插入時,首先要查到第一個大于待插入數的數組下標,即當待插入元素小于數組中當前元素時,記下數組的當前下標p,并結束循環(huán)。故第一空目的是為了記下數組下標,應填p=i;插入排序的第二部是將大于待插入元素的所有元素都向后移動一位,故在循環(huán)時,要從最后一個元素到第p個元素都要后移一位,因此第二空應埴i>=p。最后一個循環(huán)是將N+1個元素都輸出,故最后一空應為i<=N。(注:本題有多種答案,以上僅提供一種)

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