给定 2 个正整数 a, b,a 和 b 最多可能有 40 位,求出 a + b 的和(C语言实现)
最近参加一个编程比赛,里面有个一些题库,这个题目就是其中之一.
当然,如果想锻炼自己的编程水平,可以去lintcode或者其他的网站上去刷题.
自信满满的我看到花了一个多小时才写出来,实在是汗颜.
本来实现使用string,毕竟是使用c++编程.没想好怎们写,就没有采用.
题目描述:
给定 2 个正整数 a, b,a 和 b 最多可能有 40 位,求出 a + b 的和。
输入描述:
两个正整数 a, b,a 和 b 最多可能有 40 位。一行表示一个数。
输出描述:
a + b 的和。
样例输入:
11111111111111111111111111111111111111111111111111111111111111111112222222222222222222222222222222222222222222222222222222222222222222
样例输出:
3333333333333333333333333333333333333333333333333333333333333333333
实现的原理很简单,就是对齐.把字符串的位与位对齐.
把对齐的部分相加,然后在处理没有对齐的部分
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
char * addChar(char *add1,char *add2,char *sum,int * carry);
int main()
{ char num[40] = {} ; char num2[40] = {} ;char sum[40] = {} ; cin >> num ;cin >> num2 ;//数字进行对齐if(strlen(num) == strlen(num2)){int carry = 0;addChar(num,num2,num,&carry);cout << num;return 0;}if(strlen(num) > strlen(num2)) {//num大 int sub = strlen(num)-strlen(num2);int carry = 0;char *p = num + sub;addChar(num2,p,p,&carry);cout << num << endl;}else{int sub = strlen(num2)-strlen(num);int carry = 0;char *p = num2 + sub;addChar(num,p,p,&carry);cout << num2 << endl;}
}
//相加
char * addChar(char *add1,char *add2,char *sum,int * carry)
{if(strlen(add1) == strlen(add2)){for(int i = strlen(add1) - 1;i>=0;i--){//48-57sum[i] = add1[i] + add2[i] - 48 + *carry;if(sum[i] > 57){sum[i] -= 10;*carry = 1;}else{*carry = 0;}}return sum;} else{cout << "erro ,无法相加"<<endl;return NULL; } }
转载于:https://www.cnblogs.com/qiny1012/p/9385443.html
给定 2 个正整数 a, b,a 和 b 最多可能有 40 位,求出 a + b 的和(C语言实现)相关推荐
- c语言输入一批正整数 求其中的偶数和,编程,输入一批整数,先求出其中的偶数和及奇数和,然后输出偶数和与奇数和的差...
设计一个程序,要求输入三个整数,能求出其中最大的数并输出 #includeintmain{inti;inta1,a2,a3;printf("输入三个数:\n");scanf(&qu ...
- 拆数,给定两个正整数m,n(m = n),将m拆成n个数相加...(游戏)
1. 问题 (网上看到的题目) 昨天去面试人家出了这样一道题,觉得挺简单的,但就是编不出来,只好麻烦各位高手了. 给定两个正整数m,n(m >= n),将m拆成n个数相加:m =a(1)+a(2 ...
- 枚举求解:试把一个正整数n拆分为若干个(不少于2个)连续正整数之和。例如:n=15,有3种拆分:15=1+2+3+4+5,15=4+5+6,15=7+8。 对于给定的正整数n,求出所有符合这种拆分要求
试把一个正整数n拆分为若干个(不少于2个)连续正整数之和.例如:n=15,有3种拆分:15=1+2+3+4+5,15=4+5+6,15=7+8. 对于给定的正整数n,求出所有符合这种拆分要求的连续正整 ...
- 用递归算法,把任一给定的十进制正整数转换成八进制数输出。
递归算法/函数 [递归]十进制转换成八进制 时间限制: 1000 ms 空间限制: 262144 KB 题目描述 用递归算法,把任一给定的十进制正整数转换成八进制数输出. 输入 输入一个正整数,表 ...
- 【例4-3】利用数组,给定N个正整数数据(N<=100),查找最大值和最小值并输出。【输入输出样例】Input length (N<=100):(此处括号、冒号为英文符号,后面无空格;leng
[例4-3]利用数组,给定N个正整数数据(N<=100),查找最大值和最小值并输出. [输入输出样例] Input length (N<=100):(此处括号.冒号为英文符号,后面无空格: ...
- 7-99 整数的分类处理 (7 分)给定 N 个正整数,要求你从中得到下列三种计算结果:A1 = 能被 3 整除的最大整数A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数A3
7-99 整数的分类处理 (7 分) 给定 N 个正整数,要求你从中得到下列三种计算结果: A1 = 能被 3 整除的最大整数 A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数 A3 = ...
- c++ 【1101】给定正整数a,b,ca,b,c。求不定方程 ax+by=cax+by=c 关于未知数xx和yy的所有非负整数解组数。
[题目描述] 给定正整数a,b,ca,b,c.求不定方程 ax+by=cax+by=c 关于未知数xx和yy的所有非负整数解组数. [输入] 一行,包含三个正整数a,b,ca,b,c,两个整数之间用单 ...
- python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...
导航:网站首页 > C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值.,C语言 编写一个程序,输入一个正整数,求出它是几位数. C语言编写程序:输入一个正整数x和一个正整数n,求下 ...
- 给一个不多于5位的正整数,要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字,例如原数为123,应输出321
给一个不多于5位的正整数,要求: ①求出它是几位数②分别输出每一位数③按逆序输出各位数字,例如原数为123,应输出321 int main() {int n;int a,b,c,d,e;//个,十,百 ...
最新文章
- 对计算机上的浏览器的介绍,Edge浏览器的前世今生 史上最全Edge浏览器介绍
- python第三方库安装-python第三方库安装在哪
- Linux 0.11 实验环境搭建
- MySQL学习笔记(十二)—— MySQL的命令集(2)
- socket.io c++库编译不成功的注意事项
- 19秋学期计算机网络基础在线作业,南开19秋学期(1709、1803、1809、1903、1909)《计算机网络基础》在线作业资料答案3...
- 通过一个例子来理解二维码纠错机制
- IDEA中 @override报错的解决方法
- CLD: 通过挖掘实例与聚类间关系进行无监督特征学习
- CentOS 7.0yum安装MySQL
- docker-compose搭建EFK,继上篇使用filebeat+es对日志文件的过滤
- jsp超市仓库管理系统myeclipse开发sqlserver数据库
- 乐优商城项目视频及源码
- 深度解析网易严选和京东的会员体系,建议收藏
- 未来学院计算机,1968年的计算机化未来学校
- [转]什么?你还不会写JQuery 插件
- 暑期JAVA学习(41.1)TCP通信——多发多收消息
- android微信分享icon不能显示,微信分享 icon图片不显示问题
- 1139:整理药名(C C++)
- java计算机毕业设计高校体育器材及场地管理MyBatis+系统+LW文档+源码+调试部署