- 相關推薦
C語言經典例題及答案(精選7套)
引導語:C語言應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統(tǒng)開發(fā)。以下是小編整理的C語言經典例題及答案,歡迎參考閱讀!
C語言經典例題及答案 1
一、求一個任意邊長的矩形面積。
#include
void main()
{int w,h,sum;
scanf("%d%d",&w,&h);
sum=w*h;
printf("area=%d",sum);
}
二、求一個任意半徑的圓的面積及周長。
#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, 求表達式:w*y/z的值,并輸出。
##include
void main()
{ int w,y,z,r;
w=5;
y=4;
z=2;
r=w*y/z;
printf("%5d",r);
}
一、從鍵盤上輸入三個數,求出其中的`最大值,并輸出。
#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); } 三、比較兩個數的大小。如果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題請編寫函數fun,其功能使:將兩個兩位正整數a b合并形成一個整數放在c中。合并的方式使:將a數的十位和個位數依次放在c數的百位和個位上,b數的十位和個位數依次放在c數的千位和十位上。 答案: void fun(int a,int b,long *c) {*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;} 2: 第2題請編寫一個函數fun,它的功能使:計算n門課程的平均分,計算結果作為函數值返回。 答案: float fun(float *a,int n) {float ave=0.0; int i; for(i=0;i ave+=a; ave/=n; return ave;} 3: 第3題假定輸入的字符串中只包含字母和*號。請編寫函數fun,它的.功能使:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。 答案: 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題請編寫函數fun,其功能是:將兩個兩位數的正整數a b合并形成一個整數放在c中,合并的方式是:將a數的十位和個位數依次放在c的個位和百位上,b數的十位和個位數依次放在c數的千位和十位上。 答案: void fun(int a,int b,long *c) {c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;} 5: 第5題 n名學生的成績已在主函數中放入一個帶頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數fun,它的功能是:求出平均分,由函數值返回。 答案: double fun(strec *h) {double aver=0.0; while(h!=null) {aver+=h->s; hy=h->next;} aver/=n; return aver;} 6: 第6題請編寫函數fun,計算并輸出給定10個數的方差。 答案: 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題請編寫函數fun,其功能是:將兩個兩位數的正整數a b合并形成一個整數放在c 中。合并的方式是:將a數的十位和個位數依次放在c數的千位和十位上,b數的十位和個位數依次放在c數的個位和百位上。 答案: void fun(int a,int b,long *c) {*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;} c語言試題 一 選擇題(7分,每小題0.5分) 1.C語言源程序的基本單位是( )。 A 過程 B 函數 C 子程序 D 標識符 2.下列程序的輸出結果是( )。 main( ) { int a=7,b=5; printf("%d ",b=b/a); } A 5 B 1 C 0 D不確定值 3.假設變量a,b均為整型,表達式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。 A 7 B 8 C 9 D 2 4.設a為int型變量,執(zhí)行下列賦值語句后,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.設有如下程序段,下面描述中正確的是 ( )。 int k=10; while(k=0) k=k-1; A 循環(huán)執(zhí)行一次 B循環(huán)是無限循環(huán) C循環(huán)體語句一次也不執(zhí)行 D循環(huán)體語句執(zhí)行一次 6.以下程序的輸出結果為( )。 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語言程序中,以下說法正確的是( )。 A函數的定義可以嵌套,但函數的調用不可以嵌套 B函數的定義不可以嵌套,但函數的調用可以嵌套 C函數的定義和函數的調用都不可以嵌套 D函數的定義和函數的調用都可以嵌套 8.以下函數調用語句中含有( )個實參。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 語法錯誤 9.以下程序的輸出結果為( )。 #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.設有以下定義,值為5的枚舉常量是( )。 enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu 12.下面選項中正確的賦值語句是(設 char a[5],*p=a;)( )。 A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd"; 13.設有以下程序段,則值為6的表達式是( )。 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語言中的文件類型只有( )。 A 索引文件和文本文件兩種 B 文本文件一種 C 二進制文件一種 D ASCII碼文件和二進制文件兩種 二 判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分) 1.在Turbo C中,整型數據在內存中占2個字節(jié)。( ) 2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的輸出結果為A。( ) 3.break語句用在循環(huán)體中,可結束本層循環(huán),continue語句用在循環(huán)體中,可結束本次循環(huán)。( ) 4.函數的遞歸調用不過是一個函數直接或間接地調用它自身。( ) 5.函數strlen("ASDFG ")的值是7。( ) 6.通過return語句,函數可以帶回一個或一個以上的返回值。( ) 7.結構體類型只有一種。 ( ) 8.char *p="girl";的含義是定義字符型指針變量p,p的值是字符串"girl"。( ) 9.若有定義:char *p(char a[10]);則p是函數名。( ) 10.用fopen("file","r+");打開的文件"file"可以進行修改。 ( ) 三 寫出下列程序的運行結果(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); } 四 閱讀下列程序,在 處填入適當內容,使程序完整(8分,每個空1分) 1.有一個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兩個整數,按先大后小的順序輸出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.用選擇排序法對任意10個整數按照由小到大排序。 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 二 判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分) 1.× 2.× 3.√ 4.√ 5.× 6.× 7.× 8.× 9.√ 10.√ 三 寫出下列程序的運行結果(10分,每小題2分) 1. 2. 3. 4. 5. 四 閱讀下列程序,在 處填入適當內容,使程序完整(8分,每個空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語言試題3 一 選擇題(24分,每小題2分) 1.已知函數fread的調用形式為fread(buffer,size,count,fp),其中buffer代表的是( )。 A 存放讀入數據項的存儲區(qū) B 存放讀入數據的地址或指向此地址的指針 C 一個指向所讀文件的文件指針 D 一個整形變量,代表要讀入的數據項總數 2.以下程序的輸出結果為( )。 main( ) { int i=010,j=10; printf("%d,%d ",i++,j--); } A 11,9 B 9,10 C 8,10 D 9,9 3.設a為int型變量,執(zhí)行下列賦值語句后,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.設i和k都是int類型,則for循環(huán)語句( )。 for(i=0,k=-1;k=1;i++,k++) printf("****"); A 循環(huán)結束的條件不合法 B 循環(huán)體一次也不執(zhí)行 C 循環(huán)體只執(zhí)行一次 D 是無限循環(huán) 5.以下程序的輸出結果為( )。 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.函數調用語句:fseek(fp,-10L,2);的含義是( )。 A 將文件位置指針從文件末尾處向文件頭的方向移動10個字節(jié) B 將文件位置指針從當前位置向文件頭的方向移動10個字節(jié) C 將文件位置指針從當前位置向文件末尾方向移動10個字節(jié) D 將文件位置指針移到距離文件頭10個字節(jié)處 7.以下程序的輸出結果為( )。 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.下列說法不正確的是( )。 A 主函數main中定義的變量在整個文件或程序中有效 B 不同函數中,可以使用相同名字的變量 C 形式參數是局部變量 D 在一個函數內部,可以在復合語句中定義變量,這些變量只在本復合語句中有效 9.在下列程序段中,枚舉變量 c1的值是( )。 enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white; A 1 B 3 C 5 D 6 10.設有說明 int (*ptr)();其中標識符ptr是( )。 A 是一個指向整形變量的指針 B 是一個指針,它指向一個函數值是int的函數 C 是一個函數名 D定義不合法 11.定義由n個指向整形數據的指針組成的數組p,其正確的方式為( )。 A int p; B int (*p)[n]; C int *p[n]; D int (*p)( ); 12.具有相同類型的指針類型變量p與數組a,不能進行的.操作是( )。 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 二 判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分) 1.參加位運算的數據可以是任何類型的數據。( ) 2.若有定義和語句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通過鍵盤輸入:10,A,12.5,則a=10,c=‘A’,f=12.5。( ) 3.C語言把文件看作是一個字符(字節(jié))的序列。( ) 4.若有宏定義:#define S(a,b) t=a;a=b;b=t由于變量t沒定義,所以此宏定義是錯誤的。( ) 5.在Turbo C中,下面的定義和語句是合法的:file *fp;fp=fopen("a.txt","r");( ) 6.若有定義:char s[ ]="china";則Turbo C系統(tǒng)為數組s開辟6個字節(jié)的內存單元。( ) 7.若有定義和語句: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.若有定義和語句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);輸出結果是1。( ) 9.在程序中定義了一個結構體類型后,可以多次用它來定義具有該類型的變量。( ) 10.在Turbo C中,此定義和語句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( ) 三 寫出下列程序的運行結果(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); } 四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空2分) 1. 百馬百擔問題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問大、中、小馬各多少匹? 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.用“起泡法”對輸入的10個字符排序后按從小到大的次序輸出。 #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.以下程序是一個函數,功能是求二階矩陣(m行n列矩陣)的所有靠外側的各元素值之和。(本程序中二階矩陣用一維數組來表示。) 例如,矩陣為: 3 0 0 3 2 5 7 3 1 0 4 2 則所有靠外側的各元素值之和為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.用指針作函數參數,編程序求一維數組中的最大和最小的元素值。 #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 ) 二 判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分) 1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × ) 6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ ) 三 寫出下列程序的運行結果(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 四 閱讀下列程序,在 處填入適當內容,使程序完整(20分,每個空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.所有數據結構必須有根結點 B.所有數據結構必須有終端結點(即葉子結點) C.只有一個根結點,且只有一個葉子結點的數據結構一定是線性結構 D.沒有根結點或沒有葉子結點的數據結構一定是非線性結構 【答案】D 【解析】D項正確,線性結構的特點是:①集合中必存在“第一個元素"且惟一②集合中必存在“最后一個元素”且惟一;③除最后一個元素外,其他數據元素均有惟一的“后繼”,④除第一個元素外,其他數據元素均有惟一的“前驅”。所以沒有根結點或沒有葉子結點的數據結構一定是非線性結構。AB兩項錯誤,不是所有數據結構都必須有根結點和葉子結點;C項錯誤,數據結構中若有中間結點不滿足只有一個前件或者后件的條件,就不是線性結構。答案選擇D選項。 2.以下敘述中錯誤的是()。 A. C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉換成二進制的機器指令 B. C程序經過編譯、鏈接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件 C.用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中 D. C語言源程序經編譯后生成后綴為.obj的目標程序 【答案】A 【解析】A項錯誤,注釋語句不會被翻譯成二進制的機器指令。C源程序經過C編譯程序編譯之后生成后綴為.obj的二進制文件(稱為目標文件),然后由“鏈接程序”(Link)的軟件把.obj文件與各種庫函數連接起來生成一個后綴為.exe的'可執(zhí)行文件。答案選擇A選項。 3. C語言主要是借助以下()功能來實現程序模塊化的。 A.定義函數 B.定義常量和外部變量 C.三種基本結構語句 D.豐富的數據類型 【答案】A 【解析】C程序的模塊化主要通過函數來實現。C語言允許對函數單獨進行編譯,從而可以實現模塊化。答案選擇A選項。 4.有以下程序段: char ch; int k; ch='a'; k=12; print("%c,%d,",h,ch,k); printf("k=%d",k); 已知字符a的ASCII碼十進制值為97,則執(zhí)行上述程序段后輸出的結果是()。 A.因變量類型與格式描述符的類型不匹配輸出無定值 B.輸出項與格式描述符個數不符,輸出為零值或不定值 C.a,97,12k=12 D. a,97,k=12 【答案】D 【解析】字符變量的值是該字符的ASCII碼值,可以參與整型變量所允許的任何運算。"ch='a",%c表示以字符格式輸出ch的值,所以輸出為a;%d表示以十進制代碼的形式輸出ch的值,為97;k沒有對應的輸出格式,不輸出。在第二個語句中,首先輸出"k=",然后以十進制代碼輸出k的值,為12。答案選擇D選項。 5.下列敘述中正確的是()。 A.棧是“先進先出”的線性表 B.隊列是“先進后出"的線性表 C.循環(huán)隊列是非線性結構 D.有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構 【答案】D 【解析】有序的線性表既可采用順序存儲結構,也可以采用鏈式存儲結構。A項錯誤,棧是“先進后出"的線性表B項錯誤,隊列是“先進先出"的線性表;C項錯誤,循環(huán)隊列是線性結構的,有序的線性表既可采用順序存儲結構,也可采用鏈式存儲結構。 6.某二叉樹的中序序列為DCBAEFG,后序序列為DCBGFEA,則該二叉樹的深度(根結點在第1層)為()。 A. 5 B. 40 C.3 D. 2 【答案】B 【解析】二叉樹的后序序列為DCBGFEA,則A為根結點。中序序列為DCBAEFG,則DCB為左子樹結點,EFG為右子樹結點。同理B為C父結點,C為D父結點。根據分析,可畫出左子樹,同理E為F父結點,F為G父結點。根據分析,可畫出右子樹,故二叉樹深度為4層。答案選擇B選項。 7.設有定義:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,則以下賦值語句中正確的是()。 A. s[0]=m[1]; B. s=m; C.s.n=m.n; D. s[2].x=m[2].x; 【答案】A 【解析】定義了結構體類型數組s,長度為2,結構體類型數組m,長度為2,并對數組m進行了初始化。同類型的結構體可以直接用變量名實現賦值,A項正確;數組名為數組首地址,地址常量之間不可以相互賦值,B項錯誤;數組名為地址常量不是結構體變量,不能引用成員,C項錯誤;s[2]與m[2]數組越界,D項錯誤。答案選擇A選項。 8.關于C語言標識符,以下敘述錯誤的是()。 A.標識符可全部由數字組成 B.標識符可全部由下劃線組成 C.標識符可全部由小寫字母組成 D.標識符可全部由大寫字母組成 【答案】A 【解析】C語言標識符只能由字母、數字、下劃線構成,且只能以字母、下劃線開頭,故答案選擇A選項。 9.以下程序段中的變量已定義為int類型,則 sum=pAd=5; pAd=sum++,++pAd,pAd++; printf("%d",pAd); 程序段的輸出結果是()。 A. 6 B. 4 C. 5 D. 7 【答案】D 【解析】自增和自減運算符的兩種用法:前置運算,運算符放在變量之前,規(guī)則是先使變量的值增(或減)1,然后以變化后表達式的值參與其他運算;后置運算,運算符放在變量之后,規(guī)則是變量先參與其他運算,然后再使變量的值增(或減)1。執(zhí)行pAd=sum++,sum++是后置自增,執(zhí)行完后,pAd=5,sum=6。++pAd和pAd++語句中沒有其他運算,即效果相同,pAd分別加1,兩句執(zhí)行完后,pAd7。答案選擇D選項。 10.設循環(huán)隊列為Q(1:m),其初始狀態(tài)為front=rear=m。經過一系列入隊與退隊運算后,front=20,rear=15,F要在該循環(huán)隊列中尋找最小值的元素,最壞情況下需要比較的次數為()。 A. 5 B. 6 C.m-5 D. m-6 【答案】D 【解析】循環(huán)隊列是隊列的一種順序存儲結構,用隊尾指針rear指向隊列中的隊尾元素,用隊首指針指向隊首元素的前一個位置,因此,從隊首指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,隊列初始狀態(tài)為front=rear=m,當front=20,rear=15時,隊列中有m-20+15=m-5個元素,最壞情況下需要比較次數為m-6次。答案選擇D選項。 1.C語言編譯程序的功能是()。 A.執(zhí)行一個C語言編寫的源程序 B.把C源程序翻譯成ASCII碼 C.把C源程序翻譯成機器代碼 D.把C源程序與系統(tǒng)提供的庫函數組合成一個二進制執(zhí)行文件 【答案】C 【解析】編譯程序的功能是將“高級語言”翻譯為“機器語言”。每條C語言語句,經過編譯最終都將轉換成二進制的機器指令。答案選擇C選項。 2.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是()。 A. C語言程序僅可以編譯執(zhí)行 B. C語言程序僅可以解釋執(zhí)行 C. C語言程序既可以編譯執(zhí)行,又可以解釋執(zhí)行; D.以上說法都不對 【答案】A 【解析】編譯執(zhí)行是指程序執(zhí)行前需要一個專門的編譯過程把程序編譯成機器語言的文件,再次運行時不需要重新翻譯,執(zhí)行效率高;解釋執(zhí)行是指每個語句都是執(zhí)行的時候才翻譯,執(zhí)行效率低。用C語言編寫的程序必須經過編譯器編譯后,轉換為二進制的機器指令來運行。答案選擇A選項。 3.以下敘述中錯誤的是()。 A. C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉換成二進制的機器指令 B. C程序經過編譯、鏈接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件 C.用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中 D. C語言源程序經編譯后生成后綴為的目標程序 【答案】A 【解析】A項錯誤,注釋語句不會被翻譯成二進制的機器指令。C源程序經過C編譯程序編譯之后生成后綴為的二進制文件(稱為目標文件),然后由“鏈接程序”(Link)的軟件把文件與各種庫函數連接起來生成一個后綴為的可執(zhí)行文件。答案選擇A選項。 4.以下敘述中錯誤的是() A.C語言的可執(zhí)行程序是由一系列機器指令構成的 B.用C語言編寫的源程序不能直接在計算機上運行 C.通過編譯得到的二進制目標程序需要連接才可以運行 D.在沒有安裝C語言集成開發(fā)環(huán)境的機器上不能運行C源程序生成的exe文件 【答案】D 【解析】A項正確,C語言的可執(zhí)行程序是由一系列機器指令組成的;BC項正確,用C語言編寫的源程序必須經過編譯,生成二進制目標代碼,再經過連接才能運行;D項錯誤,C語言經過編譯鏈接后的二進制目標代碼可以脫離C語言集成開發(fā)環(huán)境獨立運行。答案選擇D選項。 5.以下敘述正確的是()。 A. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的二進制文件 B. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的可執(zhí)行文件 C. C編譯程序把文件后綴為的二進制文件編譯成文件后綴為的可執(zhí)行文件 D.鏈接程序把文件后綴為.c的'源程序文件鏈接成文件后綴為的可執(zhí)行文件 【答案】A 【解析】C編譯程序把文件后綴為C的源程序文件編譯成文件后綴為的二進制文件,鏈接將一個或多個目標文件與程序用到的庫文件連接起來,形成一個可以在操作系統(tǒng)直接運行的執(zhí)行程序,故排除B、C、D項,答案選擇A選項。 6.以下敘述中正確的是(A.在C語言程序中,main函數必須放在其他函數的最前面 B.每個后綴為.c的C語言源程序都可以單獨進行編譯 C.在C語言程序中,只有main函數才可以單獨進行編譯 D.每個后綴為.c的C語言源程序都應該包含一個main函數 【答案】B 【解析】main函數可以在程序的任何位置。每一個可執(zhí)行的C程序都必須有一個且只能有一個主函數。后綴名為.c的C語言源程序都可以單獨進行編譯。main函數只是讓執(zhí)行程序的系統(tǒng)知道該從哪里開始執(zhí)行程序(從主函數處執(zhí)行),其他有關這個程序的子函數是通過函數調用來實現其功能(不需main函數)。答案選擇B選項。 7.以下敘述中錯誤的是()。 A. C語言編寫的函數源程序,其文件名后綴可以是.c B. C語言編寫的函數都可以作為一個獨立的源程序文件 C. C語言編寫的每個函數都可以進行獨立的編譯并執(zhí)行; D.一個C語言程序只能有一個主函數 【答案】C 【解析】C源程序經過C編譯程序編譯之后生成一個后綴為的二進制文件(稱為目標文件),然后由稱為“連接程序”(Link)的軟件,把此文件與C語言提供的各種庫函數連接起來生成一個后綴為的可執(zhí)行文件。只有含有main函數的經過編譯鏈接才能執(zhí)行。答案選擇C選項。 8.以下敘述中錯誤的是(A.一個C程序可以包含多個不同名的函數 B.一個C程序只能有一個主函數 C. C程序在書寫時,有嚴格的縮進要求,否則不能編譯通過 D. C程序的主函數必須用main作為函數名 【答案】C 【解析】一個C程序有且只有一個主函數main。一個C程序可以包含多個不同名字的子函數。C程序在書寫時沒有嚴格的縮進要求。答案選擇C選項。 9.以下敘述中正確的是()。 A. C語言規(guī)定必須用main作為主函數名,程序將從此開始執(zhí)行 B.可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執(zhí)行 C. C語言程序將從源程序中第一個函數開始執(zhí)行; D. main的各種大小寫拼寫形式都可以作為主函數名,如:MAIN,Main等 【答案】A 【解析】用戶不能指定某函數為主函數,C語言規(guī)定,程序從main函數開始執(zhí)行,從main函數退出,C語言函數名區(qū)別大小寫。答案選擇A選項。 10.下列敘述中錯誤的是()。 A. C程序可以由一個或多個函數組成 B. C程序可以由多個程序文件組成 C.一個C語言程序只能實現一種算法 D.一個C函數可以單獨作為一個C程序文件存在 【答案】C 【解析】一個C程序可以有一個或多個程序文件,也可以有一個或多個函數,所以一個C語言程序可以實現多種算法,答案選擇C選項。 1.若有以下數組說明,則i=10;a[a[i]]元素數值是(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]]內層的a[i],由于i=10,因此a[i]即a[10]. a[10]對應下面數組中的元素為9.因此a[a[i]]即為a[9] a[9]對應下面數組中的元素為6.因此a[9]即為6 2.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}};則數組a的第一維的大小為: ( B ) A、2 B、3 C、4 D、無確定值 5 7 D、3 6 9 二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括號,數組就有幾行 3.對二維數組的.正確定義是(C ) 詳見教材P149~152,二維數組的定義、初始化 類型符數組名[常量表達式][常量表達式] 二維數組可以看做是矩陣 類型符是指數組中數組元素的類型;數組名要符合標識符命名規(guī)則;第一個常量表達式是指數組的行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變量,而且從1開始計數。 一維數組初始化時可以省略數組長度 二維數組初始化時可以省略行數,但不能省略列數 選項A,B,都省略了列數 選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的[]中 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];則對數組元素引用正確的是__C___ A、a[2][4] B、a[1,3] C、a[2][0] (1)算法的時間復雜度是指_______。 A)執(zhí)行算法程序所需要的時間 B)算法程序的長度 C)算法執(zhí)行過程中所需要的基本運算次數 D)算法程序中的指令條數 答案:C 評析:所謂算法的時間復雜度,是指執(zhí)行算法所需要的計算工作量。 (2)下列敘述中正確的是________。 A)線性表是線性結構B)棧與隊列是非線性結構 C)線性鏈表是非線性結構D)二叉樹是線性結構 答案:A 評析:一般將數據結構分為兩大類型:線性結構與非線性結構。線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。 (3)下面關于完全二叉樹的敘述中,錯誤的是_________。 A)除了最后一層外,每一層上的結點數均達到最大值 B)可能缺少若干個左右葉子結點 C)完全二叉樹一般不是滿二叉樹 D)具有結點的完全二叉樹的深度為[log2n]+1 答案:B 評析:滿二叉樹指除最后一層外每一層上所有結點都有兩個子結點的二叉樹。完全二叉樹指除最后一層外,每一層上的結點數均達到最大值,在最后一層上只缺少右邊的若干子結點(葉子結點)的二叉樹。 C語言筆試題答案篇 (1)結構化程序設計主要強調的是_________。 A)程序的規(guī)模B)程序的易讀性 C)程序的執(zhí)行效率D)程序的可移植性 答案:B 評析:結構化程序設計主要強調的是結構化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試,以保證程序的正確性。 (2)在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是________。 A)概要設計B)詳細設計C)可行性分析D)需求分析 答案:D 評析:需求分析是對待開發(fā)軟件提出的需求進行分析并給出詳細定義,即準確地確定軟件系統(tǒng)的功能。編寫軟件規(guī)格說明書及初步的用戶手冊,提交評審。 (3)數據流圖用于抽象描述一個軟件的邏輯模型,數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是_________。 A)控制流B)加工C)數據存儲D)源和潭 答案:A 評析:數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要圖形元素有:加工(轉換)、數據流、存儲文件(數據源)、源和潭。 (4)軟件需求分析一般應確定的是用戶對軟件的__________。 A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求 答案:D 評析:軟件需求分析中需要構造一個完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,是用戶明確自己的任務。因此,需求分析應確定用戶對軟件的功能需求和非功能需求。 C語言筆試題答案篇 (1)下述關于數據庫系統(tǒng)的敘述中正確的是________。 A)數據庫系統(tǒng)減少了數據冗余 B)數據庫系統(tǒng)避免了一切冗余 C)數據庫系統(tǒng)中數據的一致性是指數據類型的一致 D)數據庫系統(tǒng)比文件系統(tǒng)能管理更多的數據 答案:A 評析:由數據的共享自身又可極大地減少數據冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數據的不一致性。所謂數據的一致性是指在系統(tǒng)中同一數據的不同出現應保持相同的值。 (2)關系表中的每一橫行稱為一個________。 A)元組B)字段C)屬性D)碼 答案:A 評析:在關系數據庫中,關系模型采用二維表來表示,簡稱“表”。二維表是由表框架及表元組組成。在表框架中,按行可以存放數據,每行數據稱為元組。 (3)數據庫設計包括兩個方面的設計內容,它們是________。 A)概念設計和邏輯設計B)模式設計和內模式設計 C)內模式設計和物理設計D)結構特性設計和行為特性設計 答案:A 評析:數據庫設計可分為概念設計與邏輯設計。概念設計的目的是分析數據間內在語義關聯(lián),在此基礎上建立一個數據的抽象模型。邏輯設計的主要工作是將ER圖轉換為指定的RDBMS中的關系模型。 (4)請讀程序: #include main { int a;float b,c; scanf(“%2d%3P%4f’,&a,&b,&C); printf(” a=%d,b=%ec。%f ”,a,b,C); } 若運行時從鍵盤上輸入9876543210l,則上面程序的輸出結果是________。 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 評析:scanf把用戶從鍵盤錄入的數字的第1、2位存入整型變量a;把第3、4、5位存入單精度實型變量b,把第6、7、8、9位存入單精度實型變量c,用戶錄入的第10位被scanf遺棄。這時變量a、b、c的值分別為:98、765.000000、4321.000000。 (5)一個良好的算法由下面的基本結構組成,但不包括__________。 A)順序結構B)選擇結構C)循環(huán)結構D)跳轉結構 答案:D 評析:1966年,Bohra和Jacopini提出了以下三種基本結構,用這三種基本結構作為表示一個良好算法的基本單元:1、順序結構;2、選擇結構;3、循環(huán)結構。 (6)請選出以下程序的`輸出結果________。 #include sub(x,y,z) int x,y,星符號z: {星符號z變化,所以此次函數被調用后,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 評析:c語言中允許使用一種特殊形式的字符常量,、就是以一個“”開頭的字符序列,這樣的字符稱為“轉義字符”。常用的轉義字符有: ,換行;,水平制表;,退格;,回車。 (8)若x是整型變量,pb是基類型為整型的指針變量,則正確的賦值表達式是_______。 A)pb=&x; B)pb=x; C)星符號pb=星符號、/)還包括自增自減運算符(++、–),在c語言解析表達式時,它總是進行貪婪咀嚼,這樣,該表達式就被解析為i++ ++ +i,顯然該表達式不合c語言語法。 (10)若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元 int星符號int) D)(int星符號) 答案:D 評析:不論p是指向什么類型的指針變量,都可以通過強制類型轉換的方法使之類型一致,強制類型轉換的格式為(數據類型+)。 (11)下面程序輸出的結果是__________。 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)語法錯誤D)7,5 答案:A 評析:條件表達式的一般形式為:表達式I?表達式2:表達式3;先求解表達式1,若為真則求解表達式2;若表達式l的值為假,則求解表達式3。本題中先判斷i==j,不等,執(zhí)行j=7;然后執(zhí)行x=7。故本題為A。 【C語言經典例題及答案】相關文章: C語言入門例題講解07-10 C語言習題及答案02-26 C語言試題及答案07-26 C語言筆試題及答案05-13 C語言模擬試題及答案06-17 C語言模擬試題及答案03-26 C語言練習題及答案03-11 C語言測試題及答案07-03 C語言測試試題及答案08-02 C語言經典例題及答案 2
C語言經典例題及答案 3
C語言經典例題及答案 4
C語言經典例題及答案 5
C語言經典例題及答案 6
C語言經典例題及答案 7