當前位置:首頁 » 編程語言 » c語言數組能不能除法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數組能不能除法

發布時間: 2022-07-01 14:20:19

c語言可以做數組除法嗎

當然可以,
/ 表示除法
% 表示求余數

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

❸ c語言除法運算

用%這個算符,意思是取余數

比如:

a=2;

b=3;

那麼b%a的結果就是3除以2的余數,結果是1;

參考程序段:

main()

{

int i,n;

printf("input your number: ");

scanf("%d",&n);

for(i=1;i<n;i++)

{

if(n%i) continue;

printf("%d ",i);

}

}

(3)c語言數組能不能除法擴展閱讀:

余數有如下一些重要性質(a,b,c 均為自然數):

(1)余數和除數的差的絕對值要小於除數的絕對值(適用於實數域);

(2)被除數 = 除數 × 商 + 余數;

除數=(被除數 - 余數)÷ 商;

商=(被除數 - 余數)÷除數;

余數=被除數 - 除數 × 商。

❹ 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語言 100位大整數除法 最好用字元串或者數組

#include <stdio.h>
#define MAXINT 1000
int compare(int a[],int b[]);
int bigplus(int a[],int b[],int c[]);
int bigsub(int a[],int b[],int c[]);
int bigmult(int a[],unsigned int b,int c[]);
int bigmult2(int a[],int b[],int c[]);
int bigdiv(int a[],unsigned int b,int c[],int *d);
int bigdiv2(int a[],int b[],int c[],int d[]);
int main(int argc, char *argv[])
{
int a[MAXINT]={10,5,4,6,5,4,3,2,1,1,1}; //被乘數或被除數
int b[MAXINT]={7,7,6,5,4,3,2,1}; //乘數或除數
int c[MAXINT],d[MAXINT]; //c[]存放商,d[]存放余數
int div=1234; //小乘數或小除數
int k=0;
int *res=&k; //小余數整數指針
bigplus(a,b,c);
bigsub(a,b,c);
bigmult(a,div,c);
bigmult2(a,b,c);
bigdiv(a,div,c,res);
bigdiv2(a,b,c,d);
getchar();
return 0;
}
int compare(int a[],int b[]) //比較大整數的大小
{
int i;
if (a[0]>b[0]) return 1; //比較a,b的位數確定返回值
else if (a[0]<b[0]) return -1;
else //位數相等時的比較
{
i=a[0];
while (a[i]==b[i]) //逐位比較
i--;
if (i==0) return 0;
else if (a[i]>b[i]) return 1;
else return -1;
}
}
int bigplus(int a[],int b[],int c[]) //大整數加法
{
int i,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("Big integers add: ";
for (i=len;i>=1;i--)
printf("%d",c[i]); //列印結果
printf("\n";
return 0;
}
int bigsub(int a[],int b[],int c[]) //大整數減法
{
int i,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";
return 0;
}
else if (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("Big integers sub= ";
if (a[0]<b[0]) printf("-";
for(i=len;i>=1;i--) //列印結果
printf("%d",c[i]);
printf("\n";
return 0;
}
int bigmult(int a[],unsigned int b,int c[])//高精度乘以低精度
{
int len,i;
for (i=0;i<MAXINT;i++) //數組清0
c[i]=0;
len=a[0];
for(i=1;i<=len;i++) //對每一位計算
{
c[i]+=a[i]*b;
c[i+1]+=c[i]/10;
c[i]%=10;
}
while (c[++len]>=10) //處理高位
{
c[len+1]=c[len]/10;
c[len]%=10;
}
if (c[len]==0) len--; //處理高進位為0情況
printf("Big integrs multi small integer: ";
for (i=len;i>=1;i--)
printf("%d",c[i]);
printf("\n";
}
int bigmult2(int a[],int b[],int c[]) //高精度乘以高精度
{
int i,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("Big integers multi: ";
for (i=len;i>=1;i--) //列印結果
printf("%d",c[i]);
printf("\n";
}
int bigdiv(int a[],unsigned int b,int c[],int *d) //高精度除以低精度
{ //a[] 為被乘數,b為除數,c[]為結果,d為余數
int i,len;
len=a[0]; //len為a[0]的數組長度
for (i=len;i>=1;i--)
{
(*d)=10*(*d)+a[i]; //計算每一步余數
c[i]=(*d)/b; //計算每一步結果
(*d)=(*d)%b; //求模余數
}
while (len>1 && c[len]==0) len--; //去高位0
printf("Big integer div small integer: ";
for (i=len;i>=1;i--) //列印結果
printf("%d",c[i]);
printf("\tArithmetic compliment:%d",*d);
printf("\n";
}
int bigdiv2(int a[],int b[],int c[],int d[]) //高精度除以高精度
{
int i,j,len;
if (compare(a,b)<0) //被除數較小直接列印結果
{
printf("Result:0";
printf("Arithmetic compliment:";
for (i=a[0];i>=1;i--) printf("%d",a[i]);
printf("\n";
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("Big integers div result: ";
for (i=c[0];i>=1;i--) //列印商
printf("%d",c[i]);
printf("\tArithmetic compliment: "; //列印余數
for (i=d[0];i>=1;i--)
printf("%d",d[i]);
printf("\n");
}

❼ C語言里為什麼在循環裡面的數組不能做乘除運算

呵呵,沒有問題,除法運算做了的,由於做第一次循環的時候,把a[0]的值修改為1了,後面的兩個值都是做的除1的運算,所以不存在元素的改變了啊。

❽ 用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語言數組里的元素怎麼加減乘除

你的數組越界了,把小於等於3改成小於3

❿ C語言除法運算

用%這個算符,意思是取余數

比如

a=2;

b=3;

那麼b%a的結果就是3除以2的余數,結果是1;

參考程序段:

main()

{

int i,n;

printf("input your number: ");

scanf("%d",&n);

for(i=1;i<n;i++)

{

if(n%i) continue;

printf("%d ",i);

}

}