㈠ c语言可以做数组除法吗
当然可以,
/ 表示除法
% 表示求余数
㈡ 用c语言数组计算两个数的四则运算,考虑两个数非常大的情况
假设A
100位、B
100位分别存到数组m、n中。(位数不一样时,小的数补零填充)
1、加法时,从低位按位相加、进位
2、减法时,重高位开始比较大小,然后从低位开始按位减、借位
3、乘法时,低位按位乘、进位
4、除法时,用模运算求整数商,小数部分折半减,逐步精确
附:直接点的方法也可以先转化成二进制、然后用补码运算
㈢ C语言中两个数组相除的问题
一、因为a和b数组是整数,整数相除,c是默认取整的,而*1.0之后就将数字变成浮点型的了,可以得出正确答案
二、c[1]=(1.0*b[1])/a[1]或者(float)(b[1])/a[1],强制类型转换。
三、乘以1.0是将整数转换为浮点型数(小数),1是整数,乘以整数还是整数,所以不起作用。
㈣ c语言中的除法怎么算
在计算C语言算术表达式的结果时,特别是除法,需要注意计算过程中运算对象的数据类型转换。
相同数据类型的数据、变量进行运算,结果保持原有数据类型。
当不同数据类型的数据、变量进行运算时,结果为精度高的数据类型。
例如:1/2 的结果为0
1.0/2 的结果为 0.5
㈤ 用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语言中的除法怎么算
在计算C语言算术表达式的结果时,特别是除法,需要注意计算过程中运算对象的数据类型转换。
相同数据类型的数据、变量进行运算,结果保持原有数据类型。
当不同数据类型的数据、变量进行运算时,结果为精度高的数据类型。
例如:1/2 的结果为0
1.0/2 的结果为 0.5
㈦ C语言数组里的元素怎么加减乘除
你的数组越界了,把小于等于3改成小于3
㈧ 用C语言数组实行大数的除法: 加减乘法,写出来了,除法上面应该怎么写,请教下高手。
你这个题目太高深,看不懂。
比如:a[]={625}; a[0]=5, a[1]=2, a[2]=6;
b[]={25}; b[0]=5, b[1]=2;
//这里的“=”是赋值,还是想告诉我们这个变量的值是什么?
//不过不管是赋值,还是变量的值。这个变量的类型是什么?
//你这里的a[] 你是想定义数组还是想要一个变量啊。是不是直接写一个变量会更好啊。后面的a[0], a[1], a[2] 另外做一个变量