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

    (28)有以下程序
  void fun(char *a,char *b)
  {  a=b;
  (*a)++;
  }
  main()
  {
  char c1='A',c2='a,*p1,*p2;
  clrscr0;
  pl=&cl;
  p2=&c2;
  fun(p1,p2);
  printf("%c%c\n",cl,c2);
  }
  程序運(yùn)行后的輸出結(jié)果是__________。
  A)Ab  B)aa  C)Aa   D)Bb
  答案:A
  評(píng)析:在函數(shù)調(diào)用中,可以分值傳遞和地址傳遞。若參數(shù)傳遞的是簡(jiǎn)單數(shù)據(jù)類型的數(shù)值,稱為值傳遞方式。若參數(shù)傳遞的是變量的地址,稱為地址傳遞方式。
  
  (29)若有定義:static int fun(int a,int b),則以下敘述中錯(cuò)誤的是_________。
  A)定義了一個(gè)返回值為整型的靜態(tài)函數(shù)
  B)該函數(shù)只能被同一文件內(nèi)的函數(shù)調(diào)用
  C)該函數(shù)可以在任何文件中被調(diào)用
  D)該函數(shù)屬于內(nèi)部函數(shù)
  答案:C
  評(píng)析:根據(jù)函數(shù)能否被其他源文件調(diào)用,將函數(shù)區(qū)分為內(nèi)部和外部函數(shù)。如果將函數(shù)定義為外部函數(shù),則在函數(shù)首部最左端冠以關(guān)鍵字eXtem。如果將函數(shù)定義為內(nèi)部函數(shù),則在函數(shù)首部最左端冠以關(guān)鍵字static。內(nèi)部函數(shù)只能被本文件中的其它函數(shù)調(diào)用。而外部函數(shù)則可以被其他任何c程序文件調(diào)用。
  
  (30)以下能正確定義一維數(shù)組的選項(xiàng)是_________。
  A)int num[];    B)int num[0..100];
  C)#define N 100;  D)int N=100;
  int num[N];     int num[N];
  答案:C
  評(píng)析:有二種方法指定數(shù)組長(zhǎng)度。其一是直接在數(shù)組名后面的方括號(hào)內(nèi)輸入數(shù)組的長(zhǎng)度。其二是,在定義數(shù)組的同時(shí)對(duì)其賦值,由實(shí)際賦值的元素個(gè)數(shù)自動(dòng)確定數(shù)組的長(zhǎng)度。
  
  (31)有以下程序
  fun(int a[],intm,int n)
  { int I,J;
  for(i=m;i<n;i++)
  a[i+ll=a[I]+3;
  }
  main()
  {
  int i,a[6l={2,4,6,8,10,12};
  clrscr0;
  fun(a,2,5);
  for(i=O;i<6;i++)
  printf("%"a[I]);
  }
  程序運(yùn)行后輸出的結(jié)果是__________。
  A)24691315  B)24691215  C)249121518  D)249121415
  答案:B
  評(píng)析:在調(diào)用函數(shù)時(shí),既可以用單個(gè)的變量作為參數(shù),也可以用數(shù)組名作為參數(shù)。還可將數(shù)組的下標(biāo)值作為實(shí)參使用。在本題中,是將數(shù)組名和數(shù)組的下標(biāo)值作為實(shí)參。
  
  (32)以下不正確的敘述是__________.
  A)在C程序中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低。
  B)在C程序中,T和t是兩個(gè)不同的變量
  C)若a和b類型相同,在執(zhí)行了賦值表達(dá)式a=b后,b中的值將放入a中,而b中的值不變。
  D)當(dāng)從鍵盤(pán)輸入數(shù)據(jù)時(shí),對(duì)于整型變量只能輸入整型數(shù)據(jù)。對(duì)于實(shí)型變量只能輸入實(shí)型數(shù)據(jù)。
  答案:D
  評(píng)析:在c語(yǔ)言中,為方便表達(dá)式的運(yùn)算,對(duì)所有的運(yùn)算符都設(shè)定了一定的優(yōu)先級(jí),其中逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低。c語(yǔ)言中的數(shù)據(jù)有常量和變量之分,其中變量是區(qū)分大小寫(xiě)的,也就是說(shuō)T和t是兩個(gè)不同的變量名。將某個(gè)變量的值賦給其它的變量之后,并不影響其本身的值。當(dāng)定義一個(gè)整型變量后,可以從鍵盤(pán)上對(duì)其輸入整型值,也可以是字符型的數(shù)據(jù)。如果將字符型的值賦給整型變量,則它接受的是字符常量的ASCII碼值。實(shí)型變量也可以接收整型值。
  
  (33)有以下程序
  pf(char *p,int n)
  { int i;
  for(i=0;i<n;i++1
  p[i]=p[I]+32;
  }
  main()
  {
  char a[]="ABCD";
  int i:
  clrscr();
  pf(a,4);
  for(i=0;i<4;i++)
  printf("%c",a[I]);
  }
  程序運(yùn)行后的輸出結(jié)果是________。
  A)ABCD  B)ABCD\0  C)abcd  D)abed\0
  答案:C
  評(píng)析:通過(guò)指向數(shù)組的指針可以引用數(shù)組中的任何元素,并且對(duì)其進(jìn)行各種運(yùn)算。本題中就是通過(guò)指向數(shù)組的指針將一字符數(shù)組中的所有大寫(xiě)字母轉(zhuǎn)換成相應(yīng)的小寫(xiě)字母。
  
  (34)有以下程序
  main()
  {
  int a[3][3],*p,i;
  clrscr();
  p=&a[0][0];
  for(i=0;i<9;i++)
  p[i]:i+2;
  printf("%d\n",a[2][11);
  }
  程序運(yùn)行后的輸出結(jié)果是_________。
  A)3  B)6  C)9  D)2
  答案:C
  評(píng)析:當(dāng)某個(gè)指針變量指向多維數(shù)組時(shí),可以用其每次加l來(lái)順序操作數(shù)組中的元素。在此題中,a[3][3]={{2,3,4},{5,6,7},{8,9,10}}。而最后輸出的a[2][1]就是第3行的第2列的元素,即9。
  
  (35)有以下程序
  #include<stdio.h>
  #define F(X,Y)(X)*(Y)
  main()
  {
  int a=3,b=4;
  clrscr();
  printf("%d\n",F(xiàn)(a--,++b));
  }
  程序運(yùn)行后的輸出結(jié)果是_________。
  A)8  B)10  C)12  D)15
  答案:D
  評(píng)析。在帶參數(shù)的宏定義中,不是簡(jiǎn)單的字符替換。其方法是:在程序中如果有帶實(shí)參的宏, (如F(x,Y)),則按#define命令行中指定的字符串進(jìn)行置換。如果串中包含宏中的形參(女NX,Y),、則將程序語(yǔ)句中相應(yīng)的實(shí)參代替形參。本題中的宏定義展開(kāi)后為:(a.--)*(++b)=(3)*(5)=15。
  
  (36)有以下程序
  main()
  {
  int x=3,y=2,z=l;
  printf("%d\n",x/y&&z);
  }
  程序運(yùn)行后的輸出結(jié)果是_________。
  A)0  B)l  C)2  D)3
  答案:B
  評(píng)析:在c程序的標(biāo)準(zhǔn)輸出函數(shù)prim沖,要注意表達(dá)式的優(yōu)先級(jí)。如本題的表達(dá)式x/y&&z,先運(yùn)算的是算術(shù)運(yùn)算x/v,結(jié)果是1,然后才運(yùn)算l&&z,結(jié)果是1。
  
  (37)下列關(guān)于c程序編譯的描述中,錯(cuò)誤的是_________。
  A)在程序的編譯過(guò)程中可以發(fā)現(xiàn)所有的語(yǔ)法錯(cuò)誤
  B)在程序的編譯過(guò)程中可以發(fā)現(xiàn)部分的語(yǔ)法錯(cuò)誤
  C)在程序的編譯過(guò)程中不能發(fā)現(xiàn)邏輯錯(cuò)誤
  D)程序編譯是調(diào)試程序的必經(jīng)過(guò)程
  答案:B
  評(píng)析:編譯過(guò)程實(shí)際上就是調(diào)試程序,找出程序中所有可能存在的語(yǔ)法錯(cuò)誤。但是,對(duì)于程序邏輯上的一些錯(cuò)誤,編譯過(guò)程無(wú)能為力,只有程序編寫(xiě)人員自己通過(guò)一些良好的編程技巧和方法來(lái)排除。
  
  (38)若有以下說(shuō)明和定義
  union、s
  { int i;
  char ch
  float e
  }a;
  下列對(duì)共用體的操作正確的是________。
  A)a='A';   B)re=a;
  C)a.i=3;   D)printf("%dha",a);
  答案:C
  評(píng)析:共用體實(shí)際上用同一內(nèi)存段來(lái)存放幾種不同類型的成員,但在每一瞬時(shí)只能存放其中一種,而不是現(xiàn)時(shí)存放幾種。因此,不能對(duì)共用體名賦值,不能引用共用體名以得到某一個(gè)值,也不能把共用體變量作為函數(shù)參數(shù)。
  
  (39)下列選項(xiàng)中正確的語(yǔ)句組是_________。
  A)char s[8];s={"Beijing"};   B)char *s;s={"Beijing"};
  C)char s[8];s="Beijing";   D)char *s;s="Beijing";
  答案:D
  評(píng)析:字符串通常是指用一對(duì)雙引號(hào)括起來(lái)的一組字符常量序列。在c語(yǔ)言中,可以直接定義一個(gè)指向字符串的指針變量,然后對(duì)其賦值為字符串常量后,指向字符串的指針就指向了字符串的首地址。
  
  (40)如果一個(gè)C程序由多個(gè)文件組成,在將多個(gè)文件編譯連接成一個(gè)統(tǒng)一的可執(zhí)行文件時(shí),可采用的方法有多種,以下敘述中錯(cuò)誤的是__________。
  A)可以利用Turbo c集成環(huán)境  B)在MS C上進(jìn)行編譯連接
  C)用#include命令       D)用文字處理軟件Word
  答案:D
  評(píng)析:運(yùn)算多個(gè)文件的程序有3種方法,第1種是利用Turbo c集成環(huán)境,先將每個(gè)文件輸入并存儲(chǔ)在磁盤(pán)上,然后在編譯在狀態(tài)下建立一個(gè)"項(xiàng)目文件",最后再編譯連接。第2種方法是在MS c上先分別對(duì)多個(gè)文件進(jìn)行編譯得到.obj文件,然后用link命令把四個(gè)文件連接起來(lái)。第3種方法是用#include命令將多個(gè)文件包含進(jìn)某個(gè)文件中。
  
  (41)有以下程序
  main()
  {
  int n,s=0;
  clrscr0;
  for(n=10;n<30;n++)
  {
  if(n%3==O)
  { s+=n;
  continue;
  }
  if(s>100)break;
  }
  printf("%d",s);
  }
  程序運(yùn)行后的輸出結(jié)果是___________。
  A)117  B)147  C)127  D)137
  答案:A
  評(píng)析:continue語(yǔ)句的功能是結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著執(zhí)行下一次是否執(zhí)行循環(huán)的判定。而break語(yǔ)句是從循環(huán)體內(nèi)跳出,即提前結(jié)束循環(huán)。
  
  (42)有以下程序
  main()
  {
  char s[]={'T','E','A','C','H','E','R'},*p;
  clrscr0;
  p=s+3;
  printf("%c",*p++);
  printf("%c",*p++);
  }
  程序運(yùn)行后的輸出結(jié)果是________。
  A)AC  B)CH  C)HE  D)TEA
  答案:B
  評(píng)析:如果有指向字符數(shù)組的指針,那么字符數(shù)組中的元素可以用指針變量表示,執(zhí)行第一個(gè)輸出語(yǔ)句printf("%c",*p++);后,輸出字符'C',執(zhí)行第二個(gè)輸出語(yǔ)句printr("%c",*p++);后,輸出字符'H'。
  
  (43)已定義以下函數(shù)
  fun(char *pl,char*p2)
  {
  while(('pl='p2)『-'\0'』
  {
  pl++;
  p2++;
  }
  }
  函數(shù)的功能是__________。
  A)將p2所指字符串復(fù)制到pl所指內(nèi)存空間
  B)將p2所指字符串的地址賦給指針p1
  C)對(duì)pl和p2兩個(gè)指針?biāo)缸址M(jìn)行比較
  D)檢查pl和p2兩個(gè)指針?biāo)缸址惺欠裼?\O'
  答案:A
  評(píng)析:指針的白加或自減運(yùn)算,表示指針向前或向后移動(dòng)一個(gè)存儲(chǔ)單元。
  
  (44)有以下程序
  main()
  {
  char s[][5]={{",",'*'},{",'*',",'*'},{'*'",",",'*'},{",'*',",'*'},{",",'*'}};
  int i, j;
  for(i=0;i<5;i十+)
  {
  for(j=O;__________j++)
  printf("%c",s[i][I]);
  printf("\n");
  }
  }
  若輸出如下的鉆石形平面圖,則在程序的下劃線處應(yīng)填入的表達(dá)式是__________。
  *
  *  *
  *     *
  *  *
  *
  A)j<5  B)j<=5  C)j>5  D)j>=5
  答案:A
  評(píng)析:在一個(gè)二維數(shù)組中,可以通過(guò)其行標(biāo)和列標(biāo)來(lái)控制其輸出的數(shù)據(jù)元素。
  
  (45)有以下程序
  sum(char *p)
  { *p=*p+3;}
  main()
  {
  char str[10]={"abcde"},*p=str;
  clrscr0;
  sum(p);
  primf("%c\n",*p--);
  }
  程序運(yùn)行后的輸出結(jié)果是_________。
  A)c  B)d  C)e   D)f
  答案:B
  評(píng)析:在用字符指針作為形式參數(shù)時(shí),先讓指針p指向字符數(shù)組的首地址,然后可以用*(p+i)的形式直接存取各對(duì)應(yīng)單元中的元素,而*p+i的意義則不樣,它是指將指針變量p所指向的存儲(chǔ)單元的值加上i。
  
  (46)已定義以下函數(shù)
  fun(int *p)
  (return *p;)
  該函數(shù)的返回值是_________。
  A)不確定的值        B)形參p中存放的值
  C)形參p所指存儲(chǔ)單元的值  D)形參p的地址值
  答案:C
  評(píng)析:指針p是指向一個(gè)地址,而*p是表示指針p指向存儲(chǔ)單元中的數(shù)據(jù)。
  
  (47)有如下語(yǔ)句
  int *p, a[]={2,4,6,8,10};
  p=a;
  則與語(yǔ)句*p++;等價(jià)的語(yǔ)句是__________。
  A)(*p)++;  B)*(p++);  C)*(++p);  D)++*p;
  答案:B
  評(píng)析:由于++和*同優(yōu)先級(jí),結(jié)合方向?yàn)樽杂蚁蜃,因此語(yǔ)句*p++;等價(jià)于*(p++);,而*(++p)是先使p加l,再取*p的值。語(yǔ)句++*p;相當(dāng)于++(*p),則是先取p所指變量的值,然后自加l。
  
  (48)下列關(guān)于結(jié)構(gòu)體與苯用體的說(shuō)法中,錯(cuò)誤的是_________。
  A)結(jié)構(gòu)體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和
  B)共用體變量所占內(nèi)存長(zhǎng)度是各成員占的內(nèi)存長(zhǎng)度之和
  C)共用體變量所占內(nèi)存長(zhǎng)度等于最長(zhǎng)成員的長(zhǎng)度
  D)共用體變量和結(jié)構(gòu)體變量中的所有成員可以是不同數(shù)據(jù)類型
  答案:B
  評(píng)析:共用體也稱"聯(lián)合體",與結(jié)構(gòu)體定義形式相同,而它們是含義不同的兩類構(gòu)造數(shù)據(jù)類型。結(jié)構(gòu)體中每個(gè)成員都有自己獨(dú)立的內(nèi)存空間,是所有成員的內(nèi)存長(zhǎng)度之和。而共用體不同,所有成員是共用一個(gè)內(nèi)存區(qū)的,所以共用體變量的內(nèi)存長(zhǎng)度是最長(zhǎng)成員的長(zhǎng)度。
  
  (49)下列對(duì)于文件的打開(kāi)方式敘述中,錯(cuò)誤的是_________。
  A)用"r"方式打開(kāi)的文件只能讀
  B)用"w"方式打開(kāi)的文件只能向該文件寫(xiě)數(shù)據(jù)
  C)用"a"方式打開(kāi)的文件既能讀,又可以向該文件寫(xiě)數(shù)據(jù)
  D)如果不能打開(kāi)文件,fopen函數(shù)將會(huì)帶回一個(gè)錯(cuò)信息
  答案:C
  評(píng)析:在c程序中打開(kāi)文件時(shí),必須要確定文件的打開(kāi)方式。在文件打開(kāi)函數(shù)fopen中,用"r"方式打開(kāi)的文件只能讀,即從文件向計(jì)算機(jī)輸入,而不是向文件輸入;用"w"方式打開(kāi)的文件只能寫(xiě),即向文件寫(xiě)入數(shù)據(jù),而不能從文件中向計(jì)算機(jī)輸入數(shù)據(jù)。用"a"方式打開(kāi)的文件只能在文件末尾添加數(shù)據(jù)。在用"r"方式打開(kāi)時(shí),fopen函數(shù)如果不能打開(kāi)一個(gè)文件,會(huì)返回一個(gè)出錯(cuò)信息。
  
  (50)下列關(guān)于c語(yǔ)言數(shù)據(jù)文件的敘述中正確的_________。
  A)文件由ASCII碼字符序列組成,c語(yǔ)言只能讀寫(xiě)文本文件
  B)文件由二進(jìn)制數(shù)據(jù)序列組成,c語(yǔ)言只能讀寫(xiě)二進(jìn)制文件
  C)文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件
  D)文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件
  答案:D
  評(píng)析:c語(yǔ)言把文件看作一個(gè)字符(字節(jié))的序列,即由一個(gè)一個(gè)字符(字節(jié))數(shù)據(jù)順序組成。根據(jù)數(shù)據(jù)的組織形式,可分為ASCII碼文件和二進(jìn)制文件。因此,一個(gè)c文件是一個(gè)字節(jié)流或二進(jìn)制流。它把數(shù)據(jù)看作是一連串的字符(字節(jié))。而不考慮記錄的界限。換句話說(shuō),c語(yǔ)言文件并不是由記錄組成的。
  
  二、填空題(每空2分,共40分)
  
  請(qǐng)將每一個(gè)空的正確答案寫(xiě)在答題卡的【1】至【20】序號(hào)的橫線上,答在試卷上不得分。
  
  (1)某二叉樹(shù)中共有27個(gè)結(jié)點(diǎn),其中度為2的結(jié)點(diǎn)有10個(gè),則該二叉樹(shù)中有 【1】 個(gè)度為l的結(jié)點(diǎn)。
  答案:【1】6
  評(píng)析:已知n2=10,根據(jù)二叉樹(shù)中度為2的結(jié)點(diǎn)與葉子結(jié)點(diǎn)的關(guān)系:n0=n2+l可知,為1l。因此,度為l的結(jié)點(diǎn)數(shù)為:n1=n-n0-n2=27-10-l1=6
  
  (2)1973年美國(guó)學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種新的流程圖中,完全去掉了帶箭頭的流程線,全部算法寫(xiě)在一個(gè)矩形框內(nèi)。這種流程圖稱為
  【2】 流程圖。
  答案:【2】N-S
  評(píng)析:基于可以用順序結(jié)構(gòu)表示任何復(fù)雜算法結(jié)構(gòu)的思想,1973年美國(guó)學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。這種流程圖稱為N-S流程圖(N和s是兩位美國(guó)學(xué)者的英文姓名的第一個(gè)字母)。
  
  (3)在軟件測(cè)試過(guò)程中,單元測(cè)試的目的 【3】 ,多采用白盒測(cè)試法。
  答案:【3】保證每個(gè)模塊單獨(dú)運(yùn)行正確
  評(píng)析:軟件測(cè)試的實(shí)施過(guò)程分為四步,即單元測(cè)試、綜合測(cè)試、確認(rèn)測(cè)試?yán)到y(tǒng)測(cè)試。其中單元測(cè)試的主要的目的是保證每個(gè)模塊單獨(dú)運(yùn)行正確:多采用白盒測(cè)試法,檢查模塊控制結(jié)構(gòu)的某些特殊路徑,期望覆蓋盡可能多的出錯(cuò)點(diǎn)。
  
  (4)在數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)冗余度大大降低的最主要原因是 【4】 。
  答案:【4】實(shí)現(xiàn)數(shù)據(jù)共享
  評(píng)析:數(shù)據(jù)庫(kù)中的數(shù)據(jù)是可以被多個(gè)用戶共享的,這和以前的文件系統(tǒng)有所不同。由于數(shù)據(jù)庫(kù)中的數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)共享,可以極大的降低數(shù)據(jù)冗余度,并且只花費(fèi)很少的存儲(chǔ)空間。
  
  (5)在軟件生存周期中,軟件定義階段的主要任務(wù)是 【5】  。
  答案:【5】確定軟件系統(tǒng)的工程需求
  評(píng)析:一個(gè)軟件生存周期主要包含三個(gè)階段,即軟件定義、軟件開(kāi)發(fā)、軟件維護(hù)。軟件定義階段主要任務(wù)是確定軟件系統(tǒng)的工程需求。為準(zhǔn)確明確軟件的工程需求,軟件定義又分成軟件系統(tǒng)的可行研究和需求分析兩個(gè)子階段。
  
  (6)如果在運(yùn)行以下程序時(shí)從鍵盤(pán)輸入:bcd<回車(chē)>。輸出結(jié)果 【6】 。
  #include<stdio.h>
  main()
  {
  char I='a'J='a',k='a';
  clrscr();
  scanf("%c%*c%c",&i,&j,&k);
  printf("%c%c%c",i,j,k);
  }
  答案:【6】bda
  評(píng)析:在scanf()語(yǔ)句中,如果輸入格式中帶有"*",則變量在接收數(shù)據(jù)時(shí),自動(dòng)忽略掉數(shù)據(jù)輸入序列中"*'對(duì)應(yīng)位置的的數(shù)據(jù)元素,其對(duì)應(yīng)變量的值從"*"對(duì)應(yīng)位置的下一個(gè)數(shù)據(jù)開(kāi)始接收。
  
  (7)以下程序運(yùn)行后的輸出結(jié)果是 【7】 。
  #define SQ(y)  y*y
  main()
  { int x=lO,y;
  y=SQ(x+3);
  primf("%d",y);
  }
  答案:【7】43
  評(píng)析:在使用帶參數(shù)的宏定義時(shí)不是進(jìn)行簡(jiǎn)單的字符替換。如果在程序有帶實(shí)參的宏,則按#define命令行中指定的字符串從左到右進(jìn)行置換。如果是表達(dá)式時(shí),一定要注意其替換后得到的表達(dá)式。本題中,有宏定義行#define sQ(y) y*y。在用實(shí)參x+3進(jìn)行替換后,其得到的字符串表達(dá)式為:x+3*x+3=10+3*10+3=43。
  
  (8)已知字符"A"的ASCII值為65,以下程序運(yùn)行后的輸出結(jié)果是 【8】 。
  main()
  {
  int x=30,y=50,t=4;
  char z='A':
  clrscr();
  if(y>x+2&&y<z-12)
  x=y;
  y=t;
  if(y<z&&y>z-20)
  t=x:
  x=y;
  y=t;
  printf("%d,%d,%d\n",x,y,z);
  }
  答案:【8】4,4, 65
  評(píng)析:如果多個(gè)分支結(jié)構(gòu)處于順序關(guān)系時(shí),每個(gè)分支語(yǔ)句都要執(zhí)行。本題中的兩個(gè)if語(yǔ)句就是這種關(guān)系。
  
  (9)以下程序的運(yùn)行結(jié)果是 【9】 。
  main()
  {
  int a=4,b=8,c;
  c=("b==a)&&(a+b!=20);
  printf("%d,%d,%d\n",a,b,C);
  }
  答案:【9】4,8,0
  評(píng)析:如果在表達(dá)中出現(xiàn)多種運(yùn)算符時(shí),一定要撂照他們的優(yōu)先級(jí)別進(jìn)行運(yùn)算,否則其結(jié)果可能會(huì)產(chǎn)生錯(cuò)誤。本題中,由于賦值表達(dá)中式c=(a/b==a)&&(a+b!=20)中有兩個(gè)括號(hào),而且兩個(gè)括號(hào)是進(jìn)行邏輯與運(yùn)算。當(dāng)?shù)?個(gè)括號(hào)內(nèi)的值為假時(shí),不管后面括號(hào)內(nèi)的值是否為假,兩個(gè)括號(hào)內(nèi)的值進(jìn)行邏輯與(&&)運(yùn)算時(shí),其結(jié)果肯定為假。
  
  (10)以下程序的運(yùn)行結(jié)果是 【10】 。
  main()
  {
  char a='A',b='E';
  int sum=1,i=1;
  do
  {
  sum*=i;
  i++:
  }while(i<=b-a);
  printf("%d",sum);
  }
  答案:【10】24
  評(píng)析:字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算時(shí),是將字符對(duì)應(yīng)的ASCII值當(dāng)作一個(gè)整型數(shù)據(jù)來(lái)處理。同樣要將整數(shù)進(jìn)行字符運(yùn)算時(shí),可以將整數(shù)轉(zhuǎn)換成ASCII值與其相等的字符。
  
  (11)已知數(shù)字'0'的AsCII碼值為48,在程序運(yùn)行時(shí)若從鍵盤(pán)輸入:096<回車(chē)>,則下列程序運(yùn)行后的輸出結(jié)果是 【11】 。
  #include<stdio.h>
  main()
  { char x,y;
  x=getchar();
  scanf("%d",&y);
  x=x+4; y=y/2;
  printf("%c%C",x,y);
  }
  答案:【11】40
  評(píng)析:以ASCII碼值為橋梁,可以將字符數(shù)據(jù)與其ASCII值相等的整型數(shù)進(jìn)行相互轉(zhuǎn)換,并且可以用這個(gè)特性對(duì)字符進(jìn)行一些整型數(shù)據(jù)的運(yùn)算。
  
  (12)以下程序中,min函數(shù)的功能是求4行5列二維數(shù)組每列元素的最小值。請(qǐng)?zhí)羁铡?BR>  Void min(int m,int n,int fI)[5],int *bt)
  { inti,j,k=0;
  for (j=0;j<n;j++)
  { k=f[0][j]};
  for(i=0;i<m;i++)
  if( 【12】 )k=f[i][j];
  bt[j]=k;
  }
  }
  main()
  { int a[4][5],i,j,b[5];
  for(i=0;i<4.i++)
  for(j=0;0<5.J++)
  scanf("%d",&a[i][j]);
  min(4,5,a,b);
  f'0r(j=0;j<5;j++)
  printf("%d",b[j]);
  primf("\n");
  }
  答案:【12】k>f[i][j]
  評(píng)析:求二維數(shù)組中每列的最小值時(shí),其方法是先讓每列中的第一個(gè)元素同第二個(gè)元素比較,然后將較小的值保存在臨時(shí)變量k中,最后再將k中的值與問(wèn)列中剩余的元素進(jìn)行比較,每次都是將較小的值保存在臨時(shí)變量k中。靳列比較后完成后,其最小值就是k的值。然后將k值賦給一維數(shù)組b啪中對(duì)應(yīng)的單元。最后得到的一維數(shù)組b啪中的所有值就是所要求的二維數(shù)組中每列的最小值。
  
  (13)有以下程序
  main()
  { int a,b,c,d;
  clrsc();
  scanf("%o",&a);
  b=a>>4:
  c:~(~0<<4);
  d=b&c:
  printf("%d,%d\n",a,d);
  }
  若從鍵盤(pán)上輸入331,則程序運(yùn)行后的輸出結(jié)果 【13】  。
  答案:【13】217,13
  評(píng)析: c語(yǔ)言中的位運(yùn)算符有6種,本程序有其中4種位運(yùn)算符,分別是左移、右移、取反和按位與運(yùn)算。
  
  (14)以下程序運(yùn)行后輸出結(jié)果是 【14】  。
  int a=30,b=40;
  voidfun(int x,inty)
  { int z;
  z=(x>y)?x:y;
  a=z+10;
  b=z+20;
  }
  main()
  {
  printf("a=%d,b=%d\n",a,b);
  fun(a,b);
  printf("a=%d,b=%d\n",a,b);
  }
  答案:【14】a=30,b=40
  a=50,b=60
  評(píng)析:全局變量的作用域是從定義變量的位置開(kāi)始到本源文件的結(jié)束。在本題中,變量a,b就是屬于全局變量。其初值分別為a=30,b=4O。在沒(méi)有對(duì)兩個(gè)全局變量作任何處理前,它們的值保持原值,所以第1次輸出a,b的值分別是初值a=30,b=40。但在fun函數(shù)中a,b的值改變后,其值在結(jié)束fun函數(shù)后仍然保留,所以第2次輸出a,b的值分別為a=50,b=60。
  
  (15)以下程序運(yùn)行后的輸出結(jié)果是 【15】  。
  #include<string.h>
  main()
  {
  int i:
  char a[]。"abcdef',*p,*s;
  p=a;
  for(I=O;i<strlen(a)/2;i++)
  {
  a[strlen(a)-i-1]=*p;
  p++;
  }
  s=strupr(a);
  puts(s);
  }
  答案:【15】ABCCBA
  評(píng)析:for循環(huán)是將字符數(shù)組a的前半段元素取出,然后按原來(lái)相反的順序覆蓋字符數(shù)組的后半段。字符串函數(shù)strupr的功能是將字符串中小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母。然后用字符串輸出函數(shù)puts輸出。
  
  (16)以下程序運(yùn)行后其輸出的結(jié)果是 【16】  。
  ma(int a)
  { static int y=l,z=2;
  y*=a;
  Z*=a:
  printf("y=%d,z=%d",y,z);
  }
  main()
  {
  int i,a=2:
  clrsc");
  for(i=0;i<3;I++)
  { printf("%d",i);
  ma(a);
  printf("\n");
  }
  }
  答案:【16】0 y=2,z=4
  l y=4,z=8
  2 y=8,z=16
  評(píng)析:靜態(tài)存儲(chǔ)變量的定義方法是在定義變量里,前面加關(guān)鍵字static,而且一次允許定義多個(gè)靜態(tài)變量。一旦某個(gè)變量在函數(shù)中被定義成靜態(tài)的類型,在程序運(yùn)行期間,每次調(diào)用函數(shù)時(shí),它不再重新賦初值,而是保留上次函數(shù)調(diào)用結(jié)束時(shí)的值。.如本題中,在第1次調(diào)用函數(shù)ma()結(jié)束時(shí),y、z的值分別是y=2,z=4。在第2次調(diào)用ma()函數(shù)時(shí),靜態(tài)存儲(chǔ)變量y、z不再重新被賦初值,而是保留上次結(jié)束時(shí)的值。
  
  (17)已知有如圖所示的單鏈表,則以下函數(shù)的功能是 【17】  。
  
  #include<stdio.h>
  typedef struct node
  { int data;
  struct node *next;
  }Node;
  Node *reverlist(Llist *head)
  {
  Node *p,*q;
  if(head&&head->nex0
  {
  p=head;
  q=p->next;
  p->next=null;
  while(q)
  {
  p=q;
  q=q->next;
  p->next=head;
  head=p;
  }
  }
  return(head);
  答案:【17】逆置單鏈表
  知識(shí)點(diǎn):?jiǎn)捂湵淼倪\(yùn)算
  評(píng)析:該函數(shù)是首先將head指向的鏈表在第l和第2個(gè)結(jié)點(diǎn)間斷開(kāi)成前后兩個(gè)鏈表,用指針head指向前面單個(gè)結(jié)點(diǎn)的鏈表,而用指針q指向后面斷開(kāi)部分的鏈表,每次將指針q指向鏈表的第1個(gè)結(jié)點(diǎn)取出,然后插入到head指針指向鏈表的最前面,直到q指針指向鏈表的結(jié)點(diǎn)全部取出,并插入到head指針指向的鏈表中,最后指針head指向的鏈表就是原來(lái)鏈表的逆置鏈表。
  
  (18)以下程序的功能是將一個(gè)字符串sl中的內(nèi)容復(fù)制到字符串s2中,請(qǐng)?zhí)羁铡?BR>  void copy_string(char *pl,char *p2)
  {
  for ( ;*p1 !='\0' ;p1 ++,p2++)
  【18】 ;
  【19】 ;
  ;
  }
  main( )
  {
  char * s1 ="hello!";
  char *s2="Good morning!";
  prinff("\nstring sl=%s\nstring s2=%s\n",sl,s2);
  copy_string( 【20】  );
  printf("\nstring sl=%s\nstring s2=%s\n",sl,s2);
  答案:【18】*p2=*pl
  【19】*p2='\0'
  【20】sl,s2
  評(píng)析:形式參數(shù)可以有不同的數(shù)據(jù)類型,其中本題中的字符指針也是一種形式a在本題中,pl,p2都是字符指針,在調(diào)用copy_string函數(shù)時(shí),將數(shù)組s1的首地址傳給p1,把數(shù)組s2的首地址傳給p2。在函數(shù)copy_string中的for循環(huán)中,每次將*pl賦給*p2,第1次就是將s1數(shù)組的第1個(gè)字符賦給s2數(shù)組。在執(zhí)行pl++和p2++后,p1和p2就分別指向s1[1]和s2[1]。然后依此類推。在復(fù)制所有字符后,還要記得在最后將結(jié)束符'\0'賦給p2。

上一頁(yè)  [1] [2] 

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