关于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 操作系统 部署安装 Anaconda3 和 Jupyter Notebook
华为泰山鲲鹏920(CentOS7/openEuler)支持MySQL5.6