应用Dev c++设计一个100位以内的长整数加减运算的完整程序,输入输出每四位一组,中间用逗号分隔,加和减分别用不同的函数实现,程序应考虑输入数据的符号
时间: 2024-09-07 08:02:46 浏览: 45
在Dev C++中设计一个长整数加减运算程序,我们需要使用字符串来处理大数运算,因为标准的数据类型(如int、long等)无法存储超过其最大值的整数。以下是一个简单的程序设计思路:
1. 创建两个字符串变量,分别用于存储两个长整数。
2. 创建两个函数,一个用于执行加法,另一个用于执行减法。
3. 由于需要按四位一组输出,我们需要编写一个函数来将结果格式化成指定的格式。
4. 处理输入数据的符号,并在运算前将数据转换为正数进行处理。
以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <string>
#include <algorithm>
// 翻转字符串
std::string reverseStr(std::string str) {
std::reverse(str.begin(), str.end());
return str;
}
// 加法运算
std::string add(std::string num1, std::string num2) {
std::string result;
int carry = 0;
int sum = 0;
// 翻转字符串,便于从最低位开始相加
num1 = reverseStr(num1);
num2 = reverseStr(num2);
// 确保num1是最长的数字
if (num1.length() < num2.length()) {
std::swap(num1, num2);
}
// 计算每一位的和
for (size_t i = 0; i < num1.length(); i++) {
int digit1 = i < num1.length() ? num1[i] - '0' : 0;
int digit2 = i < num2.length() ? num2[i] - '0' : 0;
sum = digit1 + digit2 + carry;
carry = sum / 10;
result.push_back(sum % 10 + '0');
}
// 如果最后还有进位,加上
if (carry > 0) {
result.push_back(carry + '0');
}
// 翻转结果并返回
return reverseStr(result);
}
// 减法运算
std::string subtract(std::string num1, std::string num2) {
std::string result;
int borrow = 0;
int diff = 0;
// 翻转字符串,便于从最低位开始相减
num1 = reverseStr(num1);
num2 = reverseStr(num2);
// 计算每一位的差
for (size_t i = 0; i < num1.length(); i++) {
int digit1 = i < num1.length() ? num1[i] - '0' : 0;
int digit2 = i < num2.length() ? num2[i] - '0' : 0;
diff = digit1 - digit2 - borrow;
if (diff < 0) {
diff += 10;
borrow = 1;
} else {
borrow = 0;
}
result.push_back(diff + '0');
}
// 移除结果前面的0
while (result.length() > 1 && result.back() == '0') {
result.pop_back();
}
// 翻转结果并返回
return reverseStr(result);
}
// 格式化输出
std::string formatOutput(std::string num) {
std::string formatted;
int count = 0;
// 每四位插入一个逗号
for (char digit : num) {
if (count % 4 == 0 && count != 0) {
formatted.push_back(',');
}
formatted.push_back(digit);
count++;
}
return formatted;
}
int main() {
std::string num1, num2;
std::cout << "请输入两个不超过100位的长整数,以及运算符(+或-):";
std::cin >> num1 >> num2 >> num1;
// 根据运算符选择函数执行
if (num1.back() == '+') {
std::string result = add(num1.substr(0, num1.length() - 1), num2);
std::cout << "结果是:" << formatOutput(result) << std::endl;
} else if (num1.back() == '-') {
std::string result = subtract(num1.substr(0, num1.length() - 1), num2);
std::cout << "结果是:" << formatOutput(result) << std::endl;
} else {
std::cout << "运算符错误!" << std::endl;
}
return 0;
}
```
请注意,此代码仅作为一个基本示例,实际编写时还需要考虑异常处理、用户输入验证等问题。此外,由于题目要求输入输出每四位一组,所以格式化函数`formatOutput`可能会根据需要做适当的修改。
阅读全文