㈠ C语言大数问题
你可以这样做,在输入0之前,每次输入的数都进行加法操作。
假设我们使用的是数组a和result这二个数组。
给result赋初值为0,然后每次读入a就做加法操作,加到result里面,知道a为0时,输出result的值,然后再把result的值赋为0即可。
// 加法是高精度里面最简单的
// 然后有一点你的程序最好是把加法做成一个函数来调用,这样如果题目变了的话,加法功能还在,直接复制之后稍加修改主函数的调用就OK了。
㈡ c语言中怎么处理一个特别大的数据的运算
最简单的办法是将大数当作字符串进行处理,也就是将大数用10进制字符数组进行表示,
然后模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。但是这样做效率很低,
因为1024位的大数其10进制数字个数就有数百个,对于任何一种运算,都需要在两个有
数百个元素的数组空间上做多重循环,还需要许多额外的空间存放计算的进位退位标志
及中间结果。其优点是算法符合人们的日常习惯,易于理解。
㈢ C语言程序设计大数加减
找到一个,大数加减运算的,运算结果是正确的,就是格式要变一下,你看看吧
㈣ C语言如何实现大数相加问题,各位高手多多指教!
可以的。
我曾经编写过100的阶乘的程序。在这个程序中,计算结果达到几千位,
这样大的数据很明显是任何数据类型都表示不了的。
不过,你可以把大数用数组来表示,比如1258746这个数,你用数组
a[]={0,0,0,...,0,1,2,5,8,7,4,6}来表示,然后对数组的每一位进行运算。
按照你题目的意思,还应该定义一个大数的加法的函数,
类似
Add(int a[], int b[], int m, int n);
数组a,b是两个表示大数的数组,m,n是数组的大小。注意,要从末尾对齐。
以上是我个人的一些意见,你可以搜索并学习一下我开头提到的那个程序,即关于大数的阶乘,网上应该有很多的资料,对你解题会有帮助的。
请问楼上,实际应用中用的到大数吗?
double类型可以表示21亿大的数据,几乎可以满足绝大多数的实际应用了,更何况是单片机。
这里讨论大数的运算是一种方法、一种思路。
㈤ 用c语言编写程序,求大数加,大数减,大数积,大数除。写四个程序。
既然你乘除都会了,加减就更应该没问题阿。。。
#include<iostream>
usingnamespacestd;
inta[101]={0},b[101]={0};
voidinit(inta[])
{inti;
strings;
cin>>s;
a[0]=s.length();
for(i=1;i<=a[0];i++)
a[i]=s[a[0]-i]-'0';
}
voidprint(inta[])
{
inti;
if(a[0]==0){cout<<0<<endl;return;}
for(i=a[0];i>0;i--)cout<<a[i];
cout<<endl;
return;
}
/*
voidjian(inta[],intb[])//计算a=a-b
{intflag,i;
flag=compare(a,b);//调用比较函数判断大小
if(flag==0){a[0]=0;return;}//相等
if(flag==1)//大于
{for(i=1;i<=a[0];i++)
{if(a[i]<b[i]){a[i+1]--;a[i]+=10;}//若不够减则向上借一位
a[i]=a[i]-b[i];
}
while(a[a[0]]==0)a[0]--;//修正a的位数
return;
}
if(flag==-1)//小于则用a=b-a,返回-1
{cout<<"-";
for(i=1;i<=b[0];i++)
{if(b[i]<a[i]){b[i+1]--;b[i]+=10;}//若不够减则向上借一位
a[i]=b[i]-a[i];
}
a[0]=b[0];
while(a[a[0]]==0)a[0]--;//修正a的位数
return;
}
}
*/
voidjia(inta[],intb[])
{inti,k;
if(a[0]<b[0])a[0]=b[0];
for(i=1;i<=a[0];i++)a[i]+=b[i];
for(i=1;i<=a[0];i++)
{a[i+1]+=a[i]/10;
a[i]%=10;
}
if(a[a[0]+1]>0)a[0]++;
}
intmain()
{
init(a);init(b);
jia(a,b);
print(a);
return0;
}
㈥ c语言编程,怎么处理上千位的大数字啊
先看你的精度要求,如果不要求精确可以用实数类型,如果要求精确,就要用高精度。高精度就是用数组来储存每一位,自己编写加减乘除的函数(模拟人进行一位一位地计算),数组大小根据需要开,也可以动态分配。具体可以查高精度运算的有关资料,网上很多
㈦ C语言问题求解—大数乘法问题
'0'+81>128阿 溢出了
LS对 int不够用
#include<stdio.h>
#include<string.h>
void main()
{
unsigned la,lb,i,j,t,k;
char a[201],b[201],c[40500];
while(1)
{
scanf("%s%s",a,b);
for(k=0;k<40500;k++)
c[k]=0; //初始值 为0 别设为'0'了
//后面输出再加'0'
la=strlen(a);lb=strlen(b);
for(j=lb-1;j>=0;j--)
{
for(i=la-1;i>=0;i--)
{
c[la+lb-i-j-2]+=(a[i]-'0')*(b[j]-'0');
if(c[la+lb-i-j-2]>9) //'9' ->9
{
c[la+lb-i-j-1]+=(c[la+lb-i-j-2])/10; //不需要 -'0'了
c[la+lb-i-j-2]=(c[la+lb-i-j-2])%10; //不需要 -'0'了
}
}
}
for(i=la+lb-i-j-3;c[i]==0;i--); //'0' ->0
for(;i>=0;i--)
printf("%c",c[i]+'0'); //+'0' 输出数字
printf("\n");
printf("结束!\n");
}
}
㈧ 求最大数的简单c语言编程问题
......
#include<stdio.h>
int max(int x,int y)
{int z;
z=(x:y)?(x>y);>>>>>>>>>> z=x>y?x:y;
return(z);
}
main()
{ int a=10,b=20,c;
c=max(a,b);
printf("zui da shu shi:%d",c);
}
这道题是你们老师要求用形式参数写吗?
如果还有什么疑问,请尽快补充。
㈨ 在C语言编程过程中想要使用大数库需要添加什么头文件
建议用SQLITE3,你只要把这个SQLITE3.C这个文件,包含到头文件就可以了,这个文件,你可以在网上找到,如果你的数据库没有超过10个G,那应该是可以用的
㈩ C语言大数处理问题
#include<stdio.h>
typedeflonglongLL;
LLpow(intx){
returnLL(x)*x;
}
intmain(){
LLsum=0,N;
intk=1;
scanf("%I64d",&N);
while(sum<N){
sum+=pow(k++);
}
printf("%d
",k-1);
}
//答题不易
//如果满意,麻烦采纳一下
//如果不满意,可以继续追问