- 相關(guān)推薦
C語(yǔ)言經(jīng)典例題及答案(精選7套)
引導(dǎo)語(yǔ):C語(yǔ)言應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開(kāi)發(fā)上,而且各類(lèi)科研都需要用到C語(yǔ)言,適于編寫(xiě)系統(tǒng)軟件,三維,二維圖形和動(dòng)畫(huà),具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開(kāi)發(fā)。以下是小編整理的C語(yǔ)言經(jīng)典例題及答案,歡迎參考閱讀!
C語(yǔ)言經(jīng)典例題及答案 1
一、求一個(gè)任意邊長(zhǎng)的矩形面積。
#include
void main()
{int w,h,sum;
scanf("%d%d",&w,&h);
sum=w*h;
printf("area=%d",sum);
}
二、求一個(gè)任意半徑的圓的面積及周長(zhǎng)。
#define PI 3.14159
#include
void main()
{float r,area,c;
scanf("%f",&r);
area=PI*r*r;
c=2*PI*r;
printf("area=%fcircle=%f",area,c);
}??
三、已知:w=5, y=4, z=2, 求表達(dá)式:w*y/z的值,并輸出。
##include
void main()
{ int w,y,z,r;
w=5;
y=4;
z=2;
r=w*y/z;
printf("%5d",r);
}
一、從鍵盤(pán)上輸入三個(gè)數(shù),求出其中的`最大值,并輸出。
#include
void main()
{int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
max=a;
if(max
if(max printf("max=%d",max); }?? 二、求sin300+sin600+cos300+cos600之和。(注意:30*3.14159/180) #include #define PI 3.14159 #include void main() {float a,b,sum; a=30*PI/180; b=60*PI/180; sum=sin(a)+sin(b)+cos(a)+cos(60); printf("total=%f",sum); } 三、比較兩個(gè)數(shù)的大小。如果x大于y,則輸出:x>y,否則輸出:x #include void main() {int x,y; scanf("%d,%d",&x,&y); if(x>y) printf("x>y"); else printf("x } 1: 第1題請(qǐng)編寫(xiě)函數(shù)fun,其功能使:將兩個(gè)兩位正整數(shù)a b合并形成一個(gè)整數(shù)放在c中。合并的方式使:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和個(gè)位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的千位和十位上。 答案: void fun(int a,int b,long *c) {*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;} 2: 第2題請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能使:計(jì)算n門(mén)課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。 答案: float fun(float *a,int n) {float ave=0.0; int i; for(i=0;i ave+=a; ave/=n; return ave;} 3: 第3題假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)fun,它的.功能使:將字符串尾部的*號(hào)全部刪除,前面和中間的*號(hào)不刪除。 答案: void fun(char *a) {int i=0; char *p,*q; p=q=a; while(*p) p++; p--; while(*p==‘*’) p--; while(q<=p) {a=*q; i++; q++;} a=‘’;} 4: 第4題請(qǐng)編寫(xiě)函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a b合并形成一個(gè)整數(shù)放在c中,合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c的個(gè)位和百位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的千位和十位上。 答案: void fun(int a,int b,long *c) {c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;} 5: 第5題 n名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:求出平均分,由函數(shù)值返回。 答案: double fun(strec *h) {double aver=0.0; while(h!=null) {aver+=h->s; hy=h->next;} aver/=n; return aver;} 6: 第6題請(qǐng)編寫(xiě)函數(shù)fun,計(jì)算并輸出給定10個(gè)數(shù)的方差。 答案: double fun(double x[10]) {int i,j; double s=0.0,s1=0.0; for(i=0;i<10;i++) s1+=x; s1/=10; for(j=0;j<10;j++) s+=(x[j]-s1)*(x[j]-s1); s/=10; s=pow(s,0.5); return s;} 7: 第7題請(qǐng)編寫(xiě)函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a b合并形成一個(gè)整數(shù)放在c 中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的千位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的個(gè)位和百位上。 答案: void fun(int a,int b,long *c) {*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;} c語(yǔ)言試題 一 選擇題(7分,每小題0.5分) 1.C語(yǔ)言源程序的基本單位是( )。 A 過(guò)程 B 函數(shù) C 子程序 D 標(biāo)識(shí)符 2.下列程序的輸出結(jié)果是( )。 main( ) { int a=7,b=5; printf("%d ",b=b/a); } A 5 B 1 C 0 D不確定值 3.假設(shè)變量a,b均為整型,表達(dá)式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。 A 7 B 8 C 9 D 2 4.設(shè)a為int型變量,執(zhí)行下列賦值語(yǔ)句后,a的取值分別是( )。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.設(shè)有如下程序段,下面描述中正確的是 ( )。 int k=10; while(k=0) k=k-1; A 循環(huán)執(zhí)行一次 B循環(huán)是無(wú)限循環(huán) C循環(huán)體語(yǔ)句一次也不執(zhí)行 D循環(huán)體語(yǔ)句執(zhí)行一次 6.以下程序的輸出結(jié)果為( )。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",*); printf(" "); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C語(yǔ)言程序中,以下說(shuō)法正確的是( )。 A函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套 B函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套 C函數(shù)的定義和函數(shù)的調(diào)用都不可以嵌套 D函數(shù)的定義和函數(shù)的調(diào)用都可以嵌套 8.以下函數(shù)調(diào)用語(yǔ)句中含有( )個(gè)實(shí)參。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 語(yǔ)法錯(cuò)誤 9.以下程序的輸出結(jié)果為( )。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf("d=%d",d); } A d=70 B d=80 C d=140 D d=700 10.已知職工記錄描述如下,在Turbo C中,系統(tǒng)為變量w分配( )字節(jié)的空間。 struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A 29 B 20 C 25 D 6 11.設(shè)有以下定義,值為5的枚舉常量是( )。 enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu 12.下面選項(xiàng)中正確的賦值語(yǔ)句是(設(shè) char a[5],*p=a;)( )。 A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd"; 13.設(shè)有以下程序段,則值為6的表達(dá)式是( )。 struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p; p=&a[0]; A p++->n B ++p->n C p->n++ D (*p).n++ 14.C語(yǔ)言中的文件類(lèi)型只有( )。 A 索引文件和文本文件兩種 B 文本文件一種 C 二進(jìn)制文件一種 D ASCII碼文件和二進(jìn)制文件兩種 二 判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(5分,每小題0.5分) 1.在Turbo C中,整型數(shù)據(jù)在內(nèi)存中占2個(gè)字節(jié)。( ) 2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的輸出結(jié)果為A。( ) 3.break語(yǔ)句用在循環(huán)體中,可結(jié)束本層循環(huán),continue語(yǔ)句用在循環(huán)體中,可結(jié)束本次循環(huán)。( ) 4.函數(shù)的遞歸調(diào)用不過(guò)是一個(gè)函數(shù)直接或間接地調(diào)用它自身。( ) 5.函數(shù)strlen("ASDFG ")的值是7。( ) 6.通過(guò)return語(yǔ)句,函數(shù)可以帶回一個(gè)或一個(gè)以上的返回值。( ) 7.結(jié)構(gòu)體類(lèi)型只有一種。 ( ) 8.char *p="girl";的含義是定義字符型指針變量p,p的值是字符串"girl"。( ) 9.若有定義:char *p(char a[10]);則p是函數(shù)名。( ) 10.用fopen("file","r+");打開(kāi)的文件"file"可以進(jìn)行修改。 ( ) 三 寫(xiě)出下列程序的運(yùn)行結(jié)果(10分,每小題2分) 1.float average (float array[10]) { int i; float aver,sum=array[0]; for (i=1;i<10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } main( ) { float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver; int i; aver=average (score); printf (“average score is %5.2f ”,aver); } 2.main( ) { char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa; printf(“%2c”,*p); printf(“ ”); printf(“%2c ”,**(pa=&p)); } 3.main( ) { int a,b,s=0; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } printf(“a=%d b=%d ”,a,b); } 4.main() { printf(“main( ) :%d ”,fact(5)); fact(-5); } fact(int value) { int f; if(value<0) { printf(“Arg error "); return(-1); } else if(value==1||value==0) f=1; else f=value*fact(value-1)+1; printf(“This called value=%d ”,f); return f; } 5.main( ) { int a=012,b=0x12,k=12; char c=‘102’,d=‘ ’; printf(“a=%d b=%d k=%d ”,a,b,k); printf(“c=%c,d=%c%o ”,c,d,a); a=‘A’; c=49; printf(“a=%d c=%c ”,a,c); } 四 閱讀下列程序,在 處填入適當(dāng)內(nèi)容,使程序完整(8分,每個(gè)空1分) 1.有一個(gè)3*4矩陣,求其中的最大元素。 max_value( (1) ) { int i,j,max; max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(array[i][j]>max) max=array[i][j]; (2) ; } main( ) { int a[3][4], i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) (3) ; printf(“max value is %d ”,max_value(a)); } 2.輸入x、y兩個(gè)整數(shù),按先大后小的順序輸出x、y。 #include “stdio.h” main( ) { int x,y, *px,*py, (4) ; scanf(“%d%d”,&x,&y); (5) ; (6) ; if(x { p=px; px=py; py=p; } printf(“x=%d,y=%d ”,x,y); printf(“MAX=%d,MIN=%d ”,*px,*py); } 3.用選擇排序法對(duì)任意10個(gè)整數(shù)按照由小到大排序。 main() { int a[11],i,j,k,t; printf("Please input 10 numbers: "); for(i=1;i<11;i++) scanf("%d",&a[i]); printf(" "); for(i=1;i<=9;i++) { (7) ; for(j=i+1; (8) ;j++) if(a[j]>a[k]) k=j; if(k!=i) { t=a[k]; a[k]=a[i]; a[i]=t;} } printf("The sorted numbers: "); for(i=1;i<11;i++) printf("%d ",a[i]); } 答案 一 選擇題(7分,每小題0.5分) 1. B 2. C 3. B 4. B 5. C 6. A 7. B 8. A 9. A 10. C 11. A 12. A 13. B 14. D 二 判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(5分,每小題0.5分) 1.× 2.× 3.√ 4.√ 5.× 6.× 7.× 8.× 9.√ 10.√ 三 寫(xiě)出下列程序的運(yùn)行結(jié)果(10分,每小題2分) 1. 2. 3. 4. 5. 四 閱讀下列程序,在 處填入適當(dāng)內(nèi)容,使程序完整(8分,每個(gè)空1分) 1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j]) 2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x) 3.(7) (8) 2003C語(yǔ)言試題3 一 選擇題(24分,每小題2分) 1.已知函數(shù)fread的調(diào)用形式為fread(buffer,size,count,fp),其中buffer代表的是( )。 A 存放讀入數(shù)據(jù)項(xiàng)的存儲(chǔ)區(qū) B 存放讀入數(shù)據(jù)的地址或指向此地址的指針 C 一個(gè)指向所讀文件的文件指針 D 一個(gè)整形變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù) 2.以下程序的輸出結(jié)果為( )。 main( ) { int i=010,j=10; printf("%d,%d ",i++,j--); } A 11,9 B 9,10 C 8,10 D 9,9 3.設(shè)a為int型變量,執(zhí)行下列賦值語(yǔ)句后,a的取值分別是( )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2; A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20 4.設(shè)i和k都是int類(lèi)型,則for循環(huán)語(yǔ)句( )。 for(i=0,k=-1;k=1;i++,k++) printf("****"); A 循環(huán)結(jié)束的條件不合法 B 循環(huán)體一次也不執(zhí)行 C 循環(huán)體只執(zhí)行一次 D 是無(wú)限循環(huán) 5.以下程序的輸出結(jié)果為( )。 main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32; switch(c) { case a:case b:case c:printf("%c,",c);break; default:printf("end");} } } A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 6.函數(shù)調(diào)用語(yǔ)句:fseek(fp,-10L,2);的含義是( )。 A 將文件位置指針從文件末尾處向文件頭的方向移動(dòng)10個(gè)字節(jié) B 將文件位置指針從當(dāng)前位置向文件頭的方向移動(dòng)10個(gè)字節(jié) C 將文件位置指針從當(dāng)前位置向文件末尾方向移動(dòng)10個(gè)字節(jié) D 將文件位置指針移到距離文件頭10個(gè)字節(jié)處 7.以下程序的輸出結(jié)果為( )。 main( ) { char s1[40]="country",s2[20]="side"; int i=0,j=0; while(s1[i]!=) i++; while(s2[j]!=) s1[i++]=s2[j++]; s1[i]=0; printf("%s ",s1); } A side B country C sidetry D countryside 8.下列說(shuō)法不正確的是( )。 A 主函數(shù)main中定義的變量在整個(gè)文件或程序中有效 B 不同函數(shù)中,可以使用相同名字的變量 C 形式參數(shù)是局部變量 D 在一個(gè)函數(shù)內(nèi)部,可以在復(fù)合語(yǔ)句中定義變量,這些變量只在本復(fù)合語(yǔ)句中有效 9.在下列程序段中,枚舉變量 c1的值是( )。 enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white; A 1 B 3 C 5 D 6 10.設(shè)有說(shuō)明 int (*ptr)();其中標(biāo)識(shí)符ptr是( )。 A 是一個(gè)指向整形變量的指針 B 是一個(gè)指針,它指向一個(gè)函數(shù)值是int的函數(shù) C 是一個(gè)函數(shù)名 D定義不合法 11.定義由n個(gè)指向整形數(shù)據(jù)的指針組成的數(shù)組p,其正確的方式為( )。 A int p; B int (*p)[n]; C int *p[n]; D int (*p)( ); 12.具有相同類(lèi)型的指針類(lèi)型變量p與數(shù)組a,不能進(jìn)行的.操作是( )。 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 二 判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(20分,每小題2分) 1.參加位運(yùn)算的數(shù)據(jù)可以是任何類(lèi)型的數(shù)據(jù)。( ) 2.若有定義和語(yǔ)句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通過(guò)鍵盤(pán)輸入:10,A,12.5,則a=10,c=‘A’,f=12.5。( ) 3.C語(yǔ)言把文件看作是一個(gè)字符(字節(jié))的序列。( ) 4.若有宏定義:#define S(a,b) t=a;a=b;b=t由于變量t沒(méi)定義,所以此宏定義是錯(cuò)誤的。( ) 5.在Turbo C中,下面的定義和語(yǔ)句是合法的:file *fp;fp=fopen("a.txt","r");( ) 6.若有定義:char s[ ]="china";則Turbo C系統(tǒng)為數(shù)組s開(kāi)辟6個(gè)字節(jié)的內(nèi)存單元。( ) 7.若有定義和語(yǔ)句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];則sum=21。( ) 8.若有定義和語(yǔ)句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);輸出結(jié)果是1。( ) 9.在程序中定義了一個(gè)結(jié)構(gòu)體類(lèi)型后,可以多次用它來(lái)定義具有該類(lèi)型的變量。( ) 10.在Turbo C中,此定義和語(yǔ)句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( ) 三 寫(xiě)出下列程序的運(yùn)行結(jié)果(36分,每小題6分) 1.main( ) { int i=29,j=6,k=2,s; s=i+i/j%k-9; printf(“s=%d ”,s); } 2.main( ) { int x=31,y=2,s=0; do { s-=x*y; x+=2; y-=3;} while( x%3==0); printf(“x=%d y=%d s=%d ”,x,y,s); } 3.main( ) { int a[6]={10,20,30,40,50,60},i; invert(a,0,5); for(i=0;i<6;i++) printf(“%d,”,a[i]); printf(“ ”); } invert(int s[ ],int i,int j) { int t; if(i { invert(s,i+1j-1); t=s[i];s[i]=s[j];s[j]=t; } } 4.#include main() { char str[ ]=“The C program”,c; int i; for(i=2;(c=str[i])!=‘’;i++) { switch(c) { case ‘g’: ++i; break; case ‘o’: continue; default: printf(“%c”,c); continue; } printf(“*”); } printf(“ ”); } 5.struct w { char low; char high; }; union u { struct w byte; short word; }uw; main( ) { int result; uw.word=0x1234; printf(“word value:%04x ”,uw.word); printf(“high byte:%02x ”,uw.byte.high); printf(“l(fā)ow byte:%02x ”,uw.byte.low); uw.byte.low=0x74; printf(“word value:%04x ”,uw.word); result=uw.word+0x2a34; printf(“the result:%04x ”,result); } 6.main() { char *s2=“I love China!”,**s1=&s2; char *s3,c,*s4=“w”; s3=&c; *s3=‘H’; s2=s2+2; printf(“%s %c %s %c ”,s2,*s3,s4,**s1); } 四 閱讀下列程序,在 處填入適當(dāng)內(nèi)容,使程序完整(20分,每個(gè)空2分) 1. 百馬百擔(dān)問(wèn)題:有100匹馬,馱100擔(dān)貨,大馬馱3擔(dān),中馬馱2擔(dān),兩匹小馬馱1擔(dān),問(wèn)大、中、小馬各多少匹? main( ) { int hb,hm,hl,n=0; for(hb=0;hb<=100;hb+= (1) ) for(hm=0;hm<=100-hb;hm+= (2) ) { hl=100-hb- (3) ; if(hb/3+hm/2+2* (3) ==100) { n++; printf("hb=%d,hm=%d,hl=%d ",hb/3,hm/2,2*hl); } } printf("n=%d ",n); } 2.用“起泡法”對(duì)輸入的10個(gè)字符排序后按從小到大的次序輸出。 #define N 10 char str[N]; main() { int i,flag; for(flag=1;flag==1;) { scanf("%s",str); flag=0; printf(" "); } sort(___(4)___); for(i=0;i printf("%c",str[i]); printf(" "); } sort(char str[N]) { int i,j; char t; for(j=1;j for(i=0;(i if(str[i]>str[i+1]) { t=str[i]; ____(5)____; ____(6)____; } } 3.以下程序是一個(gè)函數(shù),功能是求二階矩陣(m行n列矩陣)的所有靠外側(cè)的各元素值之和。(本程序中二階矩陣用一維數(shù)組來(lái)表示。) 例如,矩陣為: 3 0 0 3 2 5 7 3 1 0 4 2 則所有靠外側(cè)的各元素值之和為3+0+0+3+2+3+1+0+4+2=18。 add(int m,int n,int arr[]) { int i,j,sum=0; for(i=0;i for(j=0;j sum=sum+ (7) ; for(j=0;j for(i=1; (8) ;i++) sum=sum+arr[i*n+j]; return(sum); } 4.用指針作函數(shù)參數(shù),編程序求一維數(shù)組中的最大和最小的元素值。 #define N 10 main() { void maxmin(int arr[],int *pt1,int *pt2,int n); int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf("max=%d,min=%d",a,b); } void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; *pt1=*pt2=arr[0]; for(i=1;i { if(arr[i]>*pt1) (9) ; if(arr[i]<*pt2) (10) ; } } 答案 一 選擇題(24分,每小題2分) 1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A ) 7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D ) 二 判斷對(duì)錯(cuò),對(duì)的劃“√”,錯(cuò)的劃“×”(20分,每小題2分) 1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × ) 6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ ) 三 寫(xiě)出下列程序的運(yùn)行結(jié)果(36分,每小題6分) 1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10, 4.e C pr*am 5.word value:1234 6.love China! H w l high byte:12 low byte:34 word value:1274 the result:3ca8 四 閱讀下列程序,在 處填入適當(dāng)內(nèi)容,使程序完整(20分,每個(gè)空2分) 1.(1) 3 (2) 2 (3)hm hl 2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t 3.(7) arr[i*n+j](或者arr[i*10+j]) (8) i 4.(9) *ptr1=arr[i] (10) *ptr2=arr[i] 1.下列敘述中正確的是()。 A.所有數(shù)據(jù)結(jié)構(gòu)必須有根結(jié)點(diǎn) B.所有數(shù)據(jù)結(jié)構(gòu)必須有終端結(jié)點(diǎn)(即葉子結(jié)點(diǎn)) C.只有一個(gè)根結(jié)點(diǎn),且只有一個(gè)葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是線(xiàn)性結(jié)構(gòu) D.沒(méi)有根結(jié)點(diǎn)或沒(méi)有葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是非線(xiàn)性結(jié)構(gòu) 【答案】D 【解析】D項(xiàng)正確,線(xiàn)性結(jié)構(gòu)的特點(diǎn)是:①集合中必存在“第一個(gè)元素"且惟一②集合中必存在“最后一個(gè)元素”且惟一;③除最后一個(gè)元素外,其他數(shù)據(jù)元素均有惟一的“后繼”,④除第一個(gè)元素外,其他數(shù)據(jù)元素均有惟一的“前驅(qū)”。所以沒(méi)有根結(jié)點(diǎn)或沒(méi)有葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是非線(xiàn)性結(jié)構(gòu)。AB兩項(xiàng)錯(cuò)誤,不是所有數(shù)據(jù)結(jié)構(gòu)都必須有根結(jié)點(diǎn)和葉子結(jié)點(diǎn);C項(xiàng)錯(cuò)誤,數(shù)據(jù)結(jié)構(gòu)中若有中間結(jié)點(diǎn)不滿(mǎn)足只有一個(gè)前件或者后件的條件,就不是線(xiàn)性結(jié)構(gòu)。答案選擇D選項(xiàng)。 2.以下敘述中錯(cuò)誤的是()。 A. C語(yǔ)言中的每條可執(zhí)行語(yǔ)句和非執(zhí)行語(yǔ)句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令 B. C程序經(jīng)過(guò)編譯、鏈接步驟之后才能形成一個(gè)真正可執(zhí)行的二進(jìn)制機(jī)器指令文件 C.用C語(yǔ)言編寫(xiě)的程序稱(chēng)為源程序,它以ASCII代碼形式存放在一個(gè)文本文件中 D. C語(yǔ)言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序 【答案】A 【解析】A項(xiàng)錯(cuò)誤,注釋語(yǔ)句不會(huì)被翻譯成二進(jìn)制的機(jī)器指令。C源程序經(jīng)過(guò)C編譯程序編譯之后生成后綴為.obj的二進(jìn)制文件(稱(chēng)為目標(biāo)文件),然后由“鏈接程序”(Link)的軟件把.obj文件與各種庫(kù)函數(shù)連接起來(lái)生成一個(gè)后綴為.exe的'可執(zhí)行文件。答案選擇A選項(xiàng)。 3. C語(yǔ)言主要是借助以下()功能來(lái)實(shí)現(xiàn)程序模塊化的。 A.定義函數(shù) B.定義常量和外部變量 C.三種基本結(jié)構(gòu)語(yǔ)句 D.豐富的數(shù)據(jù)類(lèi)型 【答案】A 【解析】C程序的模塊化主要通過(guò)函數(shù)來(lái)實(shí)現(xiàn)。C語(yǔ)言允許對(duì)函數(shù)單獨(dú)進(jìn)行編譯,從而可以實(shí)現(xiàn)模塊化。答案選擇A選項(xiàng)。 4.有以下程序段: char ch; int k; ch='a'; k=12; print("%c,%d,",h,ch,k); printf("k=%d",k); 已知字符a的ASCII碼十進(jìn)制值為97,則執(zhí)行上述程序段后輸出的結(jié)果是()。 A.因變量類(lèi)型與格式描述符的類(lèi)型不匹配輸出無(wú)定值 B.輸出項(xiàng)與格式描述符個(gè)數(shù)不符,輸出為零值或不定值 C.a,97,12k=12 D. a,97,k=12 【答案】D 【解析】字符變量的值是該字符的ASCII碼值,可以參與整型變量所允許的任何運(yùn)算。"ch='a",%c表示以字符格式輸出ch的值,所以輸出為a;%d表示以十進(jìn)制代碼的形式輸出ch的值,為97;k沒(méi)有對(duì)應(yīng)的輸出格式,不輸出。在第二個(gè)語(yǔ)句中,首先輸出"k=",然后以十進(jìn)制代碼輸出k的值,為12。答案選擇D選項(xiàng)。 5.下列敘述中正確的是()。 A.棧是“先進(jìn)先出”的線(xiàn)性表 B.隊(duì)列是“先進(jìn)后出"的線(xiàn)性表 C.循環(huán)隊(duì)列是非線(xiàn)性結(jié)構(gòu) D.有序線(xiàn)性表既可以采用順序存儲(chǔ)結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) 【答案】D 【解析】有序的線(xiàn)性表既可采用順序存儲(chǔ)結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。A項(xiàng)錯(cuò)誤,棧是“先進(jìn)后出"的線(xiàn)性表B項(xiàng)錯(cuò)誤,隊(duì)列是“先進(jìn)先出"的線(xiàn)性表;C項(xiàng)錯(cuò)誤,循環(huán)隊(duì)列是線(xiàn)性結(jié)構(gòu)的,有序的線(xiàn)性表既可采用順序存儲(chǔ)結(jié)構(gòu),也可采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。 6.某二叉樹(shù)的中序序列為DCBAEFG,后序序列為DCBGFEA,則該二叉樹(shù)的深度(根結(jié)點(diǎn)在第1層)為()。 A. 5 B. 40 C.3 D. 2 【答案】B 【解析】二叉樹(shù)的后序序列為DCBGFEA,則A為根結(jié)點(diǎn)。中序序列為DCBAEFG,則DCB為左子樹(shù)結(jié)點(diǎn),EFG為右子樹(shù)結(jié)點(diǎn)。同理B為C父結(jié)點(diǎn),C為D父結(jié)點(diǎn)。根據(jù)分析,可畫(huà)出左子樹(shù),同理E為F父結(jié)點(diǎn),F(xiàn)為G父結(jié)點(diǎn)。根據(jù)分析,可畫(huà)出右子樹(shù),故二叉樹(shù)深度為4層。答案選擇B選項(xiàng)。 7.設(shè)有定義:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,則以下賦值語(yǔ)句中正確的是()。 A. s[0]=m[1]; B. s=m; C.s.n=m.n; D. s[2].x=m[2].x; 【答案】A 【解析】定義了結(jié)構(gòu)體類(lèi)型數(shù)組s,長(zhǎng)度為2,結(jié)構(gòu)體類(lèi)型數(shù)組m,長(zhǎng)度為2,并對(duì)數(shù)組m進(jìn)行了初始化。同類(lèi)型的結(jié)構(gòu)體可以直接用變量名實(shí)現(xiàn)賦值,A項(xiàng)正確;數(shù)組名為數(shù)組首地址,地址常量之間不可以相互賦值,B項(xiàng)錯(cuò)誤;數(shù)組名為地址常量不是結(jié)構(gòu)體變量,不能引用成員,C項(xiàng)錯(cuò)誤;s[2]與m[2]數(shù)組越界,D項(xiàng)錯(cuò)誤。答案選擇A選項(xiàng)。 8.關(guān)于C語(yǔ)言標(biāo)識(shí)符,以下敘述錯(cuò)誤的是()。 A.標(biāo)識(shí)符可全部由數(shù)字組成 B.標(biāo)識(shí)符可全部由下劃線(xiàn)組成 C.標(biāo)識(shí)符可全部由小寫(xiě)字母組成 D.標(biāo)識(shí)符可全部由大寫(xiě)字母組成 【答案】A 【解析】C語(yǔ)言標(biāo)識(shí)符只能由字母、數(shù)字、下劃線(xiàn)構(gòu)成,且只能以字母、下劃線(xiàn)開(kāi)頭,故答案選擇A選項(xiàng)。 9.以下程序段中的變量已定義為int類(lèi)型,則 sum=pAd=5; pAd=sum++,++pAd,pAd++; printf("%d",pAd); 程序段的輸出結(jié)果是()。 A. 6 B. 4 C. 5 D. 7 【答案】D 【解析】自增和自減運(yùn)算符的兩種用法:前置運(yùn)算,運(yùn)算符放在變量之前,規(guī)則是先使變量的值增(或減)1,然后以變化后表達(dá)式的值參與其他運(yùn)算;后置運(yùn)算,運(yùn)算符放在變量之后,規(guī)則是變量先參與其他運(yùn)算,然后再使變量的值增(或減)1。執(zhí)行pAd=sum++,sum++是后置自增,執(zhí)行完后,pAd=5,sum=6。++pAd和pAd++語(yǔ)句中沒(méi)有其他運(yùn)算,即效果相同,pAd分別加1,兩句執(zhí)行完后,pAd7。答案選擇D選項(xiàng)。 10.設(shè)循環(huán)隊(duì)列為Q(1:m),其初始狀態(tài)為front=rear=m。經(jīng)過(guò)一系列入隊(duì)與退隊(duì)運(yùn)算后,front=20,rear=15,F(xiàn)要在該循環(huán)隊(duì)列中尋找最小值的元素,最壞情況下需要比較的次數(shù)為()。 A. 5 B. 6 C.m-5 D. m-6 【答案】D 【解析】循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu),用隊(duì)尾指針rear指向隊(duì)列中的隊(duì)尾元素,用隊(duì)首指針指向隊(duì)首元素的前一個(gè)位置,因此,從隊(duì)首指針front指向的后一個(gè)位置直到隊(duì)尾指針rear指向的位置之間所有的元素均為隊(duì)列中的元素,隊(duì)列初始狀態(tài)為front=rear=m,當(dāng)front=20,rear=15時(shí),隊(duì)列中有m-20+15=m-5個(gè)元素,最壞情況下需要比較次數(shù)為m-6次。答案選擇D選項(xiàng)。 1.C語(yǔ)言編譯程序的功能是()。 A.執(zhí)行一個(gè)C語(yǔ)言編寫(xiě)的源程序 B.把C源程序翻譯成ASCII碼 C.把C源程序翻譯成機(jī)器代碼 D.把C源程序與系統(tǒng)提供的庫(kù)函數(shù)組合成一個(gè)二進(jìn)制執(zhí)行文件 【答案】C 【解析】編譯程序的功能是將“高級(jí)語(yǔ)言”翻譯為“機(jī)器語(yǔ)言”。每條C語(yǔ)言語(yǔ)句,經(jīng)過(guò)編譯最終都將轉(zhuǎn)換成二進(jìn)制的機(jī)器指令。答案選擇C選項(xiàng)。 2.計(jì)算機(jī)高級(jí)語(yǔ)言程序的運(yùn)行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是()。 A. C語(yǔ)言程序僅可以編譯執(zhí)行 B. C語(yǔ)言程序僅可以解釋執(zhí)行 C. C語(yǔ)言程序既可以編譯執(zhí)行,又可以解釋執(zhí)行; D.以上說(shuō)法都不對(duì) 【答案】A 【解析】編譯執(zhí)行是指程序執(zhí)行前需要一個(gè)專(zhuān)門(mén)的編譯過(guò)程把程序編譯成機(jī)器語(yǔ)言的文件,再次運(yùn)行時(shí)不需要重新翻譯,執(zhí)行效率高;解釋執(zhí)行是指每個(gè)語(yǔ)句都是執(zhí)行的時(shí)候才翻譯,執(zhí)行效率低。用C語(yǔ)言編寫(xiě)的程序必須經(jīng)過(guò)編譯器編譯后,轉(zhuǎn)換為二進(jìn)制的機(jī)器指令來(lái)運(yùn)行。答案選擇A選項(xiàng)。 3.以下敘述中錯(cuò)誤的是()。 A. C語(yǔ)言中的每條可執(zhí)行語(yǔ)句和非執(zhí)行語(yǔ)句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令 B. C程序經(jīng)過(guò)編譯、鏈接步驟之后才能形成一個(gè)真正可執(zhí)行的二進(jìn)制機(jī)器指令文件 C.用C語(yǔ)言編寫(xiě)的程序稱(chēng)為源程序,它以ASCII代碼形式存放在一個(gè)文本文件中 D. C語(yǔ)言源程序經(jīng)編譯后生成后綴為的目標(biāo)程序 【答案】A 【解析】A項(xiàng)錯(cuò)誤,注釋語(yǔ)句不會(huì)被翻譯成二進(jìn)制的機(jī)器指令。C源程序經(jīng)過(guò)C編譯程序編譯之后生成后綴為的二進(jìn)制文件(稱(chēng)為目標(biāo)文件),然后由“鏈接程序”(Link)的軟件把文件與各種庫(kù)函數(shù)連接起來(lái)生成一個(gè)后綴為的可執(zhí)行文件。答案選擇A選項(xiàng)。 4.以下敘述中錯(cuò)誤的是() A.C語(yǔ)言的可執(zhí)行程序是由一系列機(jī)器指令構(gòu)成的 B.用C語(yǔ)言編寫(xiě)的源程序不能直接在計(jì)算機(jī)上運(yùn)行 C.通過(guò)編譯得到的二進(jìn)制目標(biāo)程序需要連接才可以運(yùn)行 D.在沒(méi)有安裝C語(yǔ)言集成開(kāi)發(fā)環(huán)境的機(jī)器上不能運(yùn)行C源程序生成的exe文件 【答案】D 【解析】A項(xiàng)正確,C語(yǔ)言的可執(zhí)行程序是由一系列機(jī)器指令組成的;BC項(xiàng)正確,用C語(yǔ)言編寫(xiě)的源程序必須經(jīng)過(guò)編譯,生成二進(jìn)制目標(biāo)代碼,再經(jīng)過(guò)連接才能運(yùn)行;D項(xiàng)錯(cuò)誤,C語(yǔ)言經(jīng)過(guò)編譯鏈接后的二進(jìn)制目標(biāo)代碼可以脫離C語(yǔ)言集成開(kāi)發(fā)環(huán)境獨(dú)立運(yùn)行。答案選擇D選項(xiàng)。 5.以下敘述正確的是()。 A. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的二進(jìn)制文件 B. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的可執(zhí)行文件 C. C編譯程序把文件后綴為的二進(jìn)制文件編譯成文件后綴為的可執(zhí)行文件 D.鏈接程序把文件后綴為.c的'源程序文件鏈接成文件后綴為的可執(zhí)行文件 【答案】A 【解析】C編譯程序把文件后綴為C的源程序文件編譯成文件后綴為的二進(jìn)制文件,鏈接將一個(gè)或多個(gè)目標(biāo)文件與程序用到的庫(kù)文件連接起來(lái),形成一個(gè)可以在操作系統(tǒng)直接運(yùn)行的執(zhí)行程序,故排除B、C、D項(xiàng),答案選擇A選項(xiàng)。 6.以下敘述中正確的是(A.在C語(yǔ)言程序中,main函數(shù)必須放在其他函數(shù)的最前面 B.每個(gè)后綴為.c的C語(yǔ)言源程序都可以單獨(dú)進(jìn)行編譯 C.在C語(yǔ)言程序中,只有main函數(shù)才可以單獨(dú)進(jìn)行編譯 D.每個(gè)后綴為.c的C語(yǔ)言源程序都應(yīng)該包含一個(gè)main函數(shù) 【答案】B 【解析】main函數(shù)可以在程序的任何位置。每一個(gè)可執(zhí)行的C程序都必須有一個(gè)且只能有一個(gè)主函數(shù)。后綴名為.c的C語(yǔ)言源程序都可以單獨(dú)進(jìn)行編譯。main函數(shù)只是讓執(zhí)行程序的系統(tǒng)知道該從哪里開(kāi)始執(zhí)行程序(從主函數(shù)處執(zhí)行),其他有關(guān)這個(gè)程序的子函數(shù)是通過(guò)函數(shù)調(diào)用來(lái)實(shí)現(xiàn)其功能(不需main函數(shù))。答案選擇B選項(xiàng)。 7.以下敘述中錯(cuò)誤的是()。 A. C語(yǔ)言編寫(xiě)的函數(shù)源程序,其文件名后綴可以是.c B. C語(yǔ)言編寫(xiě)的函數(shù)都可以作為一個(gè)獨(dú)立的源程序文件 C. C語(yǔ)言編寫(xiě)的每個(gè)函數(shù)都可以進(jìn)行獨(dú)立的編譯并執(zhí)行; D.一個(gè)C語(yǔ)言程序只能有一個(gè)主函數(shù) 【答案】C 【解析】C源程序經(jīng)過(guò)C編譯程序編譯之后生成一個(gè)后綴為的二進(jìn)制文件(稱(chēng)為目標(biāo)文件),然后由稱(chēng)為“連接程序”(Link)的軟件,把此文件與C語(yǔ)言提供的各種庫(kù)函數(shù)連接起來(lái)生成一個(gè)后綴為的可執(zhí)行文件。只有含有main函數(shù)的經(jīng)過(guò)編譯鏈接才能執(zhí)行。答案選擇C選項(xiàng)。 8.以下敘述中錯(cuò)誤的是(A.一個(gè)C程序可以包含多個(gè)不同名的函數(shù) B.一個(gè)C程序只能有一個(gè)主函數(shù) C. C程序在書(shū)寫(xiě)時(shí),有嚴(yán)格的縮進(jìn)要求,否則不能編譯通過(guò) D. C程序的主函數(shù)必須用main作為函數(shù)名 【答案】C 【解析】一個(gè)C程序有且只有一個(gè)主函數(shù)main。一個(gè)C程序可以包含多個(gè)不同名字的子函數(shù)。C程序在書(shū)寫(xiě)時(shí)沒(méi)有嚴(yán)格的縮進(jìn)要求。答案選擇C選項(xiàng)。 9.以下敘述中正確的是()。 A. C語(yǔ)言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_(kāi)始執(zhí)行 B.可以在程序中由用戶(hù)指定任意一個(gè)函數(shù)作為主函數(shù),程序?qū)拇碎_(kāi)始執(zhí)行 C. C語(yǔ)言程序?qū)脑闯绦蛑械谝粋(gè)函數(shù)開(kāi)始執(zhí)行; D. main的各種大小寫(xiě)拼寫(xiě)形式都可以作為主函數(shù)名,如:MAIN,Main等 【答案】A 【解析】用戶(hù)不能指定某函數(shù)為主函數(shù),C語(yǔ)言規(guī)定,程序從main函數(shù)開(kāi)始執(zhí)行,從main函數(shù)退出,C語(yǔ)言函數(shù)名區(qū)別大小寫(xiě)。答案選擇A選項(xiàng)。 10.下列敘述中錯(cuò)誤的是()。 A. C程序可以由一個(gè)或多個(gè)函數(shù)組成 B. C程序可以由多個(gè)程序文件組成 C.一個(gè)C語(yǔ)言程序只能實(shí)現(xiàn)一種算法 D.一個(gè)C函數(shù)可以單獨(dú)作為一個(gè)C程序文件存在 【答案】C 【解析】一個(gè)C程序可以有一個(gè)或多個(gè)程序文件,也可以有一個(gè)或多個(gè)函數(shù),所以一個(gè)C語(yǔ)言程序可以實(shí)現(xiàn)多種算法,答案選擇C選項(xiàng)。 1.若有以下數(shù)組說(shuō)明,則i=10;a[a[i]]元素?cái)?shù)值是(C )。 int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}; A、10 B、9 C、6 D、5 先算a[a[i]]內(nèi)層的a[i],由于i=10,因此a[i]即a[10]. a[10]對(duì)應(yīng)下面數(shù)組中的元素為9.因此a[a[i]]即為a[9] a[9]對(duì)應(yīng)下面數(shù)組中的元素為6.因此a[9]即為6 2.若有說(shuō)明:int a[][3]={{1,2,3},{4,5},{6,7}};則數(shù)組a的第一維的大小為: ( B ) A、2 B、3 C、4 D、無(wú)確定值 5 7 D、3 6 9 二維數(shù)組的一維大小,即指二維數(shù)組的行數(shù),在本題中,按行對(duì)二維數(shù)組賦值,因此內(nèi)層有幾個(gè)大括號(hào),數(shù)組就有幾行 3.對(duì)二維數(shù)組的.正確定義是(C ) 詳見(jiàn)教材P149~152,二維數(shù)組的定義、初始化 類(lèi)型符數(shù)組名[常量表達(dá)式][常量表達(dá)式] 二維數(shù)組可以看做是矩陣 類(lèi)型符是指數(shù)組中數(shù)組元素的類(lèi)型;數(shù)組名要符合標(biāo)識(shí)符命名規(guī)則;第一個(gè)常量表達(dá)式是指數(shù)組的行數(shù);第二個(gè)常量表達(dá)式是指數(shù)組的列數(shù);常量表達(dá)式的值只能是整數(shù),不可以是變量,而且從1開(kāi)始計(jì)數(shù)。 一維數(shù)組初始化時(shí)可以省略數(shù)組長(zhǎng)度 二維數(shù)組初始化時(shí)可以省略行數(shù),但不能省略列數(shù) 選項(xiàng)A,B,都省略了列數(shù) 選項(xiàng)D,不符合二維數(shù)組定義的一般形式,行、列常量表達(dá)式應(yīng)該放在不同的[]中 A、int a[ ][ ]={1,2,3,4,5,6}; B、int a[2] []={1,2,3,4,5,6}; C、int a[ ] [3]={1,2,3,4,5,6}; D、int a[2,3]={1,2,3,4,5,6}; 4.已知int a[3][4];則對(duì)數(shù)組元素引用正確的是__C___ A、a[2][4] B、a[1,3] C、a[2][0] (1)算法的時(shí)間復(fù)雜度是指_______。 A)執(zhí)行算法程序所需要的時(shí)間 B)算法程序的長(zhǎng)度 C)算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù) D)算法程序中的指令條數(shù) 答案:C 評(píng)析:所謂算法的時(shí)間復(fù)雜度,是指執(zhí)行算法所需要的計(jì)算工作量。 (2)下列敘述中正確的是________。 A)線(xiàn)性表是線(xiàn)性結(jié)構(gòu)B)棧與隊(duì)列是非線(xiàn)性結(jié)構(gòu) C)線(xiàn)性鏈表是非線(xiàn)性結(jié)構(gòu)D)二叉樹(shù)是線(xiàn)性結(jié)構(gòu) 答案:A 評(píng)析:一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類(lèi)型:線(xiàn)性結(jié)構(gòu)與非線(xiàn)性結(jié)構(gòu)。線(xiàn)性表、棧與隊(duì)列、線(xiàn)性鏈表都是線(xiàn)性結(jié)構(gòu),而二叉樹(shù)是非線(xiàn)性結(jié)構(gòu)。 (3)下面關(guān)于完全二叉樹(shù)的敘述中,錯(cuò)誤的是_________。 A)除了最后一層外,每一層上的結(jié)點(diǎn)數(shù)均達(dá)到最大值 B)可能缺少若干個(gè)左右葉子結(jié)點(diǎn) C)完全二叉樹(shù)一般不是滿(mǎn)二叉樹(shù) D)具有結(jié)點(diǎn)的完全二叉樹(shù)的深度為[log2n]+1 答案:B 評(píng)析:滿(mǎn)二叉樹(shù)指除最后一層外每一層上所有結(jié)點(diǎn)都有兩個(gè)子結(jié)點(diǎn)的二叉樹(shù)。完全二叉樹(shù)指除最后一層外,每一層上的結(jié)點(diǎn)數(shù)均達(dá)到最大值,在最后一層上只缺少右邊的若干子結(jié)點(diǎn)(葉子結(jié)點(diǎn))的二叉樹(shù)。 C語(yǔ)言筆試題答案篇 (1)結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是_________。 A)程序的規(guī)模B)程序的易讀性 C)程序的執(zhí)行效率D)程序的可移植性 答案:B 評(píng)析:結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是結(jié)構(gòu)化程序清晰易讀,可理解性好,程序員能夠進(jìn)行逐步求精、程序證明和測(cè)試,以保證程序的正確性。 (2)在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是________。 A)概要設(shè)計(jì)B)詳細(xì)設(shè)計(jì)C)可行性分析D)需求分析 答案:D 評(píng)析:需求分析是對(duì)待開(kāi)發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能。編寫(xiě)軟件規(guī)格說(shuō)明書(shū)及初步的用戶(hù)手冊(cè),提交評(píng)審。 (3)數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是_________。 A)控制流B)加工C)數(shù)據(jù)存儲(chǔ)D)源和潭 答案:A 評(píng)析:數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度,來(lái)刻畫(huà)數(shù)據(jù)流從輸入到輸出的移動(dòng)變換過(guò)程。數(shù)據(jù)流圖中的主要圖形元素有:加工(轉(zhuǎn)換)、數(shù)據(jù)流、存儲(chǔ)文件(數(shù)據(jù)源)、源和潭。 (4)軟件需求分析一般應(yīng)確定的是用戶(hù)對(duì)軟件的__________。 A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求 答案:D 評(píng)析:軟件需求分析中需要構(gòu)造一個(gè)完全的系統(tǒng)邏輯模型,理解用戶(hù)提出的每一功能與性能要求,是用戶(hù)明確自己的任務(wù)。因此,需求分析應(yīng)確定用戶(hù)對(duì)軟件的功能需求和非功能需求。 C語(yǔ)言筆試題答案篇 (1)下述關(guān)于數(shù)據(jù)庫(kù)系統(tǒng)的敘述中正確的是________。 A)數(shù)據(jù)庫(kù)系統(tǒng)減少了數(shù)據(jù)冗余 B)數(shù)據(jù)庫(kù)系統(tǒng)避免了一切冗余 C)數(shù)據(jù)庫(kù)系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類(lèi)型的一致 D)數(shù)據(jù)庫(kù)系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù) 答案:A 評(píng)析:由數(shù)據(jù)的共享自身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲(chǔ)空間,更為重要的是可以避免數(shù)據(jù)的不一致性。所謂數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)的不同出現(xiàn)應(yīng)保持相同的值。 (2)關(guān)系表中的每一橫行稱(chēng)為一個(gè)________。 A)元組B)字段C)屬性D)碼 答案:A 評(píng)析:在關(guān)系數(shù)據(jù)庫(kù)中,關(guān)系模型采用二維表來(lái)表示,簡(jiǎn)稱(chēng)“表”。二維表是由表框架及表元組組成。在表框架中,按行可以存放數(shù)據(jù),每行數(shù)據(jù)稱(chēng)為元組。 (3)數(shù)據(jù)庫(kù)設(shè)計(jì)包括兩個(gè)方面的設(shè)計(jì)內(nèi)容,它們是________。 A)概念設(shè)計(jì)和邏輯設(shè)計(jì)B)模式設(shè)計(jì)和內(nèi)模式設(shè)計(jì) C)內(nèi)模式設(shè)計(jì)和物理設(shè)計(jì)D)結(jié)構(gòu)特性設(shè)計(jì)和行為特性設(shè)計(jì) 答案:A 評(píng)析:數(shù)據(jù)庫(kù)設(shè)計(jì)可分為概念設(shè)計(jì)與邏輯設(shè)計(jì)。概念設(shè)計(jì)的目的是分析數(shù)據(jù)間內(nèi)在語(yǔ)義關(guān)聯(lián),在此基礎(chǔ)上建立一個(gè)數(shù)據(jù)的抽象模型。邏輯設(shè)計(jì)的主要工作是將ER圖轉(zhuǎn)換為指定的RDBMS中的關(guān)系模型。 (4)請(qǐng)讀程序: #include main { int a;float b,c; scanf(“%2d%3P%4f’,&a,&b,&C); printf(” a=%d,b=%ec。%f ”,a,b,C); } 若運(yùn)行時(shí)從鍵盤(pán)上輸入9876543210l,則上面程序的輸出結(jié)果是________。 A)a=98,b=765,c=432 1 B)a=1 0,b=432,c=8765 C)a=98,b=765.000000,c=432 1.000000 D)a=98,b=765.0,c=432 1.0 答案:C 評(píng)析:scanf把用戶(hù)從鍵盤(pán)錄入的數(shù)字的第1、2位存入整型變量a;把第3、4、5位存入單精度實(shí)型變量b,把第6、7、8、9位存入單精度實(shí)型變量c,用戶(hù)錄入的第10位被scanf遺棄。這時(shí)變量a、b、c的值分別為:98、765.000000、4321.000000。 (5)一個(gè)良好的算法由下面的基本結(jié)構(gòu)組成,但不包括__________。 A)順序結(jié)構(gòu)B)選擇結(jié)構(gòu)C)循環(huán)結(jié)構(gòu)D)跳轉(zhuǎn)結(jié)構(gòu) 答案:D 評(píng)析:1966年,Bohra和Jacopini提出了以下三種基本結(jié)構(gòu),用這三種基本結(jié)構(gòu)作為表示一個(gè)良好算法的基本單元:1、順序結(jié)構(gòu);2、選擇結(jié)構(gòu);3、循環(huán)結(jié)構(gòu)。 (6)請(qǐng)選出以下程序的`輸出結(jié)果________。 #include sub(x,y,z) int x,y,星符號(hào)z: {星符號(hào)z變化,所以此次函數(shù)被調(diào)用后,a的值為y-x=-5,同理可知,在sub(7,a,&b)后,b的值發(fā)生變化,其值為-5-7=-12,在sub(a,b,&C)后,c的值發(fā)生變化,其值為-12-(-5)=-7。 (7)下面程序在屏幕上的輸出是________。 main { printf(”ab c”); } A)ab c B)a c C)abc D)ab c 答案:B 評(píng)析:c語(yǔ)言中允許使用一種特殊形式的字符常量,、就是以一個(gè)“”開(kāi)頭的字符序列,這樣的字符稱(chēng)為“轉(zhuǎn)義字符”。常用的轉(zhuǎn)義字符有: ,換行;,水平制表;,退格;,回車(chē)。 (8)若x是整型變量,pb是基類(lèi)型為整型的指針變量,則正確的賦值表達(dá)式是_______。 A)pb=&x; B)pb=x; C)星符號(hào)pb=星符號(hào)、/)還包括自增自減運(yùn)算符(++、–),在c語(yǔ)言解析表達(dá)式時(shí),它總是進(jìn)行貪婪咀嚼,這樣,該表達(dá)式就被解析為i++ ++ +i,顯然該表達(dá)式不合c語(yǔ)言語(yǔ)法。 (10)若要用下面的程序片段使指針變量p指向一個(gè)存儲(chǔ)整型變量的動(dòng)態(tài)存儲(chǔ)單元 int星符號(hào)int) D)(int星符號(hào)) 答案:D 評(píng)析:不論p是指向什么類(lèi)型的指針變量,都可以通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換的方法使之類(lèi)型一致,強(qiáng)制類(lèi)型轉(zhuǎn)換的格式為(數(shù)據(jù)類(lèi)型+)。 (11)下面程序輸出的結(jié)果是__________。 main { int i=5,J=9,x; x=(I==j?i:(j=7)); printf(” %d,%d”,I,J); } A)5,7 B)5,5 C)語(yǔ)法錯(cuò)誤D)7,5 答案:A 評(píng)析:條件表達(dá)式的一般形式為:表達(dá)式I?表達(dá)式2:表達(dá)式3;先求解表達(dá)式1,若為真則求解表達(dá)式2;若表達(dá)式l的值為假,則求解表達(dá)式3。本題中先判斷i==j,不等,執(zhí)行j=7;然后執(zhí)行x=7。故本題為A。 【C語(yǔ)言經(jīng)典例題及答案】相關(guān)文章: C語(yǔ)言入門(mén)例題講解07-10 C語(yǔ)言習(xí)題及答案02-26 C語(yǔ)言試題及答案07-26 C語(yǔ)言筆試題及答案05-13 C語(yǔ)言模擬試題及答案06-17 C語(yǔ)言模擬試題及答案03-26 C語(yǔ)言練習(xí)題及答案03-11 C語(yǔ)言測(cè)試題及答案07-03 C語(yǔ)言測(cè)試試題及答案08-02 C語(yǔ)言經(jīng)典例題及答案 2
C語(yǔ)言經(jīng)典例題及答案 3
C語(yǔ)言經(jīng)典例題及答案 4
C語(yǔ)言經(jīng)典例題及答案 5
C語(yǔ)言經(jīng)典例題及答案 6
C語(yǔ)言經(jīng)典例題及答案 7