- 十进制转化成二进制非递归实现
- 十进制转化成二进制递归实现
- 斐波那锲数列非递归实现
- 斐波那锲数列递归实现
- 直接插入排序
- 快速排序
- 简单选择排序
- 大数加法
1.十进制转化成二进制非递归实现
#include
using namespace std;
const int maxn=1000;
int a[maxn];
int main(){
int n,t;
while(~scanf("%d",&n)){
if(n==0){
printf("0\n");
continue;
}
t=0;
while(n!=0){
a[t]=n%2;
n/=2;
t++;
}
for(int i=t-1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}
2.十进制转化成二进制递归实现
#include
using namespace std;
int Fib(int i){
int b;
b = i%2;
if(i<2){
printf("%d",b);
}else{
i = i/2;
Fib(i);
printf("%d",b);
}
}
int main(){
int n;
while(~scanf("%d",&n)){
Fib(n);
printf("\n");
}
return 0;
}
3.斐波那锲数列非递归实现
#include
using namespace std;
int main(){
int a1=1,a2=1,a,k;
while(true){
printf("请输入你想知道斐波那锲数列的第几项:");
cin >> k;
if(k==1 || k==2) cout << 1 <
4.斐波那锲数列递归实现
#include
using namespace std;
int Fib(int n){
if(n==1||n==2) return 1;
else return Fib(n-1)+Fib(n-2);
}
int main(){
int n;
while(true){
printf("请输入你想知道斐波那锲数列的第几项:");
scanf("%d",&n);
printf("%d\n",Fib(n));
}
return 0;
}
5.直接插入排序
#include
using namespace std;
#define ll long long
#define random(x) (rand()%x)
#define maxn 10000
ll length=maxn;
ll a[maxn+10];
void sort(){
int i,j;
for(i=2;i<=length;i++){
if(a[i]
6.快速排序
#include
using namespace std;
#define ll long long
#define maxn 10000
ll length=maxn;
ll a[maxn+10];
int Partition(int low,int high)
{
a[0]=a[low];
int key=a[low];
while(low < high)
{
while(low=key) --high;
a[low] = a[high];
while(low
7.简单选择排序
#include
using namespace std;
#define ll long long
#define random(x) (rand()%x)
#define maxn 10000
ll length=maxn;
ll a[maxn+10];
void SelectSort()
{
int i,j,t;
for(i=1;i
8.大数加法
#include
using namespace std;
const int Max=10000;
int a[Max], b[Max];
void BiggerPlus(string s1, string s2){
int len1, len2;
len1 = s1.size();
len2 = s2.size();
//初始化
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
//读数据,s1的最后位保存在数组中的开始部分
for (int i = len1 - 1, k = 0; i != -1;--i){
a[k] = s1[i] - '0';
++k;
}
for (int j = len2 - 1, k = 0; j != -1; --j){
b[k] = s2[j] - '0';
++k;
}
//做加法
int up = 0;
for (int i = 0; i < Max; ++i){
a[i] = a[i] + b[i] + up;
up = a[i] / 10;
a[i] = a[i] % 10;
}
//从右向左找到a数组中第一个不为0的数
int k = Max-1;
while (a[k] == 0)
--k;
//从右边第一个不为0的数开始,向左输出数组
for (int i = k; i != -1; --i)
cout << a[i];
return;
}
int main(){
string s1,s2;
cin>>s1>>s2;
BiggerPlus(s1,s2);
return 0;
}