㈠ 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] 另外做一個變數