当前位置:首页 » 编程语言 » c语言50位数加减
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言50位数加减

发布时间: 2023-07-18 13:47:24

c语言编程 100以内整数加减法

srand(time(0));
inta[20];
for(inti=0;i<20;i++)
{
a[i]=rand()%100;
}
for(inti=10;i<20;i+=2)
{
if(a[i]<a[i+1])
{
intt=a[i];a[i]=a[i+1];a[i+1]=t;
}
}
intscore=0;
for(inti=0;i<20;i+=2)
{
charc=i<10?'+':'-';
printf("%d%c%d=几? ",a[i],c,a[i+1]);
intx;
scanf("%d",&x);
if((i<10&x=a[i]+a[i+1])|(i>=10&x=a[i]-a[i+1]))
{
score+=10;
cout<"回答正确"<<endl;
}
elsecout<"回答错误"<<endl;
}
switch(score)
{
case0:
case10:
case20:
case30:
case40:
case50:cout<<"要加油哦"<<endl;break;
case60:
case70:
case80:cout<<"真不错哦"<<endl;break;
case90:cout<<"你真棒"<<endl;break;
case100:cout<<"酷毙了"<<endl;break;
default:;
}

㈡ 怎样用C语言做超大整数的加减运算

用高精度算法来实现,即用数组或指针来储存数字,例如A〔20〕来储存a ,用B〔20〕来储存b,这样a 和b就可以是很大的数,再用一个C〔21〕来储存结果,为什么C要21呢,你知道,加法是要近位的,呵呵。这里给出相加的伪代码,d =0/*用来存储近位*/,for i=0到19{c=A〔i〕+B〔i〕+d ,d =c/10,c=c%10,C〔i〕=c}if d 不等于0 C〔i+1〕=d ,再逆的输出C就可以了!编程要学会思考,现在你可以试试编下高精度乘法,例如可以输出100的阶乘!

㈢ 用c语言 数组 做大数 加减乘除 急

参考代码:

#include<stdio.h>
#defineMAXINT1000
intcompare(inta[],intb[]);
intbigplus(inta[],intb[],intc[]);
intbigsub(inta[],intb[],intc[]);
intbigmult(inta[],unsignedintb,intc[]);
intbigmult2(inta[],intb[],intc[]);
intbigdiv(inta[],unsignedintb,intc[],int*d);
intbigdiv2(inta[],intb[],intc[],intd[]);
intmain(intargc,char*argv[])
{
inta[MAXINT]={10,5,4,6,5,4,3,2,1,1,1};//被乘数或被除数
intb[MAXINT]={7,7,6,5,4,3,2,1};//乘数或除数
intc[MAXINT],d[MAXINT];//c[]存放商,d[]存放余数
intdiv=1234;//小乘数或小除数
intk=0;
int*res=&k;//小余数整数指针
bigplus(a,b,c);
bigsub(a,b,c);
bigmult2(a,b,c);
bigdiv2(a,b,c,d);
getchar();
return0;
}

intbigplus(inta[],intb[],intc[])//大整数加法
{
inti,len;
len=(a[0]>b[0]?a[0]:b[0]);//a[0]b[0]保存数组长度,len为较长的一个
for(i=0;i<MAXINT;i++)//将数组清0
c[i]=0;
for(i=1;i<=len;i++)//计算每一位的值
{
c[i]+=(a[i]+b[i]);
if(c[i]>=10)
{
c[i]-=10;//大于10的取个位
c[i+1]++;//高位加1
}
}
if(c[i+1]>0)len++;
c[0]=len;//c[0]保存结果数组实际长度
printf("Bigintegersadd:";
for(i=len;i>=1;i--)
printf("%d",c[i]);//打印结果
printf(" ";
return0;
}
intbigsub(inta[],intb[],intc[])//大整数减法
{
inti,len;
len=(a[0]>b[0]?a[0]:b[0]);//a[0]保存数字长度,len为较长的一个
for(i=0;i<MAXINT;i++)//将数组清0
c[i]=0;
if(compare(a,b)==0)//比较a,b大小
{
printf("Result:0";
return0;
}
elseif(compare(a,b)>0)
for(i=1;i<=len;i++)//计算每一位的值
{
c[i]+=(a[i]-b[i]);
if(c[i]<0)
{
c[i]+=10;//小于0的原位加10
c[i+1]--;//高位减1
}
}
else
for(i=1;i<=len;i++)//计算每一位的值
{
c[i]+=(b[i]-a[i]);
if(c[i]<0)
{
c[i]+=10;//小于0原位加10
c[i+1]--;//高位减1
}
}
while(len>1&&c[len]==0)//去掉高位的0
len--;
c[0]=len;
printf("Bigintegerssub=";
if(a[0]<b[0])printf("-";
for(i=len;i>=1;i--)//打印结果
printf("%d",c[i]);
printf(" ";
return0;
}

intbigmult2(inta[],intb[],intc[])//高精度乘以高精度
{
inti,j,len;
for(i=0;i<MAXINT;i++)//数组清0
c[i]=0;
for(i=1;i<=a[0];i++)//被乘数循环
for(j=1;j<=b[0];j++)//乘数循环
{
c[i+j-1]+=a[i]*b[j];//将每一位计算累加
c[i+j]+=c[i+j-1]/10;//将每一次结果累加到高一位
c[i+j-1]%=10;//计算每一次的个位
}
len=a[0]+b[0];//取最大长度
while(len>1&&c[len]==0)//去掉高位0
len--;
c[0]=len;
printf("Bigintegersmulti:";
for(i=len;i>=1;i--)//打印结果
printf("%d",c[i]);
printf(" ";
}

intbigdiv2(inta[],intb[],intc[],intd[])//高精度除以高精度
{
inti,j,len;
if(compare(a,b)<0)//被除数较小直接打印结果
{
printf("Result:0";
printf("Arithmeticcompliment:";
for(i=a[0];i>=1;i--)printf("%d",a[i]);
printf(" ";
return-1;
}
for(i=0;i<MAXINT;i++)//商和余数清0
{
c[i]=0;
d[i]=0;
}
len=a[0];d[0]=0;
for(i=len;i>=1;i--)//逐位相除
{
for(j=d[0];j>=1;j--)
d[j+1]=d[j];
d[1]=a[i];//高位*10+各位
d[0]++;//数组d长度增1
while(compare(d,b)>=0)//比较d,b大小
{
for(j=1;j<=d[0];j++)//做减法d-b
{
d[j]-=b[j];
if(d[j]<0)
{
d[j]+=10;
d[j+1]--;
}
}
while(j>0&&d[j]==0)//去掉高位0
j--;
d[0]=j;
c[i]++;//商所在位值加1
}
}
j=b[0];
while(c[j]==0&&j>0)j--;//求商数组c长度
c[0]=j;
printf("Bigintegersdivresult:";
for(i=c[0];i>=1;i--)//打印商
printf("%d",c[i]);
printf(" Arithmeticcompliment:";//打印余数
for(i=d[0];i>=1;i--)
printf("%d",d[i]);
printf(" ");
}

㈣ C语言计算两个50位数之和

#include <stdio.h>
void main()
{
int a[50],b[50],sum[50]; //数据无法接收50位的数(记得)
int i,n=0; //定义数组a(第一个),b(第一个)
char ch; //sum(结果)和变量i(循环工具)
for(i=0;i<50;i++) //n(进位)

{
getchar(ch); //接收数据放进a数组
a[i] = ch;
}
for(i=0;i<50;i++)
{
getchar(ch); //接收数据放进a数组
b[i] = ch;
}
for(i=49;i>0;i--)
{
sum[i] = (int)(a[i]+b[i]) + n; //相加,并加进位数
if(sum[i]>10)
{
sum[i]%=10; //如果结果大于10就进位
n=1; //并进位数为1
}
else
{
n=0; //否则为0
}
}
for(i=0;i<50;i++)
{
printf("%d",sum[i]); //输出结果
}

}
//还未测试过,只是写个思路,按这思路应该可以做倒

㈤ C语言 大整数加减法

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char a[1000],b[1000];
int c[1001];
int x,y,i,j,k;
int blen=0;
int alen=0;
char flag = '+';//用于减法标记负数
int Subtract(char *a, char *b, int len) { //为了避免代码重复,将共同的计算抽出写成函数
int i;
for (i=len-1; i>=0; i--) {
if (a[i] < b[i]) {
c[i] = a[i] + 10 - b[i];
b[i-1]++;
} else {
c[i] = a[i] - b[i];
}
}
return 0;
}

int Subtraction(){
for (i=0;i<100;i++)
{
scanf("%c",&b[i]);
if(b[i]=='\n')
break;
blen++;
}
printf("=");
if(alen>blen)
{
x=(alen-blen);
for(i=blen-1;i>=0;i--)
{
alen--;
b[alen]=b[i];
}
for (i=0;i<x;i++)
b[i]='0';
alen=blen+x;
blen=alen;
} else if (blen > alen) {
x=(blen-alen);
for(i=alen-1;i>=0;i--)
{
blen--;
a[blen]=a[i];
}
for (i=0;i<x;i++)
a[i]='0';
blen=alen+x;
alen=blen;
}
for (i=alen-1;i>=0;i--) {
a[i]=a[i]-'0';
b[i]=b[i]-'0';
}
if (strcmp(a, b) > 0) {
Subtract(a, b, alen);
}else {
flag = '-';
Subtract(b, a, alen);
}
return 0;
}

int Addition(){
for (i=0;i<100;i++)
{ scanf("%c",&b[i]);
if(b[i]=='\n')
break;
blen++;
}
printf("=");
if(alen>blen)
{
x=(alen-blen);
for(i=blen-1;i>=0;i--)
{
alen--;
b[alen]=b[i];
}
for (i=0;i<x;i++)
b[i]='0';
alen=blen+x;
} else if (blen > alen) {
x=(blen-alen);
for(i=alen-1;i>=0;i--)
{
blen--;
a[blen]=a[i];
}
for (i=0;i<x;i++)
a[i]='0';
blen=alen+x;
alen=blen;
}

for (i=alen-1;i>=0;i--) {
a[i]=a[i]-'0';
b[i]=b[i]-'0';
if(c[i+1]+a[i]+b[i]>=10)
{
c[i]=(c[i+1]+a[i]+b[i])/10;
c[i+1] = (c[i+1]+a[i]+b[i])%10;

}
else
{
c[i+1]+=(a[i]+b[i]);
}
}

return 0;

}

int main()
{
for (i=0;i<100;i++)
a[i]=0;
for (i=0;i<100;i++)
b[i]=0;
for (i=0;i<101;i++)
c[i]=0;

for (i=0;i<100;i++)
{
scanf("%c",&a[i]);
if(a[i]=='+')
{
Addition();
goto output1;
}
if(a[i]=='-')
{
Subtraction();
goto output2;
}
alen++;
}
output1:
{
for (i=0;i<=alen;i++)
printf("%d",c[i]);
return 0;
}
output2:
{
printf("%c", flag);
for (i=0;i<alen;i++)
printf("%d",c[i]);
return 0;
}
}

代码运行结果:
123456789-12345
=+123444444

Terminated with return code 0
Press any key to continue ...

123456+111111
=0234567

Terminated with return code 0
Press any key to continue ...

1000000-1
=+0999999

Terminated with return code 0
Press any key to continue ...

1-1000000
=-0999999

Terminated with return code 0
Press any key to continue ...

//对你的代码作了! 希望有助于你的学习。

㈥ c语言实现简单的加减乘除

1、打开C-Free5.0新建一个空白页面,然后将C语言的基础格式写完,注意格式缩进。如下图所示。