wordpress里网站名称在哪里修改,wordpress主题设置,直通车推广计划方案,网站建设那些公司比较好点击 C 语言编程核心突破 快速C语言入门 用C语言实现一个大整数加法 前言一、思路和代码设计数字对齐:字符对齐: 二、代码总结 前言
要解决问题: 实现大整数加法
想到的思路: 用字符代替数字, 逐个计算, 过10进位.
其它的补充: 同样思路可以解决减法, 乘法, 但除法… 点击 C 语言编程核心突破 快速C语言入门 用C语言实现一个大整数加法 前言一、思路和代码设计数字对齐:字符对齐: 二、代码总结 前言
要解决问题: 实现大整数加法
想到的思路: 用字符代替数字, 逐个计算, 过10进位.
其它的补充: 同样思路可以解决减法, 乘法, 但除法没有想到如何解决. 一、思路和代码设计
C语言的整型都是有位数限制的, 用字符代替整型进行计算, 然后输出可能是比较直接的解决思路.
加法有两个问题要解决, 对齐以及进位.
加法算式是右对齐, 字符串则是左对齐, 比较可行的方案是字符串计算前倒置, 算出结果后再倒置回来.
数字对齐: 字符对齐: 进位则要将相应位置的结果除以十, 余数留下, 商作为一个修正, 和向后移动一位字符的位置的数字计算结果相加.
二、代码
#include stdio.h
#include string.h#define MAX_LEN 1024char lhs[MAX_LEN];
char rhs[MAX_LEN];
char result[MAX_LEN];int reverse(char *str);
void add(char *lhs, char *rhs, char *result);int main()
{scanf(%s %s, lhs, rhs);add(lhs, rhs, result);printf(%s\n, result);return 0;
}int reverse(char *str)
{const int len (int)strlen(str);char temp;for (int i 0; i ! len / 2; i){temp str[i];str[i] str[len - i - 1];str[len - i - 1] temp;}return len;
}void add(char *lhs, char *rhs, char *result)
{int lhsLen reverse(lhs);int rhsLen reverse(rhs);int carry 0;const int ten 10;for (int i 0, j 0, sum; i lhsLen || j rhsLen; i, j){sum (i lhsLen ? lhs[i] - 0 : 0) (j rhsLen ? rhs[j] - 0 : 0) carry;result[i] (char)(sum % ten 0);carry sum / ten;}int maxLen lhsLen rhsLen ? lhsLen : rhsLen;if (carry 0){result[maxLen] (char)(carry 0);}result[maxLen] \0;reverse(result);
}总结
用C语言实现大整数加法, 就是将数学的基本运算翻译为程序, 可能实现的效率不一定很高, 相比较整型原生的计算, 但作为一个学习材料还是可以的. 点击 C 语言编程核心突破 快速C语言入门