二叉树的博客

C++单链表尾插法

题目 尾插法(数据结构严蔚敏C语言版的C++实现)

输入:键盘输入

输出:带头结点的单链表L

处理方法:待插结点*s插入到最后一个结点之后。

步骤:

1
2
3
4
5
1)获得最后一个结点的位置,使p指向该结点
2)p->next = new LNode;
3)p = p->next;
4)cin>>p->data;
5)p->next = NULL;

分析:要想获取最后一个结点的位置,必须从头指针开始顺着next链搜索链表的全部结点,该过程的时间复杂度是O( )。如果每次插入都按此方法获取最后一个结点的位置,则整个创建算法的时间复杂度为O( )。

C++函数分文件编写(VScode2021配置教程)

vscode2021新版的C++函数分文件编写配置

如图所示,需要下载这个插件

1
C/C++ Project Generator

在这里插入图片描述 安装并启用后,使用方法如下 在这里插入图片描述 在这里插入图片描述 创建工程文件后目录结构如下

在这里插入图片描述 main.cpp文件使用自定义的swap函数,swap函数的头文件放include文件夹,源文件放src文件夹

C++指针

指针的概念

内存地址 内存空间的编排是以字节为单位的,每一个字节(也称单元)都有一个编号,这就是地址。内存地址通常是一个大小为4个字节的整数(这与具体的计算机有关),一般用十六进制数表示。

C++自定义数据类型

结构体

C++里数组是由相同数据类型的一组元素构成的集合,但实际问题中,经常会遇到由相互关联的,但类型不同的数据组成的数据结构。比如:描述一个学生的数据实体应该包括其学号、姓名、性别、年龄、成绩等数据。如果用多个独立的简单数据类型表示的话,就无法体现其整体性,也不便于数据的整体操作。

小额贷款的划算问题(matlab数学建模)

代码

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
clc;close all;

%% 获取数据

day_i=3/10000 %日息

number_of_periods_i=day_i*30 %月利率

P=10000 %借款金额

N = 12 %还款期数

%% 模型选取及计算

Amount=P %借款金额

rate=number_of_periods_i %月利率

number_of_periods=N %贷款期数

command=input(‘输入0为等额本金还款,输入1为等额本息还款,输入2为等本等息还款,输入3为先息后本还款: ‘)

if command==0

%等额本金还款方式

M=Amount/number_of_periods %每月偿还本金

for j=1:number_of_periods-1

Amount(j+1)=Amount(j)-M %月初余额

end

R=Amount*rate %月底的利息

debt=Amount+R %月底欠款

M1=M+Amount*rate %月还款额

sum_R=sum(R) %总利息

sum_Amount=sum(M1) %还款总额

M=M-zeros(1,number_of_periods)

data=[Amount,R,debt,M,M1]%月初所欠金额 利息额 月末所欠金额 偿还本金 月末付款

[n,m]=size(data)

result= cell(n+1,m)

result(1,:)={‘月初所欠金额’,’利息额’,’月末所欠金额’,’偿还本金’,’月末付款’}

result(2:end,:) = num2cell(data)

xlswrite(data.xlsx,result,’等额本金还款方式’)%输出excel

fprintf(sum_R=%f’,sum_R)

fprintf(sum_Amount=%f’,sum_Amount)

elseif command==1

%等额本息还款方式

M=Amount*(rate*(1+rate)^number_of_periods)/((1+rate)^number_of_periods-1)%月还款额

for i=1:number_of_periods-1

Amount(i+1)=Amount(i)*(1+rate)-M %月初金额

end

R=Amount*rate %月底的利息

mon=M-R %每月偿还本金

debt=Amount+R %月底欠款

sum_R=sum(R) %总利息

sum_Amount=M*number_of_periods %还款总额

M=M-zeros(1,number_of_periods)

data=[Amount,R,debt,M-R,M]%月初所欠金额 利息额 月末所欠金额 偿还本金 月末付款

[n,m]=size(data)

result= cell(n+1,m)

result(1,:)={‘月初所欠金额’,’利息额’,’月末所欠金额’,’偿还本金’,’月末付款’}

result(2:end,:) = num2cell(data)

xlswrite(data.xlsx,result,’等额本息还款方式’)%输出excel

fprintf(sum_R=%f’,sum_R)

fprintf(sum_Amount=%f’,sum_Amount)

elseif command==2

%等本等息还款方式

M=Amount/number_of_periods %月还本金

for i=1:number_of_periods-1

Amount(i+1)=Amount(i)-M %月初金额

end

R=[P*rate,P*rate,P*rate,P*rate,P*rate,P*rate,P*rate,P*rate,P*rate,P*rate,P*rate,P*rate] %月底的利息

debt=Amount+R %月底欠款

M2=M+R %月还款额

sum_R=sum(R) %总利息

sum_Amount=M*number_of_periods+P*rate*number_of_periods %还款总额

M=M-zeros(1,number_of_periods)

data=[Amount,R,debt,M-R,M2]%月初所欠金额 利息额 月末所欠金额 偿还本金 月末付款

[n,m]=size(data)

result= cell(n+1,m)

result(1,:)={‘月初所欠金额’,’利息额’,’月末所欠金额’,’偿还本金’,’月末付款’}

result(2:end,:) = num2cell(data)

xlswrite(data.xlsx,result,’等本等息还款方式’)%输出excel

fprintf(sum_R=%f’,sum_R)

fprintf(sum_Amount=%f’,sum_Amount)

elseif command==3

%先息后本还款方式

M=0 %月还本金

for i=1:number_of_periods-1

Amount(i+1)=Amount(i)-M %月初金额

end

R=Amount*rate %月底的利息

debt=Amount+R %月底欠款

M3=R %月还款额

sum_R=sum(R) %总利息

M4=debt

sum_Amount=P+sum_R %还款总额

last_number_of_periods_debt=P+P*rate %最后一个月还款金额

M=M-zeros(1,number_of_periods)

data=[Amount,R,debt,M,M3]%月初所欠金额 利息额 月末所欠金额 偿还利息 月末付款

[n,m]=size(data)

result= cell(n+1,m)

result(1,:)={‘月初所欠金额’,’利息额’,’月末所欠金额’,’偿还本金’,’月末付款利息’}

result(2:end,:) = num2cell(data)

xlswrite(data.xlsx,result,’先息后本还款方式’)%输出excel

fprintf(sum_R=%f’,sum_R)

fprintf(sum_Amount=%f’,sum_Amount)

end

源文档

完整文档详见:博客相关资源-小额贷款的划算问题

C++数组

前言

这部分类同于Python,比如从0开始,都用[]来表示第几个元素。

一维数组(score)

形式如下

1
<类型标识符><数组名>[数组长度]

实例

1
2
3
4
5
6
int score[10];

int const N = 10;
int n,m;
int a[N];           //合法,N为常量
double[n],c[m*2];   //非法,n和m是变量

如果要访问一维数组的元素,形式如下:

C++函数

定义函数

1
2
3
4
<类型标识符><函数名>(形式参数表)
{
    语句序列
}

实例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
//求n!

#include<iostream>
using namespace std;
int factorial(int m);    //原型声明
int main()
{
    int n;
    cout<<"Input n:";
    cin>>n;
    cout<<n<<"!="<<"factorial(n)"<<endl;     //函数调用作为表达式出现在语句中
    return 0;
}

int factorial(int m)
{
    int i,result=1;
    for(i=1;i<=m;i++)
        result *=i;
    return result;
}

函数返回值及其类型

函数头部的类型标识符规定函数返回值的类型,函数的返回值是返回给主调用函数的处理结果,由函数体中的return语句带回。