作业9-3
本文发布于 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);
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇