冲刺班对于知识点已经掌握的差不多了,所以今天主要以做题为主。讲前四章的内容。这里找了三道题目,包括课本的例题、课后题和集锦里的题目(教材上的常见题集锦大家也应该做过一次了),下面会用不同的方法进行讲解。
真题的重要性也很高,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、写完自己按代码走一遍,画一下,一般就可以确定自己写的是否正确。
年相关题目讲解
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的不同,因为intk=0前面有个大括号,所以这就是一个新的k2,而最后输出的是k1,所以其实本题与continue无关,只需要看i循环了一遍,每循环一遍,k累加两次,一共循环2次,k初始化为10,故最终结果为14。
答案:97
89
83
high=,n=3,count=0,sum=0,flag=1
①2-50内,有的因数(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=,count=2,high=87
……
①2-41内,没有83的因数,flag=1,sum=97+89+83=,count=3,high=82
本题功能:输出从倒数的前三个素数及它们的和
注意:结果书写这里,空格和换行一定要看准,填空题只有完全对和完全不对两种。
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):returnf(4)+f(3)
f(4):returnf(3)+f(2)
f(3):returnf(2)+f(1)
f(2):returnf(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年的题型没有什么太大区别。只是文字类的题目有所减少,但对代码阅读的一些必考点还是会考的。同一个知识点可以在年真题中找到两道题,每年都会考到。所以一定要注意这个知识点,多练习一下。