C 語言期末復(fù)習(xí)題.doc_第1頁
C 語言期末復(fù)習(xí)題.doc_第2頁
C 語言期末復(fù)習(xí)題.doc_第3頁
C 語言期末復(fù)習(xí)題.doc_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

C語言期末復(fù)習(xí)題一、簡答題1、請問指針有哪些類型?指針的類型,跟他所指向的數(shù)據(jù)結(jié)構(gòu)有關(guān),基本類型的指針指向基本類型的數(shù)據(jù)結(jié)構(gòu)。2、函數(shù)式宏定義和函數(shù)調(diào)有什么不同? (1)函數(shù)式宏定義的參數(shù)沒有類型,預(yù)處理器只負(fù)責(zé)做形式上的替換,而不做參數(shù)類型檢查,所以傳參時要格外小心。(2)調(diào)用真正函數(shù)的代碼和調(diào)用函數(shù)式宏定義的代碼編譯生成的指令不同。 (3)函數(shù)式宏定義要注意格式,尤其是括號。 (4)若函數(shù)參數(shù)為表達(dá)式,則普通函數(shù)的調(diào)用與函數(shù)式宏定義的替換過程是不一樣的。 (5)函數(shù)式宏定義往往會導(dǎo)致較低的代碼執(zhí)行效率。3、請問指針編程有哪些優(yōu)點? (1)提高傳輸速度,又節(jié)省大量內(nèi)存。 (2)可以用來做數(shù)據(jù)類型轉(zhuǎn)換,比較常用于通訊緩沖區(qū)的填充。 (3)可以用在大量分支處理的實例當(dāng)中。 (4)在數(shù)據(jù)結(jié)構(gòu)中,鏈表、樹、圖等大量的應(yīng)用都離不開指針。4、C語言中,變量為什么要先定義后使用? (1)對于編譯器處理更方便。 (2)不容易出錯。 (3)程序更清晰。5、二維數(shù)組的初始化定義的正確形式有哪些?請舉例說明 (1)分行賦初值例如:inta23=1,3,4,2,3,1,7,9,0;(2)按順序初始化例如:inta23=1,3,4,2,3,1,7,9,0; (3)省略一維長度的賦值例如:inta3=1,3,4,2,3,1,7,9,0; (4)對數(shù)組的前幾行元素初始化,其他元素自動初始化為0例如:inta23=1,2,3;6、while與dowhile相同點與不同點是什么? (1)while語句是先測試條件再執(zhí)行語句,條件不符后終止;dowhile語句是先執(zhí)行語句再測試條件,條件不符后終止,所以dowhile循環(huán)至少執(zhí)行一次7、請寫出一個C程序的構(gòu)成 (1)C程序是由若干個函數(shù)構(gòu)成的 (2)每個函數(shù)(包括主函數(shù))的定義分為兩個部分:函數(shù)說明部分和函數(shù)體。 (3)C程序中的語句最后總要有一個“分號(;)”,作為每個語句的結(jié)束。 (4)可以用“”括住任意字符,稱為“注釋”。 (5)C程序的書寫格式很靈活,在一行上可以書寫多個語句,一個語句也可以寫在多行上。 (6)C程序的執(zhí)行總是從主函數(shù)開始,并在主函數(shù)中結(jié)束。 (7)主函數(shù)可以調(diào)用任何非主函數(shù);任何非主函數(shù)都可以相互調(diào)用,但是不能調(diào)用主函數(shù)8、C語言的語句有哪幾種? (1)表達(dá)式語句(2)函數(shù)調(diào)用語句(3)控制語句(4)復(fù)合語句(5)空語句9、運行C程序的步驟編輯(預(yù)處理)編譯鏈接運行10、算法的特征 (1)有窮性(2)確切性(3)輸入(4)輸出(5)可行性11、C語言變量的儲存類別分為哪四種? (1)auto(自動)(2)extern(外部)(3)static(靜態(tài))(4)register(寄存器)12、函數(shù)的嵌套調(diào)用和遞歸調(diào)用有什么區(qū)別? 遞歸調(diào)用是自己調(diào)用自己,函數(shù)嵌套可以是調(diào) 用其他函數(shù)。13、請描述一個算法,求1+4+7+100的和#includevoidmain()inti;intsum=0;for(i=1;i=100;i+=3)sum+=i;printf(%dn,sum);return;14、循環(huán)結(jié)構(gòu)中break語句和continue語句的作用是什么?二者有何區(qū)別 (1)作用:break語句通常用在循環(huán)語句和開關(guān)語句中。continue語句的作用是跳過循環(huán)體中剩余的語句而強行執(zhí)行下一次循環(huán)。 (2)區(qū)別:continue語句只結(jié)束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行。break語句則是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。15、指針與地址有什么聯(lián)系?在使用指針的過程中應(yīng)注意哪些細(xì)節(jié)? (1)聯(lián)系:指針和地址最大的區(qū)別就是指針是有類型的,地址是沒有類型的。指針是由地址和類型兩部分構(gòu)成的。 (2)注意細(xì)節(jié):指針變量和普通變量概念使用方式相混淆指針變量的賦值(初始化,傳遞地址)方式有誤指針變量的類型與所指元素的類型不一致指針移動不恰當(dāng)指針在使用過程中發(fā)生了不必要的導(dǎo)致錯誤的改變多重的指針指向指針,導(dǎo)致形成難以理清的邏輯關(guān)系.16、C語言中參數(shù)傳遞有什么特點?我們應(yīng)當(dāng)注意些什么? (1)數(shù)值傳遞:被調(diào)用函數(shù)中對形參的操作不影響主調(diào)用函數(shù)中的實參值。 (2)地址傳遞:可以通過被調(diào)用函數(shù)中對形參的操作來修改主調(diào)用函數(shù)中的實參值。 注意事項:用malloc或new申請內(nèi)存之后,應(yīng)該立即檢查指針值是否為NULL。防止使用指針值為NULL的內(nèi)存。17、C語言中進(jìn)行函數(shù)聲明的作用是什么? (1)把函數(shù)的名字,函數(shù)類型以及形參的類型、個數(shù)和順序通知編譯系統(tǒng),以便在調(diào)用該函數(shù)時進(jìn)行對照檢查,它不包括函數(shù)體。18、字符常量與字符串常量有什么區(qū)別? (1)形式上:字符常量是單引號引起的一個字符;字符串常量是雙引號引起的若干個字符; (2)含義上:字符常量相當(dāng)于一個整型值,可以參加表達(dá)式的運算;字符串常量代表一個地址值(該字符串在內(nèi)存中存放的位置); (3)占內(nèi)存大?。鹤址A恐徽家粋€字節(jié);字符串常量占若干個字節(jié),(至少一個字符結(jié)束標(biāo)志)19、C語言中如何表示“真”與“假” (1)定義假為0,真為1。(2)建立自己的枚舉類型20、字符數(shù)組與字符串是否相同?若不相同,有何區(qū)別? 不相同。(1)字符指針中存的是字符串第一個字符的首地址。而字符數(shù)組中存的整個字符串 (2)字符數(shù)組只能在定義是進(jìn)行初始化;chara=abc;不可以chara10;a10=abc而字符指針可以。21、關(guān)鍵字與一般標(biāo)識符有什么不同? (1)關(guān)鍵字是標(biāo)識符的一種。標(biāo)識符是指:可以當(dāng)作變量名,函數(shù)名等的。 (2)標(biāo)識符是非常多的(但C語言支持最長的標(biāo)識符是32個)而關(guān)鍵字只有32個。22、使用swicth的注意事項。 (1)switch語句后面的小括號只能寫整數(shù)類型的表達(dá)式,否則會報錯。 (2)switch小括號后面不要加分號,可以加分號加在大括號后面。23、請用兩種方式寫出如何判斷某一年為閏年的C語句。 (1)#includemain()intn;printf(“請輸入年份:n);scanf(“%d,&n);if(n%100=0)if(n%400=0)printf(“是閏年);elseprintf(“不是閏年);elseif(n%4=8)printf(“是閏年);elseprintf(“不是閏年) (2)#includeintmain()inta;scanf(%d,&a);if(a%400=0|a%4=0&a%100)printf(yes);elseprintf(no);return0;24、if語句中條件表達(dá)式可以是任意合法的表達(dá)式嗎?switch語句中break的作用是什么? (1)if語句中的表達(dá)式不限于邏輯表達(dá)式,可以是任意的數(shù)值類型。 (2)當(dāng)break用于開關(guān)語句switch中時,可使程序跳出switch而執(zhí)行switch以后的語句;如果沒有break語句,則會從滿足條件的地方開始執(zhí)行,直到switch結(jié)構(gòu)結(jié)束。25、C語言循環(huán)結(jié)構(gòu)主要有哪幾種?每種循環(huán)結(jié)構(gòu)的一般形式分別是什么樣的? (1)dowhile:先循環(huán),在判斷 (2) while:先判斷后循環(huán) (3)for:一般可以代替上面兩個26、預(yù)處理命令主要有哪幾種?每種預(yù)處理命令的一般形式是什么樣的? (1)宏定義命令:#define、#undef,用來定義和解除宏。 (2)文件包含命令:#include文件名或者#include。 (3)條件編譯:#ifdef、#else、#endif、#elif等。27、請寫出C語言標(biāo)識符的命名規(guī)則(1)必須用字母或下劃線開頭。(2)只能是字母、下劃線、數(shù)字的組合,不能出現(xiàn)其他符號。例如¥_st,就是個錯誤的標(biāo)識符,它出現(xiàn)了“¥”符號。(3)大小寫的含義是不同的,例如標(biāo)識符 TEA和tea是不同的。(4)標(biāo)識符的名稱不能是C語言中的關(guān)鍵字,關(guān)鍵字是具有特定含義的標(biāo)識符,用戶只能根據(jù)系統(tǒng)的規(guī)定使用它們。 28、請簡述while型循環(huán)和until型循環(huán)的區(qū)別WHILE型和UNTIL型語句本質(zhì)上是等價的,當(dāng)型循環(huán)有時稱為前測試型循環(huán),直到型循環(huán)有時稱為后測試型循環(huán).29、C語言中的語句有哪幾類?(1)表達(dá)式語句(2)函數(shù)調(diào)用語(3)控制語句(4)復(fù)合語句(5)空語句30、局部變量和全局變量有何區(qū)別?全局變量就是整個源程序都有效的變量;而局部變量會在其所屬.二、編程題1、以下4種水果,1蘋果2梨3桔子4芒果,單價分別是2.0元/公斤,2.5元/公斤,3.0元/公斤,4.5元/公斤,請輸入水果編號,重量,計算應(yīng)付款。解答:#include#includeintmain() doubleweight,pay,price;intnum;printf(請輸入水果編號、重量:);scanf(%d%lf,&num,&weight);switch(num)case1:price=2;break;case2:price=2.5;break;case3:price=3;break;case4:price=4.5;break;default:printf(你輸入的編號有誤!n);exit(0);pay=weight*price;printf(應(yīng)付款:%.2lfn,pay);return0;2、輸入某學(xué)生成績(成績分為100分制,可以為89.5,如果輸入的成績不在0-100之間,請給出錯誤提示)經(jīng)處理后給出學(xué)生的等級,等級分類如下:90分以下(包括90分):A80至90分(包括80分):B70至80分(包括70分):C60至70分(包括60分):D60分以下:E#includestdio.hvoidmain()doublekey;printf(請輸入學(xué)生成績n);scanf(%lf,&kay);if(key=0&key=60&key=70&key=80&key=90&key=100)printf(分?jǐn)?shù)等級:An);elseprintf(輸入有誤請重新輸入:);scanf(%If,&key);3、編程實現(xiàn)求1-10之間的所有數(shù)的乘積并輸出。#includevoidmain()inti;longsum=1;for(i=1;i=10;i=i+1)sum=sum*i;printf(“thesumofoddis:%ld”,sum);4、從鍵盤輸入兩個數(shù),求出其最大值(要求使用函數(shù)完成求最大值,并在主函數(shù)中調(diào)用該函數(shù))。#includeintmax(intx,inty)return(xy)?x:y;intmain()inta,b;printf(輸入兩個整數(shù)(空格隔開):);scanf(%d%d,&a,&b);printf(最大數(shù):%dn,max(a,b);return0;5、已知函數(shù)y=f(x),編程實現(xiàn)輸入一個x值,輸出y值。 2x+1 (x0)#includevoid main() float x;scanf(“%f”,x);if(x0)printf(“y=%f”,2*x+1);else if(x=0)printf(“y=%f”,x);elseprintf(“y=%f”,2*x-1);6、輸出100-200之間既不能被3整除也不能被7整除并統(tǒng)計這些整數(shù)的個數(shù),要求每行輸出8個數(shù)。#include#includevoid main()clrscr();int n;n=0;for(int i=100;i=200;i+)if(i3!=0&i7!=0)n+;printf(ad=dt,n,i);7、小明媽媽給他買了若干塊巧克力,小明第一天吃了一半,還不過癮,又多吃了一塊,第二天又將剩下的巧克力吃掉一半,又多吃一塊,以后每天都吃了前一天剩下的一半零一塊。到第10天再想吃時,只剩下一塊了。編程計算小明媽媽總共給小明買了多少塊巧克力?#includeintcho(int);voidmain()printf(%dn,cho(1);intcho(inty)/*返回第y天吃之前的數(shù)量*/if(10=y)return1;return(cho(y+1)+1)*2;8、寫程序,其中自定義一函數(shù),用來判斷一個整數(shù)是否為素數(shù)。主函數(shù)輸入一個數(shù),輸出是否為素數(shù)?#includevoidsushu(intn);intmain()intn;scanf(%d,&n);sushu(n);voidsushu(intn)inti,m=1;for(i=2;in/2;i+)if(n%i=0)m=0;break;if(m=1)printf(sushu);elseprintf(fsushu);9、一個百萬富翁遇到一個陌生人,陌生人找他談一個換錢的計劃,該計劃如下:我每天給你十萬元,而你第一天只需給我一分錢,第二天我仍給你十萬元,你給我二分錢,第三天我仍給你十萬元,你給我四分錢,,你每天給我的錢是前一天的兩倍,直到滿一月(30天),百萬富翁很高興,欣然接受了這個契約。請編寫一個程序計算這一個月中陌生人給了百萬富翁多少錢?百萬富翁給陌生人多少錢?#includeintmain()unsignedlongsum1,sum2;intb=2;for(inti=0;i30;i+)sum1+=b;b*=2;sum1=100;sum2=100000*30;printf(富翁共收到%ld。n富翁共給出%ld。n,sum2,sum1);return0;10、從鍵盤輸入兩個正整數(shù)x,y,求它們的最大公約數(shù)。#includeintgcd(intx,inty);voidmain()intx,y,z;scanf(%d%d,&x,&y);z=gcd(x,y);pri

溫馨提示

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

評論

0/150

提交評論