




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言程序設計期末試題(一)一、單項選擇題(每題2分,共40分)1、在c語言中,要求運算數必須是整型或字符型的運算符是A、&B、&C、!D、I2 已有定義:int x=3, y=4, z=5;那么表達式!(x+y)+zT&y+z/2的值是。A、0B、1C、2D、-13、if語句的基本形式為:if (表達式)語句,其中表達式。A、可以是任意合法的表達式B、必須是邏輯表達式C、必須是邏輯表達式或關系表達式D、必須是關系表達式4、break語句的正確的用法是。A、無論在任何情況下,都中斷程序的執行,退出到系統下一層。B、在多重循環中,只能退出最靠近的那一層循環語句。C、跳出多重循環。D、只能修改控制
2、變量。5、以下程序的運行結果是 ovoid fun (int*a, int*b)int *k;k=a;a=b;b=k;)main ()int a=3, b=6, *x=&a, *y二&b;fun(x, y);printf (級d%d,a, b);2 ttinclude void main() (int i;for(i=0:i=200;i+)if (i%3=0) & (i-6) %10=0)printf(%dn, i); printf (n);)3、#include#define SIZE 50 struct student (char name10;int math, eng; float a
3、ver;int main () (struct student stuSIZE;int i, maxstd=0;for(i=0;iSIZE;i+) (scanf(%s%d%d, stui. name, &stui. math, &stui. eng);stui. aver=(stui. eng+stui. math)/2. 0; for(i=l;istumaxstd. aver)maxstd=i;printf(%10s%3d%3dn, stumaxstd. name, stumaxstd. math, stumaxstd. eng);C語言程序設計期末試題(二)一、單項選擇題(每題2分,共40
4、分)1、以下關于指針變量的描述,不正確的選項是 OA、在沒有對指針變量賦值時,指針變量的值是不確定的B、同類指針類型可以進行相減操作C、在使用沒有賦值的指針變量時,不會出現任何問題D、可以通過指針變量來取得它指向的變量值2、以下是多行注釋的符號是 oA、/B、/C、/*D、 /*/3、以下表達中正確的選項是。A、在C語言中,邏輯真值和假值分別對應1和0B、關系運算符兩邊的運算對象可以是語言中任意合法的表達式C、對于浮點變量x和y,表達式:x=y是非法的,會出編譯錯誤D、分支結構是根據算術表達式的結果來判斷流程走向的4、語句 for (k=0; k5; +k)if(k= 3) continue;
5、printf k);的輸出結果為A、012012401234D、沒有輸出結果5、有以下程序include void fun(int a, int n) int i, t;for (i=0; i n/2; i+) t=ai;ai=an-l-i;an-l-i=t;main () int k10=l,2, 3, 4,5,6, 7,8, 9, 10, i;fun(k, 5);for (i=2; iy) z=x; x=y; y=z;10, 20, 3020, 30, 3020, 30, 1020, 30, 20 7、以下定義數組的語句中不正確的選項是A、static int a2 3 = 1, 2, 3
6、, 4, 5, 6;B、static int a23 = 1, 4,5;C、static int a 3 = 1, 4;D static int a = 1, 2, 3, 4, 5, 6;輸入輸入a, b的值時,不能作輸入a, b的值時,不能作ps=s;那么對s數組元素的8、 int a, b;用語句 輸入a, b的值時,不能作ps=s;那么對s數組元素的A、,B、.空格C、回車D、 Tab 鍵9、以下變量定義中,錯誤的選項是int x=3;float f;d;String s二Hello!;boolean b=true;10假設有以下定義和語句:int s4 5, (*ps) 5正確引用形式
7、是 oA、 ps+1B、*(ps+3)ps02D、* (ps+1)+311、以下程序中函數f的功能是將n個字符串,按由大到小的順序進行排序。include void f (char p 10, int n)(char t 20;int i, j;for (i=0; in-l; i+)for (j=i+l; jn; j+) if (strcmp(pi, pj) 0)strcpy (t, pi);strcpy(pi,pj);strcpy (pj, t);)main ()char p10 = abc, aabdfg, abbd, dcdbe, cd;f (p, 5);printf (,/%dn/,
8、strlen (p0);)程序運行后的輸出結果是 OA、6B、4C、5D、312、以下c語言用戶標識符中,不合法的是。A、_1B、 AaBcC、a ba-b13、以下選項中,表示字符串末尾的結束標志是 oA、nB、C、0D、 NULL14、有以下程序typedef structint b, p;a;void f (a c)/*注意:c是結構變量名int j;c. b+=l;c. p+=2;)main ()(int i;a a=l, 2;f (a);printf (%d, %dn, a. b, a. p);)程序運行后的輸出結果是 OA、2,3B、2,4C、1,4D、1,215、閱讀以下程序:m
9、ain ()int x;scanf &x);if (x一5) printf (%d,x);else printf(d x+);程序運行后,如果從鍵盤上輸人5,那么輸出結果是 oA、3B、4C、5D、616、以下表達中正確的選項是 oA、continue語句使得整個循環終止B、break語句不能用于提前結束for語句的本層循環C、使用break switch語句可以使流程跳出語句體D在for語句中,continue與break的效果是一樣的,可以互換 17、以下關于c語言數據類型使用的表達中錯誤的選項是 oA、假設要準確無誤差地表示自然數,應使用整數類型B、假設要保存帶權多位小數的數據,應使用雙
10、精度類型C、假設要處理如“人員信息、”等含有不同類型的相關數據,應自定義結構體 類型D、假設只處理“真”和“假”兩種邏輯值,應使用邏輯類型 18、以下語句執行后的結果是 o y = 5; p=&y; x = *p+;A、x = 5, y = 5B、x = 5, y = 6C、x = 6, y = 5D、x = 6, y = 6 19、有以下程序:#include union pwint i;char ch2;a;main ()a. ch0=13;a. chl=0;printf(%dn, a. i);)程序的輸出結果是 OA、13B、14C、208D、20920、下面關于主程序的說法,錯誤的選項
11、是A、a. next=q;B、p. next=&b;C、p-next=&b;D (*p).next=q;二、填空題(每題2分,共20分)1、在C語言數據類型中,一個無符號基本整型變量所代表的數據范圍是 到 4294967295。2、在C語言的表達式中,x=x+5用復合運算符可以寫成 o3、C標準庫函數中,字符串的處理函數包含在 頭文件中,數學函數包含在math, h頭文件中。4、假設變量a, b已定義為int類型并賦值21和55,要求用printf函數以 a=21,b=55的形式輸此請寫出完整的的輸出語句 o5、寫出以下程序的運行結果。main ()(int n;for(n=3; n4) br
12、eak ;)printf(%dn,s);7、將arr傳參到子函數,接受處()內函數定義該怎么寫?8、以下程序功能是:借助指針變量找出數組元素中的最大值及其元素的下標 值。請填空。ftinclude main ()int a10, *p,*s;for (p=a; p-a 10; p+) scanf ( %d H , p);for (p=a, s=a;p-a*s) s= printf ( H index=%dn ”, s-a);9、以下程序段的運行結果是#define add(x , y) x+y main ()int a , b , s;A=5, b=6;S=add (a, b);printf
13、(/zs=%dn/z , s);10、字母a的ascii碼為65。以下程序運行后的輸出結果是 main ()char a, b;a= a + 5 - 3 ;b=a+62;printf (/z%d %cn,a, b);三、編程題(每題分,共40分)1、編寫程序:求100之內的素數。(此題10分)2、求s=a+aa+aaa+aaaa+aa.a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。參照P214例2 (此題14分)3、有以下職工信息,使用結構體數組存儲這些信息,從鍵盤輸入5條記錄, 之后在屏幕上依次輸出職工信息。struct s
14、tuffint stuffID;職工編號float bonus; 工資);【輸入形式】5條職工信息,分行輸入,數據間空格隔開【輸出形式】分行輸出5條職工信息和最低工資,每行數據均使用1個空格分 隔【輸入樣例】1001 8540. 591002 6345. 451003 3500. 651004 4898. 861005 5345. 80【輸出樣例】每行數據均使用一個空格分割,分五行輸出1001 8540. 591002 6345. 451003 3500. 651004 4898. 861005 5345. 80 minBonus = 3500. 65 (此題 16 分)C語言程序設計期末試題
15、(二)參考答案】一、單項選擇題1、C【解析】沒有賦值的指針變量,可能指向任何地方,如果指向系統,那么使用該指針可 能導致系統崩潰。2、D【解析】單行注釋的符號為,多行注釋的符號為/*/。3、B【解析】A選項中,在C語言中,邏輯真值對應非0;C選項中,表達式:x=y是合法的;D 選項中,分支結構的流程走向是根據表達式的值,并不僅僅是算數表達式的值。因此B選項 正確。4、B5、D【解析】在主函數中,定義了一維數組k,并通過調用fun函數將形參數組a指向實參數 組k所在的存儲單元,這樣,a和k共用同一存儲單元,所以對數組a的元素值的改變相 當于對相應數組k的元素值的改變。在fun函數中,通過for循
16、環對數組元素a0與 a4 與a3的值分別作了交換,也即相當于主函數中k0與k4、kl與k3的 值分別作了交換,此時k中各元素的值為5, 4, 3, 2, 1,6,7,8,9,10,故輸出k2到k7的 值為 321678c 6、B【解析】題干中,條件表達式“xy”的值為假,所以不執行語句“z二x; ”,而按順序 執行語句 “x=y; y=z; ,即 x=20, y=39, z=30,故此題選 B。7、D8、A【解析】C語言規定在使用scanf輸入時可以用作數據分隔符的有空格,回車和Tab鍵。 用戶如果要從鍵盤輸入空格字符,那么需要使用其他的輸入方式。9、B【解析】A選項定義了一個整型;C選項定義
17、了一個字符串;D選項定義了一個布爾型變 量:B選項中的f; d不符合標識符規范,因而選B。10、C11、C12、D13、C【解析】字符串末尾結束標志為014、D15、BA、63B、36c、編譯出錯D 0 06、以下程序中c的二進制值是 o char a=2, b=4, c;c=a-b2;A、 00000011B、 00010100C、 00011100D、 000110007、假定double類型變量占用8個字節,且數組定義如下,那么數組length在內存中所占字節數是 o double length 10;A、0B、10C、80D、1608、以下不合法的字符常量是。A、 018,B、 V,c
18、、 VD、f xccz9、以下哪個是c語言的有效標識符_NolNo. 112345D、int10、假設二維數組a有m行n歹U,那么下面能夠正確引用元素ai j的為。A、 *(a+j*n+i)B *(a+i*n+j)C、*(*(a+i)+j)D、*(*a+i)+j11、假設函數調用時參數為基本數據類型的變量(俗稱簡單變量),以下表達正 確的是.A、實參與其對應的形參共占存儲單元B、只有當實參與對應的形參同名時才共占存儲單元C、實參與其對應的形參分別占用不同的存儲單元D、實參將數據傳遞給形參后,立即釋放原先占用的存儲單元12、微機中的32指的是 oA、微機型號碼16、C【解析】break語句通常用
19、在循環語句和開關語句中。當break用于開關語句switch 中時可使程序跳出switchswitch而執行以后的語句;當break語句用于do-whie for、 while循環語句中時可使程序終止循環而執行循環后面的語句,即滿足條件時便跳出循環。 continue語句的作用是跳過循環體中剩余的語句而強行執行下一次循環。A, B和D三個 選項中均有錯誤。因此C選項正確。17、D18、A19、A【解析】在此題中,首先定義了一個共用體pw,其中有兩個域:整型變量i和字符數組 cho因為共用體中的域是共享內存空間的,數組元素由低到高存儲:ch0在低字節; chl在高字節;整型變量i占兩個字節,高位
20、與chl共用存儲空間,低位與ch0共用 存儲空間,而高位chl的值為0,所以輸出的成員變量i的值就是ch0的值13。20、B【解析】要把結點b連接到結點a之后,必須把b的地址給a的next指針,選項A)中, 指針變量q保存的就是變量b的地址,選項B)中的p是指針變量,應該是p-next二&b; 在選項D)中,用*運算符取出結構體變量,并且保存的就是b的地址,所以正確。 二、填空題1、0#零2、 x+=53、string, h4、 printf (a=%d, b=%d,a, b);5、3 4 56、107、 int* arr8、p9、 s=ll10、67 g,三、編程題1、#include#in
21、clude int main() (int i, j, k, n=0;for (i=2; i=100; i+)k=(int) sqrt (i);for (j=2; jk)printf(%d ,i);n+;if(n%5=0) printf(n);)return 0;2、程序分析:關鍵是計算出每一項的值。程序源代碼:main ()(int a, n, count=l;long int sn=0,tn=0;printf(please input a and nn);scanf (d, %dz,, &a, &n);printf (,za=%d, n=%dn, a, n);while(count=n)(
22、tn=tn+a;sn=sn+tn;a=al0;+count;)printf (a+aa+=%ldn,z, sn);3、ttinclude struct stuffint stuffID;float bonus;a5;int main ()int i;float min;for(i = 0; i 5; i+)scanf (z,%d %f,&ai. stuffID, &ai. bonus);min = a0. bonus;for(i = 1; i = ai. bonus)min = ai. bonus;for(i = 0; i switch (grade) (case A :printf(85-1
23、00nz/) ;break;case B :printf (z/60-84n);case C :printf(,z60 以下 n);default:printf (z/ 等級錯誤!n); C、 switch (grade)case A :printf(/z85-100nz/) ;break;case B :printf(60-84n/z) ;break;case C :printf (60 以下 n);default:printf等級錯誤!n);D、 switch (grade)case A :printf(85-100nz/) ;break;case B :printf (/z60-84nz
24、/) ;break;case C :printf (60 以下 n/z) ;break;default:printf(z/ 等級錯誤!n);5、c程序的執行是從()開始執行的A、main函數B、程序的第一行C、D、6、以下屬于c語言保存字的是。A、InttypedefENUMD Union7、設pl和p2是指向同一個int型一維數組的指針變量,k為int型變量,那么不 能正確執行的語句是 oA、k = * pl+ * p2B、p2 = k;C、pl=p2;D k = * pl * (* p2);8、對for(表達式1;表達式3)可理解為 oA、for (表達式1 ;0;表達式3)B、for (
25、表達式1; 1;表達式3)C、for (表達式表達式3)D、缺少一個表達式9、有以下程序#includemain ()(char s =”012xy08s34f4w2”;int i, n=0;for (i=0; si !=0; i+) if (si = O & &si =,9) n+;printf (%dn,n);)程序運行后的輸出結果是 OA、0B、3C、7D、810、數組a10的下標從()開始。A、1B、0C、10D、不確定11、以下程序運行后,如果從鍵盤上輸入abcdefV回車,那么輸出結果為 #include#includefunc(char str) int num=0;while(
26、*(str+num)!=, 0? ) num+;return (num);)main ()(char str10, *p=str;gets(p);printf(%dn,func(p);)A、8B、7C、6D、512、以下常量中,能夠代表邏輯”真”值的常量是A、0B、0C、0D、 NULL13、以下函數返回a所指數組中最小的值所在的下標值:fun(int*a, int n) int i, j=0, p;p=j;for (i=j ; in; i+) if (ai w. year=1980;C、 pw-year=1980;D、w. s. year=1980;二、填空題(每題2分,共20分)1、C語言
27、中的標識符只能由三種字符組成,他們是 字母,數字,下劃線。2、下面程序的功能是:輸出100以內能被3整除且個位數為6的所有整數,請 填空。B、機器字長C、內存容量D、存儲單位13、在定義int a5 6;后,數組a中的第10個元素是 (設 a0 0為第一個元素)a25a24C、al3D、al514、設有結構體的定義如下:struct data(char cl;char c2;)那么 sizeof (struct data)的值是。A、2B、3C、4D、515、有以下程序main ()int a=666, b=888;printf (,z%dn,z, (a, b);程序運行后的輸出結果是 OA、
28、錯誤信息B、666C、888D、 666,88816、下面程序main ()(int y=9;for (;y0;y)3、執行以下語句段int i;int fun(int x)(return (x0)?fun(x-l) +fun(x-2) : 1);)i=fun(3);i的值為 o4、假設要定義一個單精度實型變量f,那么應該使用的定義語句為。5、以下程序段的運行結果是 omain ()int n,s=0;for (n=l; n=5; n+)(if(n%2!=0) continue;s=s+i;printf(%dn,n);6、以下給定程序中,函數proc ()的功能是:讀入一個字符串(長度20),
29、將該字 符串中的所有字符按ascii碼升序排序后輸出。例如,輸入opdye,那么應輸出 deopyo請修改程序中的錯誤,使它能得到正確結果。注意:不要改動main。函數,不得增行或刪行,也不得更改程序的結構。試題程序:int proc(char str)char c;unsigned i,j;for (i=0; istrlen(str)-l; i+)for (j=i+l; jstrj)(c=strj;strj=stri+;stri=c;void main() char str 81;system(cls);printf (/z nplease enter a character string:
30、);gets(str);printf ( n nbefore sorting: n%s,str);proc (str);printf (/z nafter sorting decendingly: n %s,str); )7、局部變量又稱內部變量,是在函數 定義的變量。8、c語言約定用 作為字符串的結束標志。9、以下程序運行后的輸出結果是 o main ()char c;int n=100;float f=10;double x;x=f*=n/=(c=50);printf (%d %fn,z, n, x);10、下面函數func的功能是 o#include long func(long num
31、) (long k=l;num=labs(num); do(k*二num%10;num/=10;)while(num);return k;main()long n;printf(/znplease enter a number:);scanf(ld, &n);printf (/znthe product of its digits is %ld.,z, func (n);)三、編程題(每題分,共40分)1、編寫程序:編程序實現求10之間的所有數的乘積并輸出(此題10分)2、編寫程序,將用戶輸入的字符串中刪除所有的數字,然后輸出剩余的字符。 (此題14分)3、題目描述,定義一個包括年、月、日的結
32、構體變量,讀入年、月、日,計算 該日在當年中是第幾天。注意閏年問題。輸入三個整數,分別表示年、月、日。保證輸入是實際存在的日期,且年份在1000至3000之間(包含1000和3000)o輸出輸出該日期是一年中的第幾天。請注意行尾輸出換行。樣例輸入2012 12 21樣例輸出356 (此題16分)C語言程序設計期末試題(三)參考答案】一、單項選擇題1、B【解析】C程序允許出現的常數為有一確定值的整數或實數(可用小數形式或指數形式) 等。土 123不是確定值,是不可以出現的。2、B3、A【解析】程序執行的實際計算工作量不僅與程序的控制結構有一定的關系,還與處理的 數據量有關,與數據的存儲結構密切相
33、關。所以,選項A正確,選項B和C錯誤。所以, 此題的正確答案為A。4、D5、A【解析】從主函數開始執行。6、B【解析】此題主要考查的知識點為c語言的保存字。要點透析c語言的保存字都是以小寫字母組成的。7、B8、B9、B【解析】閱讀本程序可知,字符串S的前三個字符滿足if語句,所以n+,當遇到0 時,for循環終止,所以最后輸出n值為3。10、B11、C【解析】此題通過函數gets。從鍵盤接收一個字符串,并通過調用fune()函數,統計串 中字符的個數。12、C13、D14、C15、A16、A17、B18、C19、D20、D二、填空題1、2、i tr )2.錯誤:strj=str+;正確:str
34、j=stri;7、內部#內8、0#09、2 2010、計算一個數的各位數字之積。三、編程題1、#include void main() int i; long sum=1;for (i=l; i=10; i=i+l)sum=sum*i;printf( the sum of odd is :%Id” , sum);)2、 ttinclude void main() (int i, j, nl;char a20;printf (請輸入字符串:); gets(a);nl=strlen(a);for (i=0; i=0, &ai=,9 )=0)printf (%c, ai);printf (n);)3
35、、#includeint main () struct dd (int y, m, d;date;int i, j, k;scanf (d%d%d,&date. y, &date. m, &date. d);k=date. d;if (date. ml) k+=31 if (date. m2) k+=28 if (date. m3) k+=31 if (date. m4) k+=30 if (date. m5) k+=31 if (date. m6) k+=30 if (date. m7) k+二31 if (date. m8) k+=31 if (date. m9) k+=30if (dat
36、e. m10) k+=31;if (date. mll) k+=30;if(date. y%4=0&date. y%100!=01|date. y%400=0) k+;printf(%d,k);C語言程序設計期末試題(四)一、單項選擇題(每題2分,共40分)1、在C語言中,以下表達不正確的選項是.A、在C程序中,無論是整數還是實數,都能被準確無誤的表示B、在C程序中,變量名代表存儲器中的一個位置C、靜態變量的生存期與整個程序的生存期相同D、C語言中變量必須先定義后引用2、假設fahr為整型變量,那么能正確表示以下數學式的c語言表達式是A、5* (fahr-32)/9B、5/9* (fahr-3
37、2)C、5 (fahr-32)/9D、 (fahr-32)/9*53、與y=(x0?l:x0) y=l;else if (x0) y=l;else if (x y=-lif (x)if (x0)y=l;else if(x=0)y=0;else y=-l;D y=0;if (x=0)if (x0) y=l;else y=-l;4、有如下程序main ()int x=3;do(printf(%d,x-);)while(!x);該程序的執行結果是 OA、321B、3C、不輸出任何內容D、陷入死循環5、int a3 4;那么對數組元素引用正確的選項是A、a2 4B、al,3C、 a20D、a(2) (
38、1)6、設有 int i=8, j=10;那么 printf (%d, %dn,+i, j-);的輸出是 OA、11, 10B、9, 10C、8,9D、10,97、下面程序的運行結果是#includemain ()static char a=/zlanguagef,/ , b口=programe”;char *pl,*p2;int k;pl 二 a;p2 二b;for(k=0;k LanSuageD、有語法錯8、在c語言中,要求參加運算的數必須是整數的運算符是A、%B、/C、!D *9、以下的程序用來輸出兩個字符串前7個字符中對應相等的字符及其位置號,程序空白處應該填寫的是 o#include
39、main()char si 口二Chinese”, s2 口二 japnese”;int i;for(i=0;sli != 0&s2i !=0 ;i+) if (si i=s2i&i puts (si,C、printf (c%dn,s2,D、printf si) ;printf (%dn,10、下面程序段的運行結果是 Ochar * format=,/%s, a=%d, b=%dn/z;int a=11, b=10;a+=b;printf (format, a+二b,a, b);for, a+二b, abformat, a+=ba+=b, a=21, b=10D、以上結果都不對n、以下關于c語
40、言的表達中正確的選項是 oA、C語言的數值常量中夾帶空格不影響常量值的正確表示B、C語言中的變量可以在使用之前的任何位置進行定義C、在C語言算術表達式的書寫中,運算符兩側的運算數類型必須一致D、C語言中的注釋不可以夾在變量名或關鍵字的中間12、以下是不正確的轉義字符。A、B、丫C、081D、013、有以下程序main ()int a 3 = 1, 2, 3, 4, 5, 0, (*pa) 3, i;pa=a;for (i=0; i3; i+)if (i2) pal i=pal i-l;else pal i=l;printf (dn, a0 l+al l+al 2);執行后輸出結果是 oA、7B
41、、6C、8D、無確定值14、c語言中,switch后的括號內表達式的值可以是 oA、只能為整型B、只能為整型,字符型,枚舉型C、只能為整型和字符型D、任何類型15、下面程序的功能是計算1至50中是7的倍數的數值之和,請填空: main()int i,sum=0;for (i=l; i0; i一一) for (j = 0; j 有定義 char str= d , o , g , 0, );假設執行 puts (str);那么輸出結果為 o2 int a, b;與a*=5-b;等價的賦值語句是。3、定義一個指針數組p,它有4個元素,每個指針指向一個整型數據,定義語 句為。4、c語言中的關鍵字共有3
42、2個,而且都是 寫。提示:大/小5、結構化程序設計的3種基本結構是:順序結構、選擇結構、結構,這三 種基本結構構成了復雜的c語言程序。6、以下程序的功能是將字符串s中的數字字符放入d數組中,最后輸出d中的 字符串。例如,輸入字符串:abcl23edf456gh,執行程序后輸出:123456。請填 空。ttinclude ftinclude main()char s80, d80;int i, j;gets(s);for(i=j=O;si!= 0 ;i+) if() (dj=si;j+;dj- 0,;puts (d);)7、設有如下宏定義 define MYSWAP(z,x, y) z=x;X二
43、y;y=z;以下程序段通過宏調用實現變量a、b內容交換,請填空。float a=5, b=16,c; MYSWAP (, a, b);8、在c語言中,如果采用printf函數將整個字符串一次輸出,那么對應的格式 控制符為。9、以下程序段的運行結果是 o intb=20,*q;q=&b; printf (%d, *q);10、下面程序的功能是用一輾轉相除法II求兩個正整數的最大公約數。請分析 程序填空。ftinclude main () int r, m, n;scanf (d%d,&m, &n);if (m n) 1;r = m % n;whilem = n;n = r;r = 2;)prin
44、tf(%dn,n);三、編程題(每題分,共40分)I、一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求 它在第10次落地時,共經過多少米?第10次反彈多高?(此題10分)2、編程計算 1 -2+3-4+5-6+-10000 (此題 14 分)3、計算n名學生成績的平均分并通過函數返回。要求:結構體代碼如下:struct StudentScore double score;);(此題16分)C語言程序設計期末試題(四)參考答案】一、單項選擇題1、A2、A3、A4、B【解析】此題x賦初值為3,當執行printf(%d,x-);時,由于x-的作用是先運算x, 再將x的值減1,所以
45、,printf輸出的x值為3,等輸出后,x的值減1變為2,繼續執 行,判斷條件!x為假,循環只被執行一次。5、C6、B7、A【解析】考查用指針來引用字符數組元素的方法。解題要點指針pl+k相當于指針P1 向后移動了 k個字符的位置,指針p2同理。8、A9、C【解析】putchar(s)的功能是把字符s輸出到標準輸出設備;puts(sl)是把si指向的字 符串輸出到標準輸出設備。10、C【解析】字符串常量是由雙引號括起來的一串字符,每一個字符串常量都分別占用內存 中一串連續的存儲空間,這些連續的存儲空間實際上就是字符型一維數組。11、D【解析】c語言的數值常量中不能夾帶空格,所以A錯誤。C語言中
46、的變量都必須先定 義再使用,對變量的定義通常放在函數體內的前部,但也可以放在函數外部或復合語句的開 頭,不能隨便放置,所以B錯誤。在C語言中運算符兩側的運算數據類型可以不一致,且結 果與精度較高的保持一致,所以C錯誤。12、C13、A14、D15、A16、A17、A【解析】共用體UU占8個字節;因為結構體在內存中占位符的存在,所以結構體test 中成員m2占4個字節;結構體test占用內存的大小是sizeof (int) + sizeof (char) + 3 + sizeof(float) + sizeof(ua)= 20。18、D19、D【解析】P為指針數組,其元素分別為指向數組a的4個元
47、素的指針。q為指向指針的指 針變量,其初值為指針數組P的首地址。所以:表達式*(p0+1) +*(q+2)=*(a+3+l) +*(p+2)即是*(a+4) +*(a+1) =a5 +a2 =1+4=5。20、B二、填空題1、dog,2、a=a* (5-b);3、 int *p4;4、小5、循環#重復6、& s i =48 & s i =O或9=si & O= si或OV=si & 9 =si或 si=48 或 57=si & 48=si或 487、c8、%s9、2010、 1 r=m, m=n, n=r 2 m%n三、編程題1、程序分析:見下面注釋程序源代碼:main ()(float sn
48、=100. 0,hn=sn/2;int n;for(n=2;n=10;n+)sn=sn+2*hn;/*第n次落地時共經過的米數*/hn=hn/2; /*第n次反跳高度*/printf (z,the total of road is %fn,z, sn);printf (z,the tenth is %f metern,z, hn);ttinclude stdio.hmain ()float h=100,s=100;int i=l;while(i=10)h=h/2;printf (第%2d次反彈的高度:%12. 9f,第2d次落地時經過的距 離:%12. 8fn, i,h, i,s);s=s+2
49、*h;i+;)2、ttinclude void main() int s=0, i, p=l;for(i=l;i=10000;i+)s+=i*p;P=-P;printf (結果為:%dn,s);)double Fun(struct StudentScore *a , int n) int i;double sum = 0. 0;for(i=0; in; i+)(sum += ai. score;return sum/n;)int main ()(struct StudentScore a100;int n; 學生數量int i;printf (“請輸入學生數量:);scanf(d,&n);fo
50、r(i=0; i0)x=x+ y;if (a0) if(c0)y=x-y;else z=y;printf (d, %d, %dn, x, y, z);2, 2, 0B、2,2, 2C、0,2, 0D、2,0, 24、假設有以下程序段,w和k都是整型變量: w=k;LB:if (w=0)goto LE;w;printf(*)goto LB;LE;那么不能與上面程序段等價的循環語句是 OA、for(w=k; w!一0; w-)printf(v *”);B、for(w=k; W; -w)printf(v *”);C、 w=k;while(w-!=0)printf(“ *”);D、 w=k:W+; d
51、o(w-; printf(v *” ); )while(w!=0);5、以下描述中不正確的選項是 oA、字符型數組中可能存放字符串。B、可以對字符型數組進行整體輸入、輸出。C、可以對整型數組進行整體輸入、輸出。D、不能在賦值語句中通過賦值運算符“二”對字符型數組進行整體賦值。6、設有聲明int p10 = l,2,i=0;”,以下語句中與pi=pi+l, i+;等價的是 OA、Pi=Pi+;P+i=Pi;P+i=Pi+l;D、i+,Pi-l=Pi;7、執行完語句int x= new int 25;后,那么以下哪項說法是正確的A、x24值為 0B、x24值未定義C、x25值為 0D、x0值為空8
52、、以下選項中,不合法的整型常數是 oA、 32768B、-56C、03OXaf9、以下四組字符串中都可以用作c語言程序中的標識符的是 oprint _3d db8 aBcIam one_half start$it 3paistrl Cpp pow whileD、Pxq My-book line# His. agereturn (m);A、2,3B、2,2C、3,2D、2,419、排序的重要目的是為了以后對已排序的數據元素進行A、BA、B、C、D、20以下scanf函數調用語句中不正確的選項是 struct pupilchar name20;intintintintintintintage;se
53、x;)pup 5,)pup 5,A、B、C、D、pup0. name);&pup0. age); p-age);&(p-sex);*p=pup;scanfscanf(%d, scanf (級d,scanf (%d,二、填空題(每題2分,共20分)1、sacii中小寫字母-(一)=大寫字母2、在c語言中,正確的標識符是由 組成的,且由 開頭的。3、算術表達式a=b+3中,a、b稱為變量,3稱為 量,=、+稱為運算符。4、假設有定義:int a=5, b=2, c=l;那么表達式a-bc | | b=c的值是。5、僅由順序、選擇(分支)和重復(循環)結構構成的程序是 程序。6、c程序是由函數構成的
54、,其中必須有且只有一個 函數。10、 int a10;合法的數組元素的最小下標值為一A、10B、9C、1D、011、以下程序中的函數reverse的功能是將a所指數組中的內容進行逆置。 void reverse(int a, int n)int i, t;for (i=0; in/2; i+)(t=ai;ai=an-l-i;an-l-i=t;)main ()int b10 = l,2, 3,4, 5,6, 7,8, 9,10);int i,s=0;reverse (b, 8);for (i=6; inumB、p+C、 (*p).numD、p=&stu. age15、下面程序的輸出結果是.#in
55、cludevoid main ()int a=5, b=3;float x=3. 14, y=6. 5;printf (d, %dn, a+b! =a-b, x p-ageC、(*p).ageD student, age18、下述程序執行的輸出結果是 o#includemain() char a24;strcpy(a, are);strcpy(al, you);a0 3=,&;printf(sn, a);A、 are&youB、youC、areD、&19、設a為存放(短)整型的一維數組,如果a的首地址為p,那么a中第i個元 素的地址為()。A、 P+i*2B、P+(i-1)*2C、 P+(i-
56、l)D、P+i20、設有如下定義:struct skint a;float b;)data, *p;假設要使P指向data中的a域,正確的賦值語句是。A、p= (struct sk*)&data.a;B、p= (struct sk*) data, a;C p=&data. a;D *p=data. a;二、填空題(每題2分,共20分)1、b=2,那么表達式b+=b-=3的值是 o2、假設s是int型變量,那么表達式s%2+(s+l)%2的值為【】。3、假設i為整型變量,且i%2=0的值為1,那么變量i為 數。4、設 int a=5, b=6;那么表達式(+a=b)?+a:b的值是。5、以下程序
57、運行的結果為 oftinclude void main()int score=4;switch(score)(case 5: printf (“90T00);break;case 4: printf(80-89);break;case 3: printf (/,70-79,/);break;case 2: printf(60-69);break;default: printf(0-59);)6、ttinclude void main()int a3 31,2, 3,4, 5,6, i, J, s=0;for (i=l; i3; i+) for (j=0; ji ; j+) s+=ai j;7、
58、從文件讀入一行,讀取字符包括空格,使用函數 o8、int y=l, x, *p, a = 2, 4, 6, 8, 10);P=&al;for (x=0;x3;x+) y + =* (p + x);printf(%dn,y);程序的輸出結果y的值是 o9、執行以下程序段后,輸出的a的值是 omain ()int a = 1;switch(a) (case 0: a一一;break;a+;break;a=a+5;break)printf (%d, a);10、以下程序的運行結果是【1】 ,其算法是【2】 main()int a5 = 5, 10, -7, 3, 7, i, t, j;sort(a)
59、;for (i=0; i04; i+)printf (%3d, ai);)sort (int a)int i, j, k;for (i=0; i4; i+) for (j=0; jaj+l)t=aj;aj=aj+l; aj+l=t;三、編程題(每題分,共40分)I、輸入兩個數,交換他們的值并輸出。(元素交換)(此題10分)2、判斷101-200之間有多少個素數,并輸出所有素數。(此題14分)3、編寫程序:用結構體和函數處理學生成績,學生信息包括:學號姓名3門 課成績平均分1)用input函數來輸入數據和求各學生的平均成績2)用max函數來找平均分最高的學生3)用print函數輸出成績最高學生的信息(此
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二年級下冊班級親善大使計劃
- 機房設備老化管理保障措施
- 部編版六年級上冊學生行為規范與法治教育計劃
- 2025年幼兒園設施維修保障計劃
- 高三數學組學期教學改革實施計劃
- 教科版六年級科學下冊復習測驗計劃
- 二年級上冊食品安全教育計劃
- 小學英語教師信息化教學整合計劃
- 裝配工崗位職責及供應鏈協作要求
- 復讀生創新創業指導計劃
- 山姆配送服務流程
- 湖南省長郡中學、雅禮中學等四校2024屆高一數學第二學期期末調研試題含解析
- 《節能原理與技術》課件
- PE管道安裝單元工程質量評定表 2
- 臨近建構筑物的低凈空硬法咬合樁施工工法
- 老年人消防安全知識普及
- 國開《工程經濟與管理》形考任務1-12試題及答案
- 幼兒園玩教具明細表
- 隋唐人的日常生活
- 2022年江蘇省公安廳招聘警務輔助人員和雇員筆試試題及答案
- 畢業50周年同學聚會邀請函匯編4篇
評論
0/150
提交評論