久久久国产精品秘人口麻豆|永久免费AV无语国产|人成电影免费中文字幕|久久AV嫩草影院2

    1. <dfn id="yitbn"><samp id="yitbn"><progress id="yitbn"></progress></samp></dfn>

          <div id="yitbn"></div>

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

            (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<回車>
              則輸出結(jié)果為_________.
              A)a  B)a  C)ab  D)abcdef
              b   b   c
              c   c   d
              d   d
              e
              f
              答案:C
              評析:1.getchar():此函數(shù)的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個字符。
              2.putchar():此函數(shù)的作用是向終端輸出一個字符,也可以輸出控制字符。
              本題在輸入字符時,ab和c后面的回車符分別賦給了c[2]和e[4],所以,正確答案為c。
              
              (27)在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應形參之間的數(shù)據(jù)傳遞方式是_______。
              A)地址傳遞       B)單向值傳遞
              C)由實參傳遞給形參,再由形參傳遞給實參
              D)傳遞方式由用戶指定
              答案:B
              評析:c語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是"單向值傳遞",只由實參傳給形參。在內(nèi)存中,實參單元與形參單元是不同的單元。調(diào)用結(jié)束后,實參單元仍保留并維持原值。
              
              (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)將字符串a(chǎn)bcABC放到了*pl所指向的存儲單元中;strcpy在本題將abcABC復制到str+2所指向的存儲單元中,即覆蓋原str數(shù)組中的字符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ā)現(xiàn),*p=&aa[01[o]語句實際是將數(shù)組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時,aa[0][1]=3,+p=2;*p輸出的是指針所指向的數(shù)組值,此時p所指向的是aa[O][O],輸出2,而i=l時執(zhí)行了++p操作使指針向后移動指向了aa[O兒1],所以在輸出*p時應為3。
              
              (30)以下程序的輸出結(jié)果是_________。
              #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
              評析:在子函數(shù)fun中,sl為字符串w的起始地址,s2為字符串的結(jié)束地址(字符'\O'除外),當執(zhí)行循環(huán)結(jié)束循環(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的二進制數(shù)左移兩位,左移一位相當于該數(shù)乘于2,左移兩位相當于該數(shù)乘以2的2次方。所以,x<<1=32.2=64。
              
              (33)設(shè)有以下定義和語句,輸出的結(jié)果是(用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函數(shù)計算已知類型所占的字節(jié)數(shù)。結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。指針變量占2個字節(jié),所以cat和*next各占2個字節(jié);double型占8個字節(jié),故too共占12個字節(jié)。
              
              (34)以下程序的輸出結(jié)果是_________。
              #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命令行中指定的字符串從左到右進行置換,如果串中包含宏中的形參,則將程序語句中相應的實參代替形參。將實參帶入已經(jīng)定義的宏中,可以得出答案燈"12"。
              
              (35)以下程序段給數(shù)組所有的元素輸入數(shù)據(jù),請選擇正確答案填入:
              #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就是數(shù)組a的首地址,而a+x是數(shù)組中第x個元素的地址,。所以在四個選項中,選項B和c只能輸入一個數(shù)據(jù),選項D不能給a[O]輸入數(shù)據(jù),只有A可以完成給數(shù)組所有的元素輸入數(shù)據(jù)的任務。
              
              (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、一個整數(shù)不能直接賦給一個枚舉變量。
              
              (37)字符(char)型數(shù)據(jù)在微機內(nèi)存中的存儲形式是________.
              A)反碼      B)補碼
              C)EBCDIC碼   D)ASCII碼
              答案:D
              評析:將一個字符常量放到一個字符變量中,實際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的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函數(shù),它的返回值是x型的數(shù)據(jù)結(jié)構(gòu)占用的內(nèi)存字節(jié)數(shù)。題目中定義了一個共用體,共用體變量在內(nèi)存中所占的長度等于最長的成員的長度。
              
              (39)有以下程序,程序運行后的輸出結(jié)果是_________。
              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
              評析:本題通過函數(shù)調(diào)用對數(shù)組a[0][0]、a[1][l]、a[2112]、a[0][3]進行求和,然后用return語句返回s的值。
              
              (40)不能把字符串:Hello!賦給數(shù)組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);
              }
              上面程序的輸出結(jié)果是__________。
              A)23  B)15   C)19  D)18
              答案:A
              評析:stoic聲明的外部變量只限于被本文件引用,而不能被其他文件引用。用static來聲明一個變量的作用有:①對局部變量用static聲明,則為該變量分配的空間在整個程序執(zhí)行期間始終存在;②全部變量用static聲明,則該變量的作用域只限于本文件模塊(即被聲明的文件中)。調(diào)用第一個fun,其兩個實參的值為(3,5+3)與7即8與7,在函數(shù)fun執(zhí)行結(jié)束返回15。第二次調(diào)用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后面括弧內(nèi)的表達式的值與某一個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"是以帶符號的十進制形式輸出整數(shù);"%0"是以8進制無符號形式輸出整數(shù)(不輸出前導符O);"O/ox"是以16進制無符號形式輸出整數(shù)(不輸出前導符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語言以接近英語國家的自然語言和數(shù)學語言作為語言的表達形式
              D)C語言出現(xiàn)的最晚,具有其他語言的一切優(yōu)點
              答案:C
              評析:計算機語言分為低級語言、匯編語言和高級語言,c語言屬于高級語言,但并不是說c語言比其他語言高級,所以選項A錯誤;除了低級語言外,其他各種語言都必須編譯成能被計算機識別的二進制數(shù)才能執(zhí)行,選項B錯誤;C語言出現(xiàn)從1972年到1973年間,并不是出現(xiàn)最晚的語言,所以選項D也是錯誤的。
              
              (47)下列可用于C語言用戶標識符的一組是__________。
              A)void define WORD   B)a3_b3 _123 Car
              C)For -abc IFCase    D)2a DO sizeof
              答案:B
              評析:c語言規(guī)定標識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個字符必須為字母或下劃線,所以排除c和D。c語言還規(guī)定標識符不能為c語言的關(guān)鍵字,從而選項A(void是關(guān)鍵字)是錯誤的。
              
              (48)fgetc函數(shù)的作用是從指定文件讀入一個字符,該文件的打開方式必須是________。
              A)只讀  B)追加  C)讀或讀寫  D)以上均正確
              答案:D
              評析:fgetc函數(shù)是指從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的。電etc"函數(shù)的調(diào)用形式為: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型指針變量,所指向的內(nèi)存單元所占用的字節(jié)數(shù)是不同的,因而不能將字符指針變量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
              評析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和,每個成員分別占有自己的內(nèi)存單元;共用體變量所占的內(nèi)存長度等于最長的成員的長度。結(jié)構(gòu)體變量aa中,成員r1占2個字節(jié),r2占8個字節(jié),r3古4個字節(jié),共用體ua占8個字節(jié),所以共占用2+8+4+8=22個字節(jié)。
              
              二、填空題(每空2分,共40分)
              
              請將每一個空的正確答案寫在答題卡的【1】至【20】序號的橫線上,答在試卷上不得  分。
              
              (1)在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種:前序遍  歷、 【1】 遍歷和后序遍歷。
              答案:【1】中序
              評析:在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷。
              前序遍歷是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹。
              中序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。
              后序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹;并且遍歷左、右子樹時,仍然先遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹。
              
              (2)結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、 【2】 和限制使用goto語句。
              答案:【2】模塊化
              評析:結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自項向下、逐步求精、模塊化和限制使用goto語句。
              自頂向下:程序設(shè)計時,應先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標。不要一開始就過多追求眾多的細節(jié),先從最上層總目標開始設(shè)計,逐步使問題具體化。
              逐步求精:對復雜問題,應設(shè)計一些子目標作過度,逐步細化。
              模塊化:一個復雜問題,肯定是由若干稍簡單的問題構(gòu)成。模塊化是把程序要解決的總目標分解為分目標,再進一步分解為具體的小目標,把每個小目標稱為一個模塊。
              限制使用goto語句。
              
              (3)軟件測試是保證軟件質(zhì)量的重要手段,而軟件測試的主要和重要的測試方法是通過測  試數(shù)據(jù)和 【3】  的設(shè)計來實現(xiàn)。
              答案:【3】測試實例
              評析:進行軟件測試時,應精心設(shè)計測試實例和選擇測試數(shù)據(jù),以對系統(tǒng)進行全面測試。
              
              (4)數(shù)據(jù)庫系統(tǒng)的三級模式分別為 【4】 模式、內(nèi)部級模式與外部級模式。
              答案:【4】概念 或 概念級
              評析:數(shù)據(jù)庫系統(tǒng)在其內(nèi)部具有三級模式及二級映射,三級模式分別是概念級模式、內(nèi)部級模式和外部級模式。
              概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶(應用)公共數(shù)據(jù)視圖。
              內(nèi)模式又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,如數(shù)據(jù)存儲的文件結(jié)構(gòu)、索引、集簇及hash等存取方式與存取路徑,內(nèi)模式的物理性主要體現(xiàn)在操作系統(tǒng)及文件級上,.它還未深入到設(shè)備級上(如磁盤及磁盤操作)。
              外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式,它由概念模式推導面出。
              
              (5)數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、 【5】 和處理過程。
              答案:【5】數(shù)據(jù)存儲
              評析:數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個部分,即數(shù)據(jù)項,是數(shù)據(jù)的最小單位;數(shù)據(jù)結(jié)構(gòu),是若干數(shù)據(jù)項有意義的集合;數(shù)據(jù)流,可以是數(shù)據(jù)項,也可以是數(shù)據(jù)結(jié)構(gòu),表示某一處理過程的輸入或輸出;數(shù)據(jù)存儲,處理過程中存取的數(shù)據(jù),常常是手工憑證、手工文檔或計算機文件;處理過程。
              
              (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)將數(shù)組arr[O]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結(jié)果為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);}
              程序運行后,輸出結(jié)果是 【8】 。
              答案:【8】4
              評析:在主函數(shù)中調(diào)用函數(shù)f,函數(shù)f有三個參數(shù),形參f1與f2分別是兩個指向函數(shù)的指針。在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()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應當為"DDBBCC"。
              
              (10)若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數(shù)據(jù)的形式應該是 【10】 。
              int b,c;float a;
              scanf("%£%d,c=%d",&a,&b,&c)
              答案:【10】5.0,4,c=3
              評析:scanf(格式控制,地址表列),如果在"格式控制"字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時應輸入與這些字符相同的字符。所以此題中輸入數(shù)據(jù)的形式是5.0;4,c=3。
              
              (11)下列程序的輸出結(jié)果是 【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ī)定,實參變量對形參變量的數(shù)據(jù)傳遞是"值傳遞",即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)存中,實參單元與形參單元是不同的單元。在調(diào)用函數(shù)時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結(jié)果是5 6。
              
              (12)下面程序的輸出結(jié)果是 【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
              評析:由于在函數(shù)main中定義了數(shù)組變量b,其將屏蔽全局變量b。對于一維數(shù)組變量,其值為一常數(shù),等于數(shù)組首元素地址。strcpy(&b[0],"GH"),是將字符串。"GH"復制到數(shù)組b中從首元數(shù)開始的空間中,此是b中的字符串為"GH";strcpy(&b[1],"GH"),是將字符串。"GH"復制到數(shù)組b中從第二個元素開始的空間中,此是b中的字符串為"GH"。執(zhí)行第三次strcpy函數(shù)后,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
              評析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。
              
              (14)下述函數(shù)用于統(tǒng)計一行字符中的單詞個數(shù),單詞之間用空格分隔。
              Word_num(str)
              char str[];
              {int i,num=O,word=O;
              for(i=0;str[i]!= 【15】;i++)
              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
              評析:觀察題目要求,可以知道以下幾點:
             、賔or循環(huán)的結(jié)束條件應當是:str[i]已是字符串的最后一個字符;
             、趕trⅢ代表字符串str中的第i+1個字符;
             、壅妥兞縩um的值是要記錄的單詞的個數(shù)。
              c語言中規(guī)定字符串的最后一個字符是一個隱含的字符串結(jié)束符"\0",所以在題中第一個空中應填寫"\0";題中第二個空應填寫"str[i]",以判斷當前位置的字符是否為空格;題中第三個空中應當填寫"num++",通過變量num的加l累加得到字符串中的單詞個數(shù)。
              
              (15)有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來的順序規(guī)律將它插入到數(shù)組中。算法是:假設(shè)排序順序是從小到大,對輸入的數(shù),檢查它在數(shù)組中哪個數(shù)之后,然后將比這個數(shù)大的數(shù)順序后移一個位置,在空出的位置上將該數(shù)插入。請在程序中的空白處填上一條語句或一個表達式。
              #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】;I--)
              a[I+1]=a[I];
              a[p]_x;
              for(i=0; 【20】;i++)
              { primf("%8.2f",a[i]);
              if(i%5==O)
              printf("\n");
              }
              }
              答案:【18】p=i;
              【19】i>=p
              【20】i<=N
              評析:本題主要考查了插入排序。由于程序中的數(shù)組在開始已經(jīng)按從小到的大順序排好。在插入時,首先要查到第一個大于待插入數(shù)的數(shù)組下標,即當待插入元素小于數(shù)組中當前元素時,記下數(shù)組的當前下標p,并結(jié)束循環(huán)。故第一空目的是為了記下數(shù)組下標,應填p=i;插入排序的第二部是將大于待插入元素的所有元素都向后移動一位,故在循環(huán)時,要從最后一個元素到第p個元素都要后移一位,因此第二空應埴i>=p。最后一個循環(huán)是將N+1個元素都輸出,故最后一空應為i<=N。(注:本題有多種答案,以上僅提供一種)

            [1] [2] 下一頁  

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