本文发布于 1591 天前,最后更新于 1457 天前,其中的信息可能已经有所发展或是发生改变。
#include <bits/stdc++.h>
using namespace std;
/*
1. 编写函数,求一个数组的倒序数组。
*/
int *Reverse_order(int *p,int n)
{
for(int i=0; i<(n/2); i++)
swap(p[i],p[n-i-1]);
return p;
}
int main()
{
int *p;
p = new int [100];
for(int i=0; i<100; i++) //随机赋值
p[i] = (rand() % (9+1)),cout<< p[i] << " ";
cout << endl;
p = Reverse_order(p,100);//交换
for(int i=0; i<100; i++)
cout<< p[i] << " ";
delete p;
}
#include <bits/stdc++.h>
using namespace std;
/*
2. 编写函数,求一个数组的最大元素。
*/
int MaxArr(int *p,int n)
{
int m = 0;
for(int i=0; i<(n/2); i++)
m = max(p[i],p[n-i-1]);
return m;
}
int main()
{
int *p;
p = new int [100];
for(int i=0; i<100; i++) //随机赋值
p[i] = rand(),cout<< p[i] << " ";
cout << endl;
int m = MaxArr(p,100);//求最大
cout<<"Max Value = "<< m;
delete p;
}
#include <bits/stdc++.h>
using namespace std;
/*
3. 编写函数,将两个数组连接成一个数组。
*/
int *LinkArr(int *p,int n,int *q,int m)
{
int *t;
t = new int [m+n];
for(int i=0; i<n; i++)
t[i]=p[i];
for(int i=0; i<m; i++)
t[i+n] = q[i];
return t;
}
int main()
{
int *p,*q;
p = new int [100];
q = new int [100];
cout << "P: ";
for(int i=0; i<100; i++)
p[i] = i,cout<< p[i] << " ";
cout << endl<<"Q:";
for(int i=0; i<100; i++)
q[i] = i+100,cout<< q[i] << " ";
cout << endl << endl;
int *t;
t = LinkArr(p,100,q,100);
for(int i=0; i<200; i++)
cout<< t[i] << " ";
}
#include <bits/stdc++.h>
using namespace std;
/*
4.编写函数,求一个二维数组每行的和。
*/
int *SumArr(int **p,int n,int m)
{
int *t;
t = new int [n];
for(int i=0; i<n; i++)
t[i] = 0;
for(int i=0; i<n; i++)
{
for(int ii=0; ii<m; ii++)
t[i] += p[i][ii];
}
return t;
}
int main()
{
int **p=new int *[5];
for(int i=0; i<5; i++)
p[i] = new int [5];
for(int i=0; i<5; i++)
{
for(int ii = 0; ii<5; ii++)
{
p[i][ii] = (i+1) * (ii+1);
cout <<p[i][ii]<< " ";
}
cout << endl;
}
cout <<"-----------------------"<< endl;
int *t;
t = SumArr(p,5,5);
for(int i=0; i<5; i++)
{
cout << t[i] << " ";
}
for(int i=0; i<5; i++)
delete p[i];
delete p;
}
#include <bits/stdc++.h>
using namespace std;
/*
5.编写函数,求一个数组在另一个数组中的位置。
*/
bool Find(int *a,int *b,int m)
{
for(int i=0; i<m; i++)
if(a[i]!=b[i])
return false;
return true;
}
int FindArr(int *p,int n,int *q,int m)
{
int ans = -1;
for(int i=0; i<n; i++)
if(Find(p+i,q,m))
ans = i;
return ans;
}
int main()
{
int *p,*q;
p = new int [100];
q = new int [10];
cout << "P:"<<endl;
for(int i=0; i<100; i++)
p[i] = i,cout<< p[i] << " ";
cout << endl<< "Q:"<<endl;
for(int i=0; i<10; i++)
q[i] = i+30,cout<< q[i] << " ";
cout <<endl<<"-----------------------"<< endl;
int m = FindArr(p,100,q,10);
cout<<"Q Value Location = "<< m;
delete p;
}
#include <bits/stdc++.h>
using namespace std;
/*
6. 编写函数,求一个数组中素数的个数。
*/
bool judge_prime(int c)
{
for(int i = 2; i*i <= c; i++)
if(c % i == 0)
return false;
return true;
}
int PrimeArr(int *p,int n)
{
int m = 0;
for(int i=0; i<n; i++)
if(judge_prime(p[i]))
m++;
return m;
}
int main()
{
int *p;
p = new int [100];
for(int i=0; i<100; i++)
p[i] = i,cout<< p[i] << " ";
cout << endl;
int m = PrimeArr(p,100);
cout<<"The num of Prime is = "<< m;
delete p;
}
#include <bits/stdc++.h>
#define LEN 1000
/*
7. 由于计算机数据类型的限制,无法计算超出类型表示范围的数值的四则运算。有一个办法是把整数的每一位存放在一个一维数组的对应元素中,如某数组a[0]=7,a[1]=2,a[2]=5,a[3]=9,则表示存放的是4位数9527。编写函数,计算这种存放于数组的大整数的加法和乘法。
*/
using namespace std;
void H_A(string A,string B)
{
int a[LEN],b[LEN],c[LEN];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
int len = max(A.length(),B.length());
for(int i = A.length()-1,j = 0; i>=0; i--,j++) //倒叙存储,0为个位
a[j] = A[i] - '0'; //依据数字与字符0的差确定数字
for(int i = B.length()-1,j = 0; i>= 0; i--,j++)
b[j] = B[i] - '0';
for(int i = 0; i < len; i++)
{
c[i] += a[i] + b[i];
c[i+1] = c[i] / 10;//进位
// cout << i <<" "<< c[i+1];
c[i] %=10;//个位上的数字为该位的实际数字
}
if(c[len]) len++; //如果最后进位了,那么总位数加一
for(int i = len-1; i>=0; i--)
cout << c[i];
}
void H_M(string A,string B)//高精乘法
{
int a[LEN],b[LEN],c[LEN];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
int len = max(A.length(),B.length());
for(int i = A.length()-1,j = 0; i>=0; i--,j++) //倒叙存储,0为个位
a[j] = A[i] - '0'; //依据数字与字符0的差确定数字
for(int i = B.length()-1,j = 0; i>= 0; i--,j++)
b[j] = B[i] - '0';
for(int i = 0; i<LEN-1; ++i)
{
for(int j = 0; j<=i; ++j)
c[i] += a[j] * b[i-j];
if (c[i] >= 10)
{
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
}
bool pd = false;
for(int i = LEN-1; i>=0; i--)
{
if(c[i]==0&&!pd) continue;
pd =true;
cout << c[i];
}
}
int main()
{
string A,B;
cin >> A >> B;
cout << "Addition"<<endl;
H_A(A,B);
cout << endl<<"Multiplication"<<endl;
H_M(A,B);
}