第一题:蛇形矩阵
1.首先,第一步便是找规律(以六行六列为例):不难发现:
第一轮可以看作先写第一行,为6;再写最后一列,并且为6-1,接着写倒数第一行,也为6-1,最后写第一列,为6-2;
同理:第二轮可以看作先写第二行,为6-2,再写倒数第二列,并且为6-2-1,接着写倒数第二行,也为6-2-1,最后写第二列,为6-2-2;
同样:第三轮可以看作先写第三行,为6-2-2,再写倒数第三列,并且为6-2-2-1,接着写倒数第三行,也为6-2-2-1,最后写第三列,为6-2-2-2;
一共会进行三轮,即6/2;
则当a行b列时,进行a/2(a为偶数)或a+1/2轮(a为奇数);
因此,我们写函数时也按照此顺序:(设a为行数,b为列数)
2.关于这个规律的整体函数为
接下来,我们具体来看:
首先要注意,若行数为单数,也应进行其行数加一除二轮,即:
接着进行循环的第一步:
应循环的次数为是列数-循环次数*2; 每次数组的位置为第i行(总体循环的次数),第q+i列,此时最容易忽略i,但从第二轮开始,便需要加i。
第二步:
应循环的次数为是行数-1-循环次数*2;每次数组的位置为第w+1+i行,此时也最容易忽略i,但从第二轮开始,便需要加i,第b-i-1列。
第三步:
第三步是我认为较为复杂的一步,由于此时是逆着进行,所以是e--,因为此时数组的位置不再好表示,因此我引入了一个新的变量,来进行协助。
第四步:
第四步同理,循环次数为a-2*(i+1),也是r--,数组的位置较容易,行为r+I,列为I;
纵观全局,会发现当行数为奇数时,例:
此时,最后一轮只需要进行刚开始行的,即可,故而又加了一个if语句 。
在这里面,最容易出错的其实是数组具体的位置,需要耐心的找规律,注意加i;
3.最后,写出来主函数
第二题:有序单循环链表
我们先了解一些关于链表的相关知识:
构造链表时,先定义链表节点结构体,然后再将各个节点连接起来构成链表,而单循环链表就是将链表的尾和头通过指针连接起来,构成一个“圈”,再进一步,有序单循环链表就是链表里的数值是按照大小顺序连接的。
该题题目为:
1.那么该题的第一步:便是创建一个单循环链表节点的结构体
2.接着,便是构造一个有序单循环链表
这也是最关键的一步:分为三种情况讨论,head为空时,节点中的值小于下一个值,以及节点中的值小于下一个值(若我们构建单循环链表,只讨论前两中情况即可,即head为空时,head不为空时)
3.然后便是展示有序单循环链表:
在这里要注意,链表为空的情况
4.最后便是主函数:
第三题.关于银行问题的设计类题目
其实,对于初学者来讲,这一点就已经不知所措了。以Code Blocks为例,如图:
按照你的需求命名文件与地址即可
关于银行储存
1.首先创建一个Accout(在Account.h),满足题意要求的构造函数
具体函数在main函数中
2.然后再按照题意,创建SavingsAccount类(在SavingsAccount.h),继而创建函数
具体函数同样也是也在main函数中;
3.接着,便是主函数
由于创建了两个类,所以也要写个头文件;
这是关于Accout类的具体函数
这是关于SavingsAccout类的具体函数,需要特别注意题干所说,当存钱第二年时,此时的钱已经包含上一年的利息;
对银行卡进行初始化,以及进行一个菜单栏的显示。
接着便是具体操作。