c语言求三个整数的和大整数和,存在一个问题是55+55=10(最大位进位不),其他没问题,大神看一下,怎么改呢。

用c语言解决大整数减法有关问题 - C语言当前位置:& &&&用c语言解决大整数减法有关问题用c语言解决大整数减法有关问题&&网友分享于:&&浏览:12次用c语言解决大整数减法问题用数组存放整数,实现减法,感觉很复杂,木有思路。。。哪位大神会?可否贴一下代码。。------解决方案--------------------#include&&iostream&
#include&&string&
using&namespace&
inline&int&compare(string&str1,string&str2)&{//相等返回0,大于返回1,小于返回-1
&&&&&&&&&if&(str1.size()&str2.size())&return&1;&//长度长的整数大于长度小的整数
&&&&else&if&(str1.size()&str2.size())&return&-1;
&&&&else&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&return&pare(str2);&//若长度相等,则头到尾按位比较
string&SUB_INT(string&str1,string&str2);
string&ADD_INT(string&str1,string&str2)&{//高精度加法
&&&&int&sign=1;&//sign&为符号位
&&&&string&
&&&&if&(str1[0]=='-')&{
&&&&&&&&if&(str2[0]=='-')&{
&&&&&&&&&&&&sign=-1;
&&&&&&&&&&&&str=ADD_INT(str1.erase(0,1),str2.erase(0,1));
&&&&&&&&}&else&{
&&&&&&&&&&&&str=SUB_INT(str2,str1.erase(0,1));
&&&&}&else&{
&&&&&&&&if&(str2[0]=='-')&{
&&&&&&&&&&&&str=SUB_INT(str1,str2.erase(0,1));
&&&&&&&&}&else&{&//把两个整数对齐,短整数前面加0补齐
&&&&&&&&&&&&string::size_type&L1,L2;
&&&&&&&&&&&&int&i;
&&&&&&&&&&&&L1=str1.size();
&&&&&&&&&&&&L2=str2.size();
&&&&&&&&&&&&if&(L1&L2)&{
&&&&&&&&&&&&&&&&for&(i=1;i&=L2-L1;i++)&str1="0"+str1;
&&&&&&&&&&&&}&else&{
&&&&&&&&&&&&&&&&for&(i=1;i&=L1-L2;i++)&str2="0"+str2;
&&&&&&&&&&&&}
&&&&&&&&&&&&int&int1=0,int2=0;&//int2&记录进位
&&&&&&&&&&&&for&(i=str1.size()-1;i&=0;i--)&{
&&&&&&&&&&&&&&&&int1=(int(str1[i])-'0'+int(str2[i])-'0'+int2)%10;
&&&&&&&&&&&&&&&&int2=(int(str1[i])-'0'+int(str2[i])-'0'+int2)/10;
&&&&&&&&&&&&&&&&str=char(int1+'0')+
&&&&&&&&&&&&}
&&&&&&&&&&&&if&(int2!=0)&str=char(int2+'0')+
&&&&//运算后处理符号位
&&&&if&((sign==-1)&&(str[0]!='0'))&str="-"+
&&&&return&
string&SUB_INT(string&str1,string&str2)&{//高精度减法
&&&&int&sign=1;&//sign&为符号位
&&&&string&
&&&&int&i,j;
&&&&if&(str2[0]=='-')&{
&&&&&&&&str=ADD_INT(str1,str2.erase(0,1));
&&&&}&else&{
&&&&&&&&int&res=compare(str1,str2);
&&&&&&&&if&(res==0)&return&"0";
&&&&&&&&if&(res&0)&{
&&&&&&&&&&&&sign=-1;
&&&&&&&&&&&&string&temp&=str1;
&&&&&&&&&&&&str1=str2;
&&&&&&&&&&&&str2=
&&&&&&&&string::size_type&
&&&&&&&&tempint=str1.size()-str2.size();
&&&&&&&&for&(i=str2.size()-1;i&=0;i--)&{
&&&&&&&&&&&&if&(str1[i+tempint]&str2[i])&{
&&&&&&&&&&&&&&&&j=1;
&&&&&&&&&&&&&&&&while&(1)&{//zhao4zhong1添加
&&&&&&&&&&&&&&&&&&&&if&(str1[i+tempint-j]=='0')&{
&&&&&&&&&&&&&&&&&&&&&&&&str1[i+tempint-j]='9'; 共&3&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有C语言的关于超长数字每一位数字之和问题(要求具体看题目)_百度知道
C语言的关于超长数字每一位数字之和问题(要求具体看题目)
在遥远的艾泽拉斯大陆上,有一个十分崇拜数字的种族。
他们认为万物都是由数字组成的,而且一切的数字最后都能变成一个单独的数码。
比如数字S(+9+0=19,S(19)=10,S(10)=1.
(注意:这里意思是输入1990,输出直接是1,第一次得到的是19...
我有更好的答案
i){& int&m,n;& if(i& else {&&&&&&&&
return&(i);&&&& }}& printf(&&&//因为是读入的是字符;9) {&10)&&&&&&&&
return&n;&&&& else&&&&nbsp,并且自己写了个函数;&nbsp.h&int&0;main(){&&&& int&num,s=0,i;&//这里要初始化为0 char&nbsp,字符串还有结束符& }&n;
return&fac(int&n);&i&strlen(a);i++)
s=s+a[i]-'0';&+&sum(i/10);&&&&&&&&
return&fac(n);
n/=10;0; scanf(&%s&!=&0){
cur_sum&&n){&&&& if(n&+=&nbsp.h&&&&&#include&&nbsp//主要是s没有初始化//另外字符转数字错误//在您的code上做了修改;%d\n&&&&nbsp.h&#include&&&&cur_sum&=&int&sum(int&nbsp,所以这里转换为相应的int值,可以这么做 num=sum(s); system(&&int&fac(int&nbsp,感觉更简洁些,可以参考 while(n&&&10){
int&&&&a[1000002];//最好多一点儿;&//自己写了个函数;&}int&&&&=&cur_ } return&sum(n);}int&tar_func(int&n){&nbsp,a); for(i=0,以供参考#include&&pause&); return&,num)
采纳率:75%
来自团队:
0对应48。比如输入1990,第一次转换时的每一次加操作都要-48来吧ascii码换成真正的数值大小所以改两句话,都在main函数里:s要赋初值毕竟你后面有jia操作,s=0:int num,i注意你定义的整数是字符数组,所以接受字符串就不再是整数而是对应的ascii码值了,1是49,以此类推
为您推荐:
其他类似问题
c语言的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。【问题描述】输入一个正整数n(1&n&=10),再输入n个整数,将它们从大到小排序后输出_百度知道
【问题描述】输入一个正整数n(1&n&=10),再输入n个整数,将它们从大到小排序后输出
【问题描述】输入一个正整数n(1&n&=10),再输入n个整数,将它们从大到小排序后输出
【输入形式】
【输出形式】
【样例输入】4
【样例输出】7 6 5 1
【样例说明】
【评分标准】
这是我编的代码,在visual 6.0下编译的,出现很...
我有更好的答案
大体看了一下 没有什么问题啊?提示什么错误?i重复定义吗?
redefine?还是什么?将错误贴出来。
&#include&stdio.h&&main()&&{&&int&n=0;&&int&a[10]={0};&&int&i,j;&&&///在这里声明吧&可能是这个编译器不支持在for中进行声明&&&&scanf(&%d&,&n);&&for(i=0;i&n;i++){&&sacnf(&%d&,&a[i]);&&}&&&for(i=0;i&n-1;i++){&&&for(j=0;j&n-1-i;j++){&&&if(a[j]&a[j+1]){&&&int&temp=a[j];&&&a[j]=a[j+1];&&&a[j+1]=&&&}&&}&&&&&}&&&for(i=0;i&n;i++){&&&printf(&%d&,a[i]);&&}&}
你有编译过么
我手边没有编译器
还有错是吗??又报了什么错误!
你怎么想到的
只是看到 错误都是出现在for的哪一行 才想起来的
采纳率:59%
为您推荐:
其他类似问题
正整数的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C语言编程 输入一个整数,从高位开始逐位分割并输出它的各位数字 没看懂过程 求大神在重要部分加点注释_百度知道
C语言编程 输入一个整数,从高位开始逐位分割并输出它的各位数字 没看懂过程 求大神在重要部分加点注释
#include&stdio.h&
int main(void)
int b,t,x,c;
printf(&Input an integer: &);
scanf(&%d&,&x);
while(x!=0)
while(t!=0)
...
我有更好的答案
scanf("%d",&//不断地令t向右“退”一位
}//这个循环可令t从个位到最高位的数字逐个输出
if(x&0)//当x为负数
x=-x,while退出
}//while退出是t的值为543210
//printf("%d\n",则说明刚刚开始;x);
if(x&=0)//当x为正数时,假设是12345
t=x%10;//取出x的个位的数5,赋给t,此时t为5。对10取余取出个位的数,下面还有很多次用到
while(x,乘以10再加上b,就变成了54!=0)
x=x/10;//整数除法;//不断地取出t的个位;//令t向右“退”一位
while(t!=0)
printf("%d ",以分隔各数字
printf("%d",作用是令x向右“退”一位。此时x的值为1234: ")。此技术下面也有多次用到
b=x%10!=0)
b=x%10;//把x的个位赋给b,b为4
t=t*10+b;//t本来存放的是5。然后while一直如此循环当x被“取完”时,则要加空格,t);//你可以把这行的注释去掉,看看t是多少
t=t/10,t%10),t%10),并输出
t=t/10;//先把x转换为它的相反数,然后下面的过程和正数的几乎一模一样
while(t!=0)
c++;//c记录当前的位数
printf("- ");//如果c小于等于1;
while(x,要先输出一个负号
else printf(" ");//如果c大于1;
return 0#include&stdio.h&int main(void){
int b,t,x,c;
printf("Input an integer。例如911/10的结果是91,把个位“去掉了”
采纳率:57%
引用德克and德华的回答:#include&stdio.h&int main(void){
int b,t,x,c;
printf(&Input an integer: &);
scanf(&%d&,&x);
if(x&=0)//当x为正数时,假设是12345
t=x%10;//取出x的个位的数5,赋给t,此时t为5。对10取余取出个位的数,下面还有很多次用到
while(x!=0)
x=x/10;//整数除法,作用是令x向右“退”一位。此时x的值为1234。例如911/10的结果是91,把个位“去掉了”。此技术下面也有多次用到
b=x%10;//把x的个位赋给b,b为4
t=t*10+b;//t本来存放的是5,乘以10再加上b,就变成了54。然后while一直如此循环当x被“取完”时,while退出
}//while退出是t的值为543210
//printf(&%d\n&,t);//你可以把这行的注释去掉,看看t是多少
t=t/10;//令t向右“退”一位
while(t!=0)
printf(&%d &,t%10);//不断地取出t的个位,并输出
t=t/10;//不断地令t向右“退”一位
}//这个循环可令t从个位到最高位的数字逐个输出
if(x&0)//当x为负数
x=-x;//先把x转换为它的相反数,然后下面的过程和正数的几乎一模一样
while(x!=0)
while(t!=0)
c++;//c记录当前的位数
printf(&- &);//如果c小于等于1,则说明刚刚开始,要先输出一个负号
else printf(& &);//如果c大于1,则要加空格,以分隔各数字
printf(&%d&,t%10);
return 0;}
10;b=x%10;while(x!=0){x=x/while(a;a=a*10+b;}}a=a/10!=0){t=a%10;printf(&%3d&;int main(void){int x,a,b,t;scanf(&%d&#include&stdio.h&0){a=x%10;while(x&0)x=-x,&x);if(x&gt,t);a=a/10
1条折叠回答
为您推荐:
其他类似问题
c语言编程的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 c语言求三个整数的和 的文章

 

随机推荐