【正文】
mat=%s,a=%d,b=%d\n?! nt a=11,b=10?! +=b?! rintf(format,a+=b,a,b)?! )for,a+=b,ab B)format,a+=b C)a+=b,a=21,b=10 D)以上結(jié)果都不對(duì)(36)C語(yǔ)言允許函數(shù)類(lèi)型缺省定義,此時(shí)函數(shù)值隱含的類(lèi)型是 A)float B)int C)long D)double(37)以下程序有語(yǔ)法錯(cuò)誤,有關(guān)錯(cuò)誤原因的正確說(shuō)法是 main() { int G=5,k。 void prt_char()?! ?.. k=prt_char(G)?! ?.. } A)語(yǔ)句 void prt_char()。有錯(cuò),它是函數(shù)調(diào)用語(yǔ)句,不能用void說(shuō)明 B)變量名不能使用大寫(xiě)字母 C)函數(shù)說(shuō)明和函數(shù)調(diào)用語(yǔ)句之間有矛盾 D)函數(shù)名不能使用下劃線(38)以下敘述中不正確的是 A)在不同的函數(shù)中可以使用相同的名字的變量 B)函數(shù)中的形式參數(shù)是局部變量 C)在一個(gè)函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效 D)在一個(gè)函數(shù)內(nèi)的復(fù)合語(yǔ)句中定義的變量在本函數(shù)范圍內(nèi)有效(39)有以下程序: include union pw { int i?! har ch[2]。}a。 main() {[0]=13。[1]=0。printf(%d\n,)。} 程序的輸出結(jié)果是 A)13 B)14 C)208 D)209(40)在16位IBMPC機(jī)上使用C語(yǔ)言,若有如下定義 struct data { int i?! har ch?! ouble f。 } b。 則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是 A)1 B)2 C)7 D)11(41)下面程序的運(yùn)行結(jié)果是 include main() { int a=1,b=10。 do {b=a。a++。}while(b0)。 printf(a=%d,b=%d\n,a,b)?! A)a=3,b=11 B)a=2,b=8 C)a=1,b=1 D)a=4,b=9(42)以下程序的輸出結(jié)果是 void reverse(int a[],int n) { int i,t?! or(i=0。in/2。i++) { t=a[i]。 a[i]=a[n1i]。a[n1i]=t。} } main() { int b[10]={1,2,3,4,5,6,7,8,9,10}。 int i,s=0?! everse(b,8)?! or(i=6。i10。i++)s+=b[i]?! rintf( %d\n ,s)。 } A)22 B)10 C)34 D)30(43)有如下程序: long fib(int n) { if(n2)return(fib(n1)+fib(n2))?! lse return(2)?! main() { printf(%d\n,fib(3))。} 該程序的輸出結(jié)果是 A)2 B)4 C)6 D)8(44),如果在此可執(zhí)行文件所在目錄的DOS提示符下鍵入: PROG ABCDEFGH IJKL回車(chē),則輸出結(jié)果為 main( int argc, char *argv[]) { while(argc0) printf(%s,argv[argc])?! rintf(\n)?! A)ABCDEFG B)IJHL C)ABCDEFGHIJKL D)IJKLABCDEFGH(45)以下程序有錯(cuò),錯(cuò)誤原因是 main() { int *p,i。char *q,ch?! =amp。i?! =amp。ch。 *p=40?! ?p=*q?! ?..... } A)p和q的類(lèi)型不一致,不能執(zhí)行*p=*q。語(yǔ)句 B)*p中存放的是地址值,因此不能執(zhí)行*p=40。語(yǔ)句 C)q沒(méi)有指向具體的存儲(chǔ)單元,所以*q沒(méi)有實(shí)際意義 D)q雖然指向了具體的存儲(chǔ)單元,但該單元中沒(méi)有確定的值,所以執(zhí)行*p=*q。沒(méi)有意義,可能會(huì)影響后面語(yǔ)句的執(zhí)行結(jié)果(46)函數(shù) rewind 的作用是 A)使文件位置指針重新返回文件的開(kāi)始位置 B)將文件位置指針指向文件中所要求的特定位置 C)使文件位置指針指向文件的末尾 D)使文件位置指針自動(dòng)移至下一個(gè)字符位置(47)設(shè)有以下說(shuō)明語(yǔ)句 struct ex { int x 。 float y。 char z 。} example。 則下面的敘述中不正確的是 A)struct結(jié)構(gòu)體類(lèi)型的關(guān)鍵字 B)example是結(jié)構(gòu)體類(lèi)型名 C)x,y,z都是結(jié)構(gòu)體成員名 D)struct ex是結(jié)構(gòu)體類(lèi)型名(48)設(shè)有以下語(yǔ)句: char x=3,y=6,z?! =x^y2。 則z的二進(jìn)制值是 A)00010100 B)00011011 C)00011100 D)00011000(49)閱讀以下程序及對(duì)程序功能的描述,其中正確的描述是 include main() { FILE *in,*out?! har ch,infile[10],outfile[10]?! rintf(Enter the infile name:\n)。 scanf(%s,infile)?! rintf(Enter the outfile name:\n)?! canf(%s,outfile)。 if((in=fopen(infile,r))==NULL) { printf(cannot open infile\n)?! xit(0)。 } if((out=fopen(outfile,w))==NULL) { printf(cannot open outfile\n)?! xit(0)?! while(! feof(in))fputc(fgetc(in),out)?! close(in)?! close(out)?! A)程序完成將磁盤(pán)文件的信息在屏幕上顯示的功能 B)程序完成將兩個(gè)磁盤(pán)文件合二為一的功能 C)程序完成將一個(gè)磁盤(pán)文件復(fù)制到另一個(gè)磁盤(pán)文件中 D)程序完成將兩個(gè)磁盤(pán)文件合并并在屏幕上輸出(50)C語(yǔ)言中,能識(shí)別處理的文件為 A)文本文件和數(shù)據(jù)塊文件 B)文本文件和二進(jìn)制文件 C)流文件和文本文件 D)數(shù)據(jù)文件和二進(jìn)制文件二、填空題(6)下面程序是指從終端讀入的20個(gè)字符放入字符數(shù)組中,然后利用指針變量輸出上述字符串,請(qǐng)?zhí)羁?。include main (){ int i。 char s[21],*p。for (i=0;i20;i++)s[i]=getchar ()。s[i]=【6】。p =【7】while (*p)putchar (【8】)。}解析: 本題選通過(guò)for循環(huán)從鍵盤(pán)讀入20個(gè)字符,然后在最后賦一定值′\0′后為結(jié)束標(biāo)志,再使指針P指向字符串的首地址。最后通過(guò)while循環(huán)對(duì)字符串進(jìn)行掃描并輸出。(7),請(qǐng)?zhí)羁?。include main (){ FILE *fp;char a[4]=1234,b[6]=abcedf;if((fp=fopen(【9】,wb))=NULL)exit(0);fwrite(a,sizeof(char),4,fp)。fwrite(b,【10】,1,fp)。fclose(fp)。}解析: 本題主要考查函數(shù)fwrite (char *pt,unsigned size,unsigned n,FILE *fp),把pt所指向的n*size個(gè)字節(jié)輸出到fp所指定的文件中。(8)在C語(yǔ)言中(以16位PC機(jī)為例),一個(gè)float型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為4;一個(gè)double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為【11】。解析: 在一般系統(tǒng)中,一個(gè)float型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(32位),一個(gè)double型數(shù)據(jù)占8個(gè)字節(jié)。(9) 以下程序輸出的結(jié)果是【12】。main(){ int a=5,b=4,c=3,d。d=(abc)。printf(%d\n,d)。}解析: 本題的關(guān)鍵在于對(duì)變量c的賦值運(yùn)算:d=(abc)d=(543)先算53,為真,得1,即:d=(13),此時(shí)13,為假,得0。(10)以下函數(shù)的功能是求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個(gè)數(shù)通過(guò)形參n返回。例如,若x中的值為30,則有4個(gè)數(shù)符合要求,它們是1,3,5,15。請(qǐng)按題意,完成填空。試題程序:include include void fun (int x, int pp[], int *n){ int i,j=0?!?3】if(x%i==0)pp[j++]=i?!?4】。}main (){ int x,aa[1000], n, i 。clrscr()。printf(\nPlease enter an integer number : \n )。 scanf (%d , amp。x)。fun (x, aa, amp。n)。for (i=0 。 in 。 i++)printf (%d , aa [i])。printf (\n )。}解析: 本題題干信息是能整除且不是偶數(shù)的所有整數(shù)之和。循環(huán)語(yǔ)句中i從1開(kāi)始且每次增2,所以i始終是奇數(shù),*n=j;語(yǔ)句是記錄能夠符合題意的各個(gè)整數(shù)的各數(shù)。include include int fun(int *s, int t, int *k){ int i。*k=0?!?5】if(s[*k]s[i])*k=i。return【16】。}main(){int a[10]={ 876,675,896,101,301,401,980,431,451,777},k。clrscr()。fun(a, 10, amp。k)。printf(%d, %d\n , k, a[k])。}解析: 本題中直接使用指針變量k,但在使用時(shí)要注意對(duì)k的指針運(yùn)算,此外,一開(kāi)始應(yīng)認(rèn)*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。(12)mystrlen函數(shù)的功能是計(jì)算str所指字符串的長(zhǎng)度,并作為函數(shù)值返回。請(qǐng)?zhí)羁铡nt mystrlen(char *str){ int i。for(i=0。【17】!= ′\0′。i++)。return(i)。}解析: str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過(guò)程中,可以用 *(str+i)來(lái)訪問(wèn)字符串中的第i個(gè)元素,判斷是否是結(jié)束標(biāo)志,如果不是,i=i+1,繼續(xù)取下一個(gè)元素進(jìn)行判斷,直到 *(str+i)的值為′\0′為止,也可以用下標(biāo)的方式引用字符,如*(str+i)相當(dāng)于str[i]。(13)以下程序的輸出結(jié)果為【18】。define JFT(x)x*xmain(){ int a, k=3。a=++JFT(k+1)。printf(%d,a)。}解析: 宏替換的原則是按原樣替換,本題中遇到形參x則以實(shí)參k+1替換,其他字符不變。所以JFT(k+1)經(jīng)替換后為k+1*k+1,所以a=++k+1*k+1,若k+1,若k的值為3,則經(jīng)過(guò)運(yùn)算為a=4+1*4+1=9。(14)以下定義的結(jié)構(gòu)體類(lèi)型擬包含兩個(gè)成員,其中成員變量info用來(lái)存入整形數(shù)據(jù)。成員變量link是指向自身結(jié)構(gòu)體的指針,請(qǐng)將定義補(bǔ)充完整。struct node{ int info?!?9】link。}。解析: 本題中的結(jié)構(gòu)類(lèi)型名為struct node,所以空白處應(yīng)填:struct node *。即定義一個(gè)指向自身的結(jié)構(gòu)體指針。(15)設(shè)有以下結(jié)構(gòu)體類(lèi)型:struct st{ char name[8]。int num。float s[4]。}student[50]。并且結(jié)構(gòu)體數(shù)組student中的元素都已有值,若要將這些元素寫(xiě)到硬盤(pán)文件fp中,請(qǐng)將以下fwrite語(yǔ)句補(bǔ)充完整:fwrite(student,【20】,1,fp)。解析: fwrite函數(shù)的一般調(diào)用形式為:fwrite(buffer,size,count,fp),其中:buffer:是一個(gè)指針變量,是要輸出數(shù)據(jù)的起始地址size:要寫(xiě)的字節(jié)數(shù)count:要進(jìn)行寫(xiě)多少個(gè)size字節(jié)的數(shù)據(jù)項(xiàng)fp:文件型指針一、選擇題 1115 A C B B A 1620 D D B C B 2125 D D A C A 2630 A C B C C 3135 C D B D C 3640 B C D A D 4145 B A B D D 4650 A B B C B試題四一、選擇題(11)C語(yǔ)言規(guī)定,在一個(gè)源程序中,main函數(shù)的位置 A)必須在最開(kāi)始 B)必須在系統(tǒng)調(diào)用的庫(kù)函數(shù)的后面 C)可以任意 D)必須在最后(12)下列數(shù)據(jù)中,不合法的C語(yǔ)言實(shí)型數(shù)據(jù)的是 A) B)123e3 C) D)(13)下面四個(gè)選項(xiàng)中,均是不合法的用戶標(biāo)識(shí)符的選項(xiàng)是 A)A P_0 do B)float la0 _A C)ba goto int D)_123 temp int(14)設(shè)變量a是int型,f是float型,i是double型,則表達(dá)式10+′a′+i*f值的數(shù)據(jù)類(lèi)型為 A)int B)float C)double D)不確定(15)能正確表示邏輯關(guān)系:“a≥10或a≤0”的C語(yǔ)言表達(dá)式是 A)a=10 or a=0 B)a=0|a=10 C)a=10 amp。amp。a=0 D)a=10‖a=0(16)設(shè)以下變量均為int類(lèi)型,表達(dá)式的值不為7的是 A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1) C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1)(17)若有說(shuō)明:int *p,m=5,n。以下正確的程序段是 A)p=amp。n。scanf(%d,amp。p)。 B)p=amp。n。scanf(%d,*p) C)scanf(%d,amp。n)。*p=n。 D)p=amp。n。*p=m。(18)以