贸大人 发表于 2021-11-30 12:19:59

经验谈 | 22年贸大843C++控制语句例题多写法精讲

冲刺班对于知识点已经掌握的差不多了,所以今天主要以做题为主。讲前四章的内容。这里找了三道题目,包括课本的例题、课后题和集锦里的题目(教材上的常见题集锦大家也应该做过一次了),下面会用不同的方法进行讲解。真题的重要性也很高,19年&20年中与每节课主题相关的题目会摘出来给大家讲一下。另外会找一些比较简单的和常见的经典题目,至少用两种方法给大家进行讲解。以理解代码为主,自己数组写、指针写、循环写等几种方法都写一下,看看有什么不同。编程题怎么写都可以,但有些题目会有要求必须用某种方法。尤其是指针和数组部分的题目,今年可能考得会稍微多一点。(一)题目一:输入一行字符,分别统计出其中的英文字母、数字、空格和其他字符的个数。解法1:getchar()+while语句https://pic1.zhimg.com/80/v2-a6b066c922ba9def29efc55148628d23_720w.jpg?source=3af55fa1

首先看一下第一题,已经在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语句+数组https://pic3.zhimg.com/80/v2-c023388b262a4bedcbc11bb7a4fa9913_720w.jpg?source=3af55fa1注意:1、首先Get和getchar的区别是:gets()函数可以读取字符数组,getchar()函数可以读取单个字符,但都只能是char类型。
2、gets()识别到换行之后,停止读取(不读取换行),并自动补‘\0’,所以在for循环里面需要用‘\0’作为休止符。
解法3:gets()+while语句+指针https://pica.zhimg.com/80/v2-02130a25d57e8a0b9fe8b38498093c1f_720w.jpg?source=3af55fa1
这个解法和上一个方法差不多,思想都是一样的。今年专业课可能会考到与字符串处理有关的问题,需要看清楚题目里面有没有与空格有关的要求。首先要读清题目要求,在选择合适的方法进行作答。实在理解不了可以将模板背下来,都是万能的。
(二)题目二:关于图形输出的问题(图形输出题目重点在于,找到图形每行之间的规律,将其总结为数学公式,如何理由双重循环进行输出。)
图形一:半菱形https://pic1.zhimg.com/80/v2-0af928478b1a6d5cb972f8431396a8c2_720w.jpg?source=3af55fa1

注意:1、对于菱形类,需要将其划分为上下两部分,上部分递增,下部分递减
2、下部分为2*(7-i)图形输出题目重点在于找到图形每行之间的规律,将其总结为数学公式,如何利用双重循环进行输出。对于图形类的题可以自己总结成数学公式,按照自己写的逻辑画一下。如果能画出来或者能算出来,大概率是没有问题的,这种类型的题目自己可以检查出来的。
图形二:菱形https://pic3.zhimg.com/80/v2-bfd205742d6aba2abc8310d7ddb14750_720w.jpg?source=3af55fa1

注意:1、输出菱形,将菱形分为上下两部分,再将每部分分为左右两部分,因此共需要4个循环。
2、循环条件不是试出来的,是先找规律,然后将其用i表示出来,为了方便理解,最后一个循环我写成了4+(7-i),4是左半部分,7-i是右半部分。
3、写完自己按代码走一遍,画一下,一般就可以确定自己写的是否正确。
https://pic2.zhimg.com/v2-7c16bfac2bfcd3e756208c257ab7af68_720w.jpg?source=3af55fa1


19&20年相关题目讲解1Static变量考察https://pic1.zhimg.com/80/v2-4276fdf4a538f6dd89a8f6953412606a_720w.jpg?source=3af55fa1

答案: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)=32static变量每次只有第一次调用时,赋值语句有效和,从第二次开始,只调用运算语句。
https://pic1.zhimg.com/80/v2-3ba02f98900d01996a8492617a0dfb0a_720w.jpg?source=3af55fa1
答案:B第一次调用:x=3*3=9,先输出9,后进行x++操作后,x=10第二次调用:x=10*3=30,先输出30,后进行x++操作后,x=31
2strlen()和sizeof()https://pic1.zhimg.com/80/v2-c2d511b7ed6e6e054fd0a20fb9e12e6f_720w.jpg?source=3af55fa1答案:Asizeof()计算的是占用内存的大小,union是共用内存,int是4字节,char是1字节,float是4字节,取最大字节数,因此结果为4。
https://pic3.zhimg.com/80/v2-5bb1a83226d7fb9e9e733912effb41bb_720w.jpg?source=3af55fa1答案:Bsizeof()计算的是占用内存的大小,a数组成员均为char类型,各占一个字节,一共有9个成员(加上’\0’),故结果为9;strlen()是求字符串长度,即看字符的个数(数到’\0’前一个字符),故答案是8;若题目中数组a改为int型,则答案改为36,8
3continue和breakhttps://pic1.zhimg.com/80/v2-f2d110ed4960a78010fd8332e3b700be_720w.jpg?source=3af55fa1答案:C①i=0,k1=11,k2=0j=0,j=1,k2=1j=2,j=3,k2=2k1=12②i=1,k1=13,k2=0j=0,j=1,k2=1j=2,j=3,k2=2k1=14本题难点在于,要请两个k的不同,因为int k=0前面有个大括号,所以这就是一个新的k2,而最后输出的是k1,所以其实本题与continue无关,只需要看i循环了一遍,每循环一遍,k累加两次,一共循环2次,k初始化为10,故最终结果为14。https://pic1.zhimg.com/80/v2-88870cb8bb8f09144ede801cbb3d9a3c_720w.jpg?source=3af55fa1答案:978983269high=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循环语句代码理解阅读https://pic3.zhimg.com/80/v2-7ce15603d74b381de3791702fe4769b2_720w.jpg?source=3af55fa1答案:888987874: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=75:5-2=3,跳到case3语句,c+3=5+3=8跳到default语句,c+2=5+2=7
https://pic2.zhimg.com/80/v2-c9553d8b73d040da92bcc5ffeb05dc6b_720w.jpg?source=3af55fa1答案:Cf(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=2f(3)= f(2)+f(1)=2+1=3f(4)= f(3)+f(2)=3+2=5f(5)= f(4)+f(3)=5+3=8虽然21年改成c++了,但21年考的题型与19年&20年的题型没有什么太大区别。只是文字类的题目有所减少,但对代码阅读的一些必考点还是会考的。同一个知识点可以在19&20年真题中找到两道题,每年都会考到。所以一定要注意这个知识点,多练习一下。欢迎关注微信公众号”贸大考研论坛“22年考研交流QQ群:61119609623年考研交流QQ群:735033517大家想要了解更多考研资讯,可以去关注一下这个公众号,也可以加一下贸大初试交流群。
页: [1]
查看完整版本: 经验谈 | 22年贸大843C++控制语句例题多写法精讲