沖刺班對于知識點已經(jīng)掌握的差不多了,所以今天主要以做題為主。講前四章的內(nèi)容。這里找了三道題目,包括課本的例題、課后題和集錦里的題目(教材上的常見題集錦大家也應該做過一次了),下面會用不同的方法進行講解。 真題的重要性也很高,19年&20年中與每節(jié)課主題相關(guān)的題目會摘出來給大家講一下。另外會找一些比較簡單的和常見的經(jīng)典題目,至少用兩種方法給大家進行講解。以理解代碼為主,自己數(shù)組寫、指針寫、循環(huán)寫等幾種方法都寫一下,看看有什么不同。編程題怎么寫都可以,但有些題目會有要求必須用某種方法。尤其是指針和數(shù)組部分的題目,今年可能考得會稍微多一點。 (一)題目一:輸入一行字符,分別統(tǒng)計出其中的英文字母、數(shù)字、空格和其他字符的個數(shù)。 解法1:getchar()+while語句 ![]()
首先看一下第一題,已經(jīng)在21年考過了。貿(mào)大的題目首先是為研究生階段的學習做鋪墊,不管是哪個方向都會涉及到對于數(shù)據(jù)文本的處理,所以今年很可能會考到關(guān)于字符串處理的題目。 比如 21年第一題考到總結(jié)字符串中某個字母的個數(shù),第二題考到找出兩個字符串。它不會考處理單一數(shù)據(jù),大概率會考一些字符跟文字,難度也會稍微大一些。 第一種解法是getchar()+while語句,第二種解法是gets()+for語句+數(shù)組。其中一些固定的寫法可以記下來或者背下來,考前的時候看一看。 注意: 1、getchar()函數(shù)可以讀取空格和換行,所以可以用來解決本題,因為本題需要讀取空格; 但cin不能讀取空格,所以不能用cin讀取整個字符串,因為讀取到空格就會自動結(jié)束讀取。
2、(c=getchar())!=‘\n’,可分解為兩句:c=getchar();while(c!=‘\n’){…},因為getchar每次都只讀取一個字符,所以要利用while循環(huán),讀一個判斷一個,再讀下一個。
3、 L、T、N和O記得初始化為0,再進行++。
4、建議手寫代碼的時候,寫上一些文字指引,方便老師閱讀代碼,也顯得更為專業(yè)。
5、字母取名考慮L(etter)、N(umber)、T(ab)、O(thers),盡量不要隨便用abcd。
解法2:gets()+for語句+數(shù)組 ![]() 注意: 1、首先Get和getchar的區(qū)別是:gets()函數(shù)可以讀取字符數(shù)組,getchar()函數(shù)可以讀取單個字符,但都只能是char類型。
2、gets()識別到換行之后,停止讀?。ú蛔x取換行),并自動補‘\0’,所以在for循環(huán)里面需要用‘\0’作為休止符。
解法3:gets()+while語句+指針 ![]()
這個解法和上一個方法差不多,思想都是一樣的。 今年專業(yè)課可能會考到與字符串處理有關(guān)的問題,需要看清楚題目里面有沒有與空格有關(guān)的要求。首先要讀清題目要求,在選擇合適的方法進行作答。實在理解不了可以將模板背下來,都是萬能的。
(二)題目二:關(guān)于圖形輸出的問題 (圖形輸出題目重點在于,找到圖形每行之間的規(guī)律,將其總結(jié)為數(shù)學公式,如何理由雙重循環(huán)進行輸出。)
圖形一:半菱形 ![]()
注意: 1、對于菱形類,需要將其劃分為上下兩部分,上部分遞增,下部分遞減
2、下部分為2*(7-i) 圖形輸出題目重點在于找到圖形每行之間的規(guī)律,將其總結(jié)為數(shù)學公式,如何利用雙重循環(huán)進行輸出。 對于圖形類的題可以自己總結(jié)成數(shù)學公式,按照自己寫的邏輯畫一下。如果能畫出來或者能算出來,大概率是沒有問題的,這種類型的題目自己可以檢查出來的。
圖形二:菱形 ![]()
注意: 1、輸出菱形,將菱形分為上下兩部分,再將每部分分為左右兩部分,因此共需要4個循環(huán)。
2、循環(huán)條件不是試出來的,是先找規(guī)律,然后將其用i表示出來,為了方便理解,最后一個循環(huán)我寫成了4+(7-i),4是左半部分,7-i是右半部分。
3、寫完自己按代碼走一遍,畫一下,一般就可以確定自己寫的是否正確。
19&20年相關(guān)題目講解 1 Static變量考察 ![]()
答案:B 第一次調(diào)用:fun(4):k=1+1=2,t=2+1=3,return(4*2*3)=24 第二次調(diào)用:fun(4):k=1+1=2,t=3+1=4,return(4*2*4)=32 static變量每次只有第一次調(diào)用時,賦值語句有效和,從第二次開始,只調(diào)用運算語句。
![]()
答案:B 第一次調(diào)用:x=3*3=9,先輸出9,后進行x++操作后,x=10 第二次調(diào)用:x=10*3=30,先輸出30,后進行x++操作后,x=31
2 strlen()和sizeof() ![]() 答案:A sizeof()計算的是占用內(nèi)存的大小,union是共用內(nèi)存,int是4字節(jié),char是1字節(jié),float是4字節(jié),取最大字節(jié)數(shù),因此結(jié)果為4。
![]() 答案:B sizeof()計算的是占用內(nèi)存的大小,a數(shù)組成員均為char類型,各占一個字節(jié),一共有9個成員(加上’\0’),故結(jié)果為9; strlen()是求字符串長度,即看字符的個數(shù)(數(shù)到’\0’前一個字符),故答案是8; 若題目中數(shù)組a改為int型,則答案改為36,8
3 continue和break ![]() 答案:C ①i=0,k1=11,k2=0 j=0, j=1,k2=1 j=2, j=3,k2=2 k1=12 ②i=1,k1=13,k2=0 j=0, j=1,k2=1 j=2, j=3,k2=2 k1=14 本題難點在于,要請兩個k的不同,因為int k=0前面有個大括號,所以這就是一個新的k2,而最后輸出的是k1,所以其實本題與continue無關(guān),只需要看i循環(huán)了一遍,每循環(huán)一遍,k累加兩次,一共循環(huán)2次,k初始化為10,故最終結(jié)果為14。 ![]() 答案:97 89 83 269 high=100,n=3,count=0,sum=0,flag=1 ①2-50內(nèi),有100的因數(shù)(2、50),flag=0,high=99 ②2-49內(nèi),有99的因數(shù)(3、33),flag=0,high=98 ③2-48內(nèi),有98的因數(shù)(2、48),flag=0,high=97 ④2-47內(nèi),沒有97的因數(shù),flag=1,sum=97,count=1,high=96 …… ①2-44內(nèi),沒有89的因數(shù),flag=1,sum=97+89=186,count=2,high=87 …… ①2-41內(nèi),沒有83的因數(shù),flag=1,sum=97+89+83=269,count=3,high=82 本題功能:輸出從100倒數(shù)的前三個素數(shù)及它們的和 注意:結(jié)果書寫這里,空格和換行一定要看準,填空題只有完全對和完全不對兩種。
4 循環(huán)語句代碼理解閱讀 ![]() 答案:* 4:4-2=2,跳到case2語句,c+4=4+4=8,break表示不再繼續(xù)。 4:4-2=2,跳到case2語句,c+4=4+4=8,break表示不再繼續(xù)。 6:6-2-4,跳到default語句,c+2=6+2=8,break表示不再繼續(xù)。 7:7-2=5,跳到default語句,c+2=7+2=9,break表示不再繼續(xù)。 5:5-2=3,跳到case3語句,c+3=5+3=8 跳到default語句,c+2=5+2=7 5:5-2=3,跳到case3語句,c+3=5+3=8 跳到default語句,c+2=5+2=7
![]() 答案:C f(5):return f(4)+f(3) f(4):return f(3)+f(2) f(3):return f(2)+f(1) f(2):return f(1)+f(0) f(2)= f(1)+f(0)=1+1=2 f(3)= f(2)+f(1)=2+1=3 f(4)= f(3)+f(2)=3+2=5 f(5)= f(4)+f(3)=5+3=8 雖然21年改成c++了,但21年考的題型與19年&20年的題型沒有什么太大區(qū)別。只是文字類的題目有所減少,但對代碼閱讀的一些必考點還是會考的。同一個知識點可以在19&20年真題中找到兩道題,每年都會考到。所以一定要注意這個知識點,多練習一下。 歡迎關(guān)注微信公眾號”貿(mào)大考研論壇“ 22年考研交流QQ群:611196096 23年考研交流QQ群:735033517 大家想要了解更多考研資訊,可以去關(guān)注一下這個公眾號,也可以加一下貿(mào)大初試交流群。
|