C語言程序設(shè)計試題及答案完整_第1頁
C語言程序設(shè)計試題及答案完整_第2頁
C語言程序設(shè)計試題及答案完整_第3頁
C語言程序設(shè)計試題及答案完整_第4頁
C語言程序設(shè)計試題及答案完整_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、C語言復習資料5元必須清楚的:1)程序結(jié)構(gòu)是三種: 順序結(jié)構(gòu) , 循環(huán)結(jié)構(gòu)(三個循環(huán)結(jié)構(gòu)), 選擇結(jié)構(gòu)(if 和 switch)2)讀程序都要從main()入口, 然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇)。3)計算機的數(shù)據(jù)在電腦中保存是以 二進制的形式. 數(shù)據(jù)存放的位置就是 他的地址.4)bit是位 是指為0 或者1。 byte 是指字節(jié), 一個字節(jié) = 八個位.5)一定要記住 二進制 如何劃成 十進制。概念??嫉降模?、編譯預處理不是C語言的一部分,不再運行時間。C語言編譯的程序稱為源程序,它以ASCII數(shù)值存放在文本文件中。、每個C語言程序中main函數(shù)是有且只有一個。、在函

2、數(shù)中不可以再定義函數(shù)。、算法的是一定要有輸出的,他可以沒有輸入。、break可用于循環(huán)結(jié)構(gòu)和switch語句。、逗號運算符的級別最低。第一章1)合法的用戶標識符考查:合法的要求是由字母,數(shù)字,下劃線組成。有其它元素就錯了。并且第一個必須為字母或則是下劃線。第一個為數(shù)字就錯了。關(guān)鍵字不可以作為用戶標識符號。main  define  scanf  printf 都不是關(guān)鍵字。迷惑你的地方If是可以做為用戶標識符。因為If中的第一個字母大寫了,所以不是關(guān)鍵字。2)實型數(shù)據(jù)的合法形式:2.333e-1 就是合法的,且數(shù)據(jù)是2.333

3、5;10-1??荚嚳谠E:e前e后必有數(shù),e后必為整數(shù)。.3)字符數(shù)據(jù)的合法形式::   '1' 是字符占一個字節(jié),"1"是字符串占兩個字節(jié)(含有一個結(jié)束符號)。 '0' 的ASCII數(shù)值表示為48,'a' 的ASCII數(shù)值是97,'A'的ASCII數(shù)值是65。4) 整型一般是兩個字節(jié), 字符型是一個字節(jié),雙精度一般是4個字節(jié):考試時候一般會說,在16位編譯系統(tǒng),或者是32位系統(tǒng)。碰到這種情況,不要去管,一樣做題。掌握整型一般是兩個字節(jié), 字符型是一個字節(jié),雙精度一般是4個字節(jié)就可以了。5)轉(zhuǎn)

4、義字符的考查:   在程序中 int a = 0x6d,是把一個十六進制的數(shù)給變量a 注意這里的0x必須存在。   在程序中 int a = 06d, 是一個八進制的形式。在轉(zhuǎn)義字符中,x6d 才是合法的,0不能寫,并且x是小寫。                 141 是合法的, 0是不能寫的。108是非法的,因為不可以出現(xiàn)8。6)算術(shù)運算符號的優(yōu)先級別:   同級別的有的是

5、從左到右,有的是從右到左。7)強制類型轉(zhuǎn)換:  一定是 (int)a 不是  int(a),注意類型上一定有括號的。   注意(int)(a+b)和(int)a+b 的區(qū)別。 前是把a+b轉(zhuǎn)型,后是把a轉(zhuǎn)型再加b。8)表達式的考查:   是表達式就一定有數(shù)值。   賦值表達式:表達式數(shù)值是最左邊的數(shù)值,a=b=5;該表達式為5,常量不可以賦值。   自加、自減表達式:假設(shè)a=5,+a(是為6), a+(為5);運行的機理:+a 是先把變量的數(shù)值加上1,然后把得到的數(shù)值放到變量

6、a中,然后再用這個+a表達式的數(shù)值為6,而a+是先用該表達式的數(shù)值為5,然后再把a的數(shù)值加上1為6,再放到變量a中。 進行了+a和a+后在下面的程序中再用到a的話都是變量a中的6了。  考試口訣:+在前先加后用,+在后先用后加。逗號表達式:優(yōu)先級別最低 ;表達式的數(shù)值逗號最右邊的那個表達式的數(shù)值。(2,3,4)的表達式的數(shù)值就是4。9)位運算的考查:會有一到二題考試題目。總的處理方法:幾乎所有的位運算的題目都要按這個流程來處理(先把十進制變成二進制再變成十進制)。例1:char a = 6, b;b = a<<2;  這種題目的計算是先要把a

7、的十進制6化成二進制,再做位運算。例2:一定要記住,例3:在沒有舍去數(shù)據(jù)的時候,<<左移一位表示乘以2;>>右移一位表示除以2。10)018的數(shù)值是非法的,八進制是沒有8的,逢8進1。 11)%符號兩邊要求是整數(shù)。不是整數(shù)就錯了。12)三種取整丟小數(shù)的情況:、int a =1.6;              、(int)a;         &

8、#160;    、                             第二章1)printf函數(shù)的格式考查:     %d對應(yīng)整型;%c對應(yīng)字符;%f對應(yīng)單精度等等。寬度的,左對齊等修飾。   

9、0; %ld對應(yīng) long int;%lf 對應(yīng)double。2)scanf函數(shù)的格式考察:   注意該函數(shù)的第二個部分是&a 這樣的地址,不是a;    Scanf(“%d%d%*d%d”,&a,&b,&c); 跳過輸入的第三個數(shù)據(jù)。3)putchar ,getchar 函數(shù)的考查:   char  a = getchar() 是沒有參數(shù)的,從鍵盤得到你輸入的一個字符給變量a。   putchar(y)把字符y輸出到屏幕中。4)如何實現(xiàn)兩個變量x ,y中數(shù)值的互

10、換(要求背下來)   不可以把 x=y ,y=x; 要用中間變量 t=x;x=y;y=t。5)如何實現(xiàn)保留三位小數(shù),第四位四舍五入的程序,(要求背下來)   這個有推廣的意義,注意 x = (int)x 這樣是把小數(shù)部分去掉。                            

11、;第三章特別要注意:c語言中是用非0表示邏輯真的,用0表示邏輯假的。1)關(guān)系表達式:   表達式的數(shù)值只能為1(表示為真),或0(表示假)   當關(guān)系的表達是為真的時候得到1。如 9>8這個是真的,所以表達式的數(shù)值就是1;2)邏輯表達式:   只能為1(表示為真),或0(表示假)a)       共有&&   |   ! 三種邏輯運算符號。b)      

12、!>&&>|  優(yōu)先的級別。c)      注意短路現(xiàn)象??荚嚤容^喜歡考到。d)      要表示 x 是比0大,比10小的方法。0<x<10是不可以的(一定記?。J窍扔嬎?<x 得到的結(jié)果為1或則0;再用0,或1與10比較得到的總是真(為1)。所以一定要用 (0<x)&&(x<10)表示比0大比10小。3)f 語句   else 是與最接近的if且沒有else

13、的相組合的。4)條件表達式:    表達式1 ?表達式2 :表達式3   注意是當非0時候是表達式2的數(shù)值,當為0是就是表達式2的數(shù)值。考試口訣:真前假后。5)switch語句:a)一定要注意 有break 和沒有break的差別,書上(34頁)的兩個例子,沒有break時候,只要有一個case匹配了,剩下的都要執(zhí)行,有break則是直接跳出了swiche語句。 b)switch只可以和break一起用,不可以和continue用。          &#

14、160;                  第四章1)三種循環(huán)結(jié)構(gòu):   a)for() ; while();   do- while()三種。   b)for循環(huán)當中必須是兩個分號,千萬不要忘記。   c)寫程序的時候一定要注意,循環(huán)一定要有結(jié)束的條件,否則成了死循環(huán)。   d) do-while()循環(huán)的最后一個while(

15、);的分號一定不能夠丟。(當心上機改錯)2) break 和  continue的差別   記憶方法:break:是打破的意思,(破了整個循環(huán))所以看見break就退出真?zhèn)€一層循環(huán)。continue:是繼續(xù)的意思,(繼續(xù)循環(huán)運算),但是要結(jié)束本次循環(huán),就是循環(huán)體內(nèi)剩下的語句不再執(zhí)行,跳到循環(huán)開始,然后判斷循環(huán)條件,進行新一輪的循環(huán)。3)嵌套循環(huán)   就是有循環(huán)里面還有循環(huán),這種比較復雜,要一層一層一步一步耐心的計算,一般記住兩層是處理二維數(shù)組的。4) while(c=getchar())!=n) 和 while(c=getchar()

16、 !=n)的差別先看a = 3 != 2  和 (a=3)!=2 的區(qū)別:(!=號的級別高于=號 所以第一個先計算 3!=2) 第一個a的數(shù)值是得到的1;第二個a的數(shù)值是3。考試注意點: 括號在這里的重要性。                           第五章函數(shù):是具有一定功能的一個程序塊;1) 函數(shù)的參數(shù),

17、返回數(shù)值(示意圖):  main()int a = 5,b=6,c;  c = add(a,b);  printf(“%d”,c);調(diào)用函數(shù)a,b是實參整個函數(shù)得到一個數(shù)值就是Add函數(shù)的返回數(shù)值。int add ( int x, int y)int z;  z=x+y;  return z;被調(diào)用函數(shù)x,y是形式參數(shù)函數(shù)返回數(shù)值是整型z就是這個add函數(shù)計算后得到的結(jié)果,就是函數(shù)返回給主程序的返回數(shù)值。程序是在從上往下順序執(zhí)行,當碰到了函數(shù)add后,把a,b的數(shù)值穿給調(diào)用函數(shù),程序暫時中斷等待

18、返回數(shù)值。當?shù)玫搅朔祷財?shù)值后,再順序的往下執(zhí)行2)一定要注意參數(shù)之間的傳遞  實參和形參之間 傳數(shù)值,和傳地址的差別。(考試的重點)      傳數(shù)值的話,形參的變化不會改變實參的變化。      傳地址的話,形參的變化就會有可能改變實參的變化。3)函數(shù)聲明的考查:一定要有:函數(shù)名,函數(shù)的返回類型,函數(shù)的參數(shù)類型。不一定要有:形參的名稱。第六章指針變量的本質(zhì)是用來放地址,而一般的變量是放數(shù)值的。int  *p 中  

19、 *p和p的差別:*p可以當做變量來用;*的作用是取后面地址p里面的數(shù)值p是當作地址來使用。*p+ 和 (*p)+的之間的差別:改錯題目中很重要         *p+是 地址會變化。         (*p)+ 是數(shù)值會要變化。                 

20、60; 三名主義:(考試的重點)   數(shù)組名:表示第一個元素的地址。數(shù)組名不可以自加,他是地址常量名。(考了很多次)   函數(shù)名:表示該函數(shù)的入口地址。   字符串常量名:表示第一個字符的地址。第七章1一維數(shù)組的重要概念:對a10這個數(shù)組的討論。、a表示數(shù)組名,是第一個元素的地址,也就是元素a10的地址。、a是地址常量,所以只要出現(xiàn)a+,或者是a=a+2賦值的都是錯誤的。、a是一維數(shù)組名,所以它是列指針,也就是說a+1是跳一列。對a33的討論。、a表示數(shù)組名,是第一個元素的地址,也就是元素a10的地址。、a是地址常量,所以只要出現(xiàn)a+

21、,或者是a=a+2賦值的都是錯誤的。、a是二維數(shù)組名,所以它是行指針,也就是說a+1是跳一行。、a0、a1、a2也都是地址常量,不可以對它進行賦值操作,同時它們都是列指針,a0+1,a1+1,a2+1都是跳一列。、注意a和a0 、a1、a2是不同的,它們的基類型是不同的。前者是一行元素,后三者是一列元素。二維數(shù)組做題目的技巧:如果有a33=1,2,3,4,5,6,7,8,9這樣的題目。步驟一:把他們寫成:第一列第二列第三列a0à 1   2   3   >第一行a1à   4 &

22、#160; 5   6 >第二行a2à   7   8   9 >第三行步驟二:這樣作題目間很簡單:*(a0+1)我們就知道是第一行的第一個元素往后面跳一列,那么這里就是a01元素,所以是。*(a1+2)我們就知道是第二行的第一個元素往后面跳二列。那么這里就是a12元素,所以是6。一定記住:只要是二維數(shù)組的題目,一定是寫成如上的格式,再去做題目,這樣會比較簡單。數(shù)組的初始化,一維和二維的,一維可以不寫,二維第二個一定要寫      i

23、nt a=1,2 合法。   int a4=2,3,4合法。   但int a4=2,3,4非法。二維數(shù)組中的行指針int a12; 其中a現(xiàn)在就是一個行指針,a+1跳一行數(shù)組元素。  搭配(*)p2指針     a0,a1現(xiàn)在就是一個列指針。a0+1 跳一個數(shù)組元素。搭配*p2指針數(shù)組使用還有記住脫衣服法則:   a2  變成   *(a+2)   a23變成 *(a+2)3再可以變成   *(

24、*(a+2)+3)這個思想很重要! 第一部分:基礎(chǔ)知識(20項,共40分)】1一個C語言程序是由( ) 組成的。 A主程序 B子程序 C函數(shù) D過程2轉(zhuǎn)換說明符%x的輸出形式是( )。 A十進制 B八進制 C十六進制 D二進制3若a、b均為int型變量,且a=100,則關(guān)于循環(huán)語句for(b=100;a!=b;+a,+b) printf ( “ -“) ;的正確說法是( ) 。 A循環(huán)體只執(zhí)行一次 B死循環(huán) C循環(huán)體一次也不執(zhí)行 D輸出-4若x、y、z均為int 型變量,則執(zhí)行下列語句后的z值為 ( )。 x=1; y=2; z=3; z=(x>y)?z :y ; z = (z<y

25、)?z:x; A1 B4 C2 D35下面標識符中,合法的用戶標識符為( )。 AP#Ad B12a Cchar D_int 6 A + 3 的結(jié)果是( )。 AA BD的ASC碼 C65 D37語句char str20;說明str是一個字符串,最多能表示 ( ) 。 A20個字符 B19個字符 C18個字符 D21個字符8將int 型變量n轉(zhuǎn)換成float型變量的方法是 ( )。Afloat n B(float)n Cfloat(n) D21個字符9以下不正確的描述是 ( )。A 使用while和do-while循環(huán)時,循環(huán)變量初始化的操作應(yīng)在循環(huán)語句之前完成B while循環(huán)是先判斷表達式

26、后執(zhí)行循環(huán)體語句C do-while和for循環(huán)均是先執(zhí)行循環(huán)體語句,后判斷表達式D for、while、do-while循環(huán)中的循環(huán)體均可以由空語句構(gòu)成10在循環(huán)中使用break 語句的功能是( )。A 使程序的執(zhí)行跳出break所在的那一重循環(huán)B 使程序執(zhí)行結(jié)束C 跳出包含此break語句的所有循環(huán)D 終止本次循環(huán),繼續(xù)下次循環(huán)11下面是一個初始化指針的語句:int *px = &a;其中指針變量的名字應(yīng)該是( )。 A*pz Ba Cpx D&a12若指針 px為空指針,則 ( )。 Apx指向不定 Bpx的值為零 Cpx的目標為零 Dpx的地址為零13對于語句int *

27、px10,以下說法正確的是( ) 。A. px是一個指針,指向一個數(shù)組,數(shù)組的元素是整數(shù)型。B. px是一個數(shù)組,其數(shù)組的每一個元素是指向整數(shù)的指針。C. A和B均錯,但它是C語言的正確語句。D. C語言不允許這樣的語句。14具有相同基類型的指針變量P和數(shù)組變量Y,下列寫法中不合法的是 ( ) 。AP = Y B*P = Yi CP + &Yi DP = &Y15已知static int a=5,4,3,2,1,*p=a+3,a+2,a+1,a,*q=p,則表達式 *(p0+1)+*(q+2)的值是( )。 A5 B4 C6 D716已知for(;n>=1;n-),下列語

28、句實現(xiàn)將S2所指字符數(shù)組中前n個字符復制到S1所指字符數(shù)組中,其中代碼不正確的是( )。 A*S1+=*S2+ BS1n-1=S2n-1 C*(S1+n-1)=*(S2+n-1) D*(+S1)=*(+S2)17調(diào)用函數(shù)的實參與被調(diào)用函數(shù)的形參應(yīng)該有如下關(guān)系( ) 。 A只要求實參和形參個數(shù)相等 B只要求形參和實參順序相同 C只要求實參和形參數(shù)據(jù)類型相同 D上述三點均需具備18聯(lián)合體成員的數(shù)據(jù)類型 ( )。A相同 B可以不同也可以相同 C長度一樣 D是結(jié)構(gòu)體變量19由系統(tǒng)分配和控制的標準輸出文件為( ) 。 A鍵盤 B磁盤 C打印機 D顯示器20C語言標準庫函數(shù)fread(fd,buffer,

29、n)的功能是( )。 A從文件fd中讀取長度不超過n個字節(jié)的數(shù)據(jù)送入buffer指向的內(nèi)存區(qū)域 B從文件fd中讀取長度不超過n-1個字節(jié)的數(shù)據(jù)送入buffer指向的內(nèi)存區(qū)域 C從文件fd中讀取長度不超過n個字符送入buffer指向的內(nèi)存區(qū)域 D從文件fd中讀取長度不超過n-1個字符送入buffer指向的內(nèi)存區(qū)域第二部分:簡單程序(12項,共30分)21下列程序main() int x,y,z; x=y=2;z=3;y=z+-1; printf(“%dt%dt”,x,y); y=+x-1;printf(“%d t%dn”,x,y); y=z-1; printf(“%dt%dt”,z,y); y=

30、-z-1; printf(“%dt%dn”,z,y);運行后輸出的數(shù)據(jù)為¬¬¬_。A. 3 1 4 2 B. 3 1 3 3 C. 2 2 3 2 D. 2 1 3 2 2 4 1 3 2 4 2 2 3 3 2 1 1 3 1 222.下列程序main() int i,j;char *a,c;a=”computer”;printf(“%s”,a);for(i=0,j=7;i<j;i+,j-) c=ai;*(a+i)=*(a+j);aj=c;printf(“->%sn”,a);c=aj-1,i=2+j;printf(“a%d=%cn”,i,c);運行后

31、輸出的數(shù)據(jù)為_ .A. computer->computer B. computer->retupmoca3=u a5=mC. computer->retupmoc D. computer->retupmoca4=p a2=t23.下列程序int sum(int n) int p=1,s=0,i;for(i=1;i<=n;i+) s+=(p*=i);return s;main() printf(“sum(5)=%dn”,sum(5);運行后輸出的數(shù)據(jù)為_ _A.sum(5)=151 B.sum(5)=152 C.sum(5)=153 Dsum(5)=15524.下

32、列程序main() static int a=5,6,7,3,2,9;int s1,s2,i,*ptr;s1=s2=0;ptr=&a0;for(i=0;i<5;i+2=2) s1+=*(ptr+i);s2+=*(ptr+i+1);printf(“s1=%d,s2=%dn”,s1,s2);運行后輸出的數(shù)據(jù)為_A.s1=18,s2=14 B.s1=14,s2=32 C.s1=14,s2=18 D.s1=15,s2=1925.下列程序int c=1;main()static int a=5;int b=6;printf(“a=%d b=%d c=%dn”,a,b,c);func();p

33、rintf(“a=%d,b=%d,c=%dn”,a,b,c);func();func() static int a=4;int b=10;a+=2;c+=10;b+=c;printf(“a=%d,b=%d,c=%dn”,a,b,c);運行后輸出的數(shù)據(jù)為_ _.A. a=5 b=6 c=1 B. a=5 b=6 c=1 a=6 b=21 c=11 a=7 b=17 c=11 a=5 b=6 c=11 a=5 b=6 c=11 a=8 b=31 c=21 a=9 b=17 c=21 C. a=5 b=6 c=1 D. a=5 b=6 c=1a=6 b=21 c=11 a=7 b=17 c=11a=

34、6 b=21 c=11 a=7 b=17 c=11a=8 b=31 c=21 a=9 b=38 c=2126已知struct studentchar name; int student_n; char grade; struct student temp,*p=&temp;=”chou”;則下面不正確的是_。 表達式 值A(chǔ).pname chou B.(*p)name+2 h C.*pname+2 e D.*(pname+2) o27.下列程序 #define MAX 10 main() int i,sum,a =1,2,3,4,5,6,7,8,9,10; sum=1;

35、for(i=0;i<MAX;i+)sum-=ai;printf(“SUM=%d”,sum); 程序運行結(jié)果是: A.SUM=55 B.SUM=-54 C.SUM=-55 D.SUM=5428.下列程序 void inv(int*x,int n) int *p,t,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m;for(;i<p;i+,j-) t=*i;*i=*j;*j=t; return; main( ) static int i,a10=3,7,9,11,0,6,7,5,4,2; inv(a,10);for(i=0;i<10;i+) printf(“%d

36、,”,ai); 程序運行結(jié)果: A.0,2,3,4,5,6,7,7,9,11 B.11,9,7,7,6,5,4,3,2,0 C.3,7,9,11,0,6,7,5,4,2 D.2,4,5,7,6,0,11,9,7,329.下列程序 main() int a10,b10,*pa,*pb,i; pa=a;pb=b; for(i=0;i<3;i+,pa+,pb+) *pa=i;*pb=2*i; printf(“%dt%dn”,*pa,*pb);printf(“n”);pa=&a0;pb=&b0;for(i=0;i<3;i+) *pa=*pa+i; *pb=*pb*i; pr

37、intf(“%dt%dn”,*pa+,*pb+); 運行后輸出的數(shù)據(jù)為_。A. 0 0 B.0 0 C. 0 0 D. 0 0 1 2 1 2 1 2 2 2 2 4 2 4 2 4 2 4 0 0 0 0 0 0 0 0 2 2 2 2 1 2 1 2 4 8 2 4 2 4 4 830.下列程序 copy_string(from,to) char *from,*to; while(*from) *to+=*from+; *to=0; main() static char s1 =”c_program.”; static char s280; copy_string(s1,s2); prin

38、tf(“%sn”,s2);copy_string(“123”,s2);printf(“%sn”,s2); 運行后輸出的數(shù)據(jù)為( )。 A. c_program 123 B.123 C. c_program123 D. c_program 12331.下列程序: #include <stdio.h> main() char a40,b40; int i,j;printf(“Enter the string:”);scanf(“%s”,a); i=j=0;while(ai!=0) if(!(ai>=0&&ai<=9) bj=ai; j+; +i; bj=0;

39、printf(“%s”,b); 運行后輸出的結(jié)果是( ) 。A. 把鍵盤輸入的字符串顯示在屏幕上B. 把鍵盤輸入的字符串中的數(shù)字字符刪掉,然后顯示該字符串C. 把鍵盤輸入的字符串中的字符0和9刪掉,然后顯示該字符串D. 只保留由鍵盤輸入的字符串中的字母數(shù)字,然后顯示該字符串32下列程序#include<stdio.h>main() char a80; int i,j; printf(“Enter the string:”);scanf(“%s”,a);i=0;while(ai!=0) if(ai>=A&&ai<=Z) ai=ai-A+a; printf(

40、“%s”,a);運行后輸出的結(jié)果是( )。A. 把鍵盤輸入的字符串中的大寫字母變換成小寫字母,然后顯示變換后的字符串。B. 把鍵盤輸入的字符串中的數(shù)字字符刪除掉,然后顯示該字符串。C. 把鍵盤輸入的字符串中的小寫字母變換成大寫字母,然后顯示變換后的字符串。D. 把鍵盤輸入的字符串原封不動地顯示在屏幕上。第二卷說明:(1)第二卷含二大題,均屬填空題,每題各有5個空欄,在閱讀和理解原題程序的基礎(chǔ)上,在空欄處填入適當?shù)淖址?、語句,以構(gòu)成一個正確的C語言程序。 (2)每空欄填對得3分,兩大題共10個空欄,全填對得30分。試題一一個整數(shù)稱為完全平方數(shù),是指它的值是另一個整數(shù)的平方。如81是個完全平方數(shù),

41、因為它是9的平方。下列程序是在三位的正整數(shù)中尋找符合下列條件的整數(shù):它既是完全平方數(shù),且三位數(shù)字中又有兩位數(shù)字相同:例如144(12*12)、676(26*26)等,從程序中找出并輸出所有滿足上述條件的三位數(shù)。程序如下:main() int n,k,a,b,c; for(k=1; ;k+)_ if(n<100) _ if(n<999) _ a=n/100; b=_ c=n%10, if(flag(a,b,c) printf(“n=%d=%d*%dn”,n,k,k); flag_ return(!(x-y)*(x-z)*(y-z);試題二以下程序所列函數(shù)replace(char *s

42、1,char *s2,char str1,char *str2)的功能是將已知字符串s1中的所有與字符串str1相同的子串替換成字符串str2,并將替換后所生成的新的字符串存于字符數(shù)組s2中。說明:生成字符串s2的過程是一個循環(huán),順序訪問字符串s1的每個字符;當從某個字符開始不能構(gòu)成與str1相同的子字符時,就把該字符拷貝到數(shù)組s2,當從某個字符開始能構(gòu)成一個與str1相同的子字符串時,就將字符串str2的各字符拷貝到字符數(shù)組s2,并繼續(xù)訪問字符串s1中那個子串之后的字符,直至字符串s1被訪問完畢,字符復制即告結(jié)束。下列程序運行的結(jié)果是輸出:ABCXYZdefg abABCXYZd abab程

43、序如下:replace(char *s1,char *s2,char *str1,char *str2) char *t0,*t1,*t2; while( ) for(t0=s1,t1=str1;*t1!=0&& ;t0+,t1+); if(*t1!=0)*s2+= ; else for(t1=str2;*t1!=0;) *s2+= ; ; *s2=0; main() char s1=”abcdefg ababcd abab.”; char s280; replace(s1,s2,”abc”,”ABCXYZ”); printf(“%sn”,s2); 參考答案第一卷一基礎(chǔ)知識(2

44、0項,共40分) 1.C 2.C 3.C 4.A 5.D 6.B 7.B 8.B 9.C 10.A 11.C 12.B 13.B 14.D 15.A 16.D 17.D 18.B 19.D 20.A 二簡單程序 21.C 22.B 23.C 24.C 25.A 26.B 27.B 28.D 29.A 30.D 31.B 32.A第二卷 試題一:n=k*k continuebreakn%100/10或(n-100*a)/10或n/10-(n/100)*10int x,int y,int z試題二:*s1或s1!=0 *t0=*t1或*t1=*t0 *s1+ *t1+ s1=t0或s1=s1+st

45、rlen(str1)C語言程序設(shè)計第一部分:基礎(chǔ)知識(20題,共40分)1、一個C語言的源程序中,( ) 。(A)必須有一個主函數(shù) (B)可以有多個主函數(shù)(C)必須有主函數(shù)和其他函數(shù) (D)可以沒有主函數(shù)2、下列數(shù)據(jù)中,為字符串常量的是( ) 。(A)A (B)“house” (C)How do you do (D)$abc3、若有定義:int a=8,b=5,c;,執(zhí)行語句c=a/b十0.4;后,c的值為( ) 。(A)1.4 (B)1 (C)2.0 (D)24、設(shè)有int x=11;則表達式(x+*l/3)的值為( )。(A)3 (B)4 (C)11 (D)125、執(zhí)行x=5>1+2

46、&&2|2*4<4-!0后,x的值為( )。(A)-l (B)O (C)1 (D)56、以下變量x、y、z均為double類型且已正確賦值,不能正確表示數(shù)學式子:(x)/(y×z)的c語言表達式是( )。(A)x/y*z (B)x*(1/(y*z) (C) x/y*1/z (D)x/y/z7、設(shè)有以下說明語句struct exint x;float y; char z;example;則下面的敘述不正確的是( )。(A)struct是結(jié)構(gòu)體類型的關(guān)鍵字 (B)example是結(jié)構(gòu)體類型名(C)x,y,z都是結(jié)構(gòu)體成員名 (D)struct ex是結(jié)構(gòu)體類型8、假

47、定w、x、y、z、m均為int型變量;有如下程序段:w=1;x=2;y=3;z=4;m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;則該程序段執(zhí)行后,m的值是( )。(A)4 (B)3 (C)2 (D) 19、在調(diào)用函數(shù)時,如果實參是簡單變量,它與對應(yīng)形參之間的數(shù)據(jù)傳遞方式是( ) 。 (A) 地址傳遞 (B) 單向值傳遞(C) 由實參傳給形參,再由形參傳回實參 (D) 傳遞方式由用戶指定10、以下定義語句中,錯誤的是 ( )。(A)int a=1,2; (B) char *a3;(C)char s10="text"; (D)

48、int n=5,an;11、下列程廳執(zhí)行后的輸出結(jié)果是( ) 。 main() char arr24; strcpy(arr,"you");strcpy(arr1,"me"); arr03='&'; printf("%sn",arr); (A)you&me (B)you (C) me (D)err12、標有/* */的語句的執(zhí)行次數(shù)是( )。 int y,i; for(i=O;i<20;i+) if(i%2=0) continue; y+=i; /* */ (A) 20 (B) 19 (C) 10

49、 (D) 913、若用數(shù)組名作為函數(shù)調(diào)用的實參,傳遞給形參的是( )。 (A) 數(shù)組的首地址 (B) 數(shù)組第一個元素的值 (C) 數(shù)組中全部元素的值 (D) 數(shù)組元素的個數(shù)14、下列語句執(zhí)行后的結(jié)果是( )。 y=5;p=&y;x=*p+; (A) x=5,y=5 (B) x=5,y=6 (C) x=6,y=5 (D) x=6,y=615、執(zhí)行下面的語句后,表達式*(p0+1)+*(q+2)的值為 ( )。 int a=5,4,3,2,1,*p=a+3,a+2,a+1,a,*q=p; (A) 8 (B) 7 (C) 6 (D) 516、經(jīng)過下面的語句后 int i,a10,*p; 定義

50、后,下列語句中合法的是 ( )。 (A) p=100: (B) p=a5; (C) p=a+2; (D) p=&(i+2);17、若有以下說明和語句,則對pup中sex域的正確引用方式是( )。 struct pupilchar name20; int sex; pup,*p;p=&pup;(A)p.pup.sex (B)p->pup.sex (C)(*p).pup.sex (D)(*p).sex18、若已定義了如下的共用體類型變量x,則x所占用的內(nèi)存字節(jié)數(shù)為( ) 。union data int i; char ch; double f; x;(A) 7 (B) 11

51、(C)8 (D) 1019、若有下面的說明和定義:struct test int m1;char m2;float m3; union uu char u15;int u22;ua; myaa;則sizeof(struct test)的值是 ( ) 。 (A) 12 (B) 16 (C) 14 (D)920、若要打開:A盤上user子目錄下名為abc.txt的文本文件進行讀、寫操作,下面符合此要求的函數(shù)調(diào)用是( ) 。 (A)fopen("A:userabc.txt","r") (B) fopen("A:userabc.txt",&q

52、uot;r+") (C)fopen("A:userabc.txt","rb") (D) fopen("A:userlabc.txt","w")第二部分:簡單程序(12題,共30分)21、以下程序的運行情況是( ) 。 main() int i=1,sum=0; while(i<10) sum=sum+1; i+; printf("i=%d,sum=%d",i,sum); (A) i=10,sum=9 (B) i=9,sum=9 (C) i=2,sum=l (D) 運行出現(xiàn)錯誤22

53、、若輸入B,以下程序的運行結(jié)果為( ) 。main() char grade; scanf("%c",&grade); switch(grade) case 'A':printf(">=85"); case 'B': case 'C':printf(">=60"); case 'D':printf("<60");default:printf("error"); (A)>=85 (B)>=60 (

54、C)>=60<60error (D) error23.有如下程序 main() int x=23; do printf("%d",x-);while(!x); 該程序的執(zhí)行結(jié)果是( ) 。(A)321 (B)23 (C)不輸出任何內(nèi)容 (D)陷入死循環(huán)24.有如下程序int func(int a,int b) return (a+b);main()int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%dn",r); 該程序的輸出結(jié)果是 ( ) 。 (A) 12 (B) 13 (C)14 (D)1525.以下程序的輸出結(jié)果是( ) 。main() int a,b; for(a=1,b=1;a<=100;a+) if(b>=10) break; if

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論