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