关于C/C++程序在鲲鹏平台openEuler上编译以及运行

Posted akynazh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C/C++程序在鲲鹏平台openEuler上编译以及运行相关的知识,希望对你有一定的参考价值。

本实验需要用到一台鲲鹏架构下装有openEuler操作系统的虚拟机,要求虚拟机配置为2vCPU | 4G RAM | 40G ROM,且可连接公网。

具体操作步骤:

1.购买合适的弹性云服务器并在putty上进行登录;


然后就可以看到华为云界面

2.同样在WINSP上进行登录:

3.在ECS主机上新建test目录,输入命令:

#mkdir test 创建一个test文件

#ls 显示当前目录


4.打开winscp上传源码至ECS主机;

5.进入ECS主机test目录,对已上传的程序文件进行编译:


6.开始编译C/C++文件
g++ -o test High.cpp

gcc -o test High.c
即生成可执行文件test.o


7.进行测试

./test + 回车

参考题目:

高精度计算

涉及知识点:数组、流程控制、函数等

要求:用整型数组表示10进制大整数(超过2^32的整数),数组的每个元素存储大整数的一位数字,实现大整数的加减法。

代码参考:

//高精度程序 加法&减法
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
string s1, s2;
int a[100], b[100], ans[101];
bool judge;
void HighPlus()
	int k = max(s1.length(), s2.length());
	for(int i = 0; i < k; i++)
		int p;
		p = a[i] + b[i] + ans[i];
		ans[i] = p % 10;
		ans[i+1] += p / 10;
		if(i == k - 1 && ans[i+1] != 0) k++;
	
	for(int i = k - 1; i >= 0; i--)	cout << ans[i];
	cout << endl;
	return;
 
void HighSub()
	int k = max(s1.length(), s2.length());
	for(int i = 0; i < k; i++)
		if(a[i] < b[i])
			a[i+1] -= 1;
			a[i] += 10;
			ans[i] += a[i] - b[i];
		else	ans[i] += a[i] - b[i];
	
	while(ans[k - 1] == 0)	k--;
	for(int i = k - 1; i >= 0; i--)	cout << ans[i];
	cout << endl;
	return;

bool st1_isbigger(string st1, string st2)
	if(s1.length() > s2.length())	return true;
	else if(s1.length() < s2.length())	return false;
	else
		if(s1 > s2) return true;
		else if (s1 < s2) return false;
		else	return true;
	

int main()
	char ch;
	printf("Please choose to plus or substract:\\n");
	printf("#####Enter a to plus ### Enter b to subtract#####\\n");
	cin >> ch;
	if(ch == 'a')
		memset(ans, 0, sizeof(ans));
		memset(a, 0, sizeof(a));
		memset(b, 0, sizeof(b));
		printf("Please enter two numbers and seperate them with a space:\\n");
		cin >> s1 >> s2;
		reverse(s1.begin(), s1.end());
		reverse(s2.begin(), s2.end());
		for(int i = 0; i < s1.length(); i++)	a[i] = s1[i] - '0';
		for(int i = 0; i < s2.length(); i++)	b[i] = s2[i] - '0';
		printf("Their sum is:\\n"); 
		HighPlus();
	
	else if(ch == 'b')
		memset(ans, 0, sizeof(ans));
		memset(a, 0, sizeof(a));
		memset(b, 0, sizeof(b));
		printf("Please enter two numbers and seperate them with a space:\\n");
		cin >> s1 >> s2;
		if(st1_isbigger(s1, s2))
			reverse(s1.begin(), s1.end());
			reverse(s2.begin(), s2.end());
			for(int i = 0; i < s1.length(); i++)	a[i] = s1[i] - '0';
			for(int i = 0; i < s2.length(); i++)	b[i] = s2[i] - '0';
			judge = true;
		else
			reverse(s1.begin(), s1.end());
			reverse(s2.begin(), s2.end());
			for(int i = 0; i < s2.length(); i++)	a[i] = s2[i] - '0';
			for(int i = 0; i < s1.length(); i++)	b[i] = s1[i] - '0';
			judge = false;
		
		printf("The difference between two numbers is:\\n"); 
		if(!judge)	cout << "-";
		HighSub();
	
	return 0;
 

测试:

./test
a
122135151213 1325135121351

1447270272564

./test
b
21313532323 1231521653512351125613

-1231521653491037593290

以上是关于关于C/C++程序在鲲鹏平台openEuler上编译以及运行的主要内容,如果未能解决你的问题,请参考以下文章

鲲鹏920架构openEuler修改默认系统UTC时间

鲲鹏 920 openEuler 操作系统 部署安装 Anaconda3 和 Jupyter Notebook

华为泰山鲲鹏920(CentOS7/openEuler)支持MySQL5.6

openEuler 21.03 特性解读 | 毕昇 JDK8 支持鲲鹏硬件加解密特性详解和使用介绍

高性能处理器架构与编程实验(基础实验1:构建实验环境)

密码引擎的设计与实现