㈠ c語言除法是什麼
C語言中和除法相關的運算符有兩個"/"整除運算符和"%"取余運算符。
整除就是求商,取余就是求余數,這是兩者最本質的區別,需要注意的是在C語言%取余運算符只能操作整型數據對象。
如果是兩個整數型的變數相除,如10/3,其結果是3,而不是3.3333333;又如10/4,其在C中的結果是2,而不是2.5。也就是說,整數型變數相除,如果其結果從數學角度上看是小數,無論是否可以四捨五入進位,C都會講小數點後的部分拋棄。
c語言中其他的計算函數。
int isdigit(int ch) 若ch是數字('0'-'9')返回非0值,否則返回0。
int isgraph(int ch) 若ch是可列印字元(不含空格)(0x21-0x7E)返回非0值,否則返回0。
int islower(int ch) 若ch是小寫字母('a'-'z')返回非0值,否則返回0。
double fabs(double x) 返回雙精度參數x的絕對值。
long labs(long n) 返回長整型參數n的絕對值。
double exp(double x) 返回指數函數ex的值。
㈡ 用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語言除法運算
(1)計算的時候,c語言中,會按一定順序將類型轉換後再計算。但是結果是保留自身值,之後如果賦值給其他一個變數,那麼這個變數會將得到的值再轉換成與自身類型相符的值。題中,
m=1/2,因為等式右邊計算的是兩個整形變數相除(類型不需要轉換),根據c語言的「/」運行可以知道,這個是取整計算,結果是0,所以m=0
(2)因為m
,n都是浮點型,所以,「/」計算是求浮點類型的值,也就是和我們平常數學里的除號運算是一樣的,也就是1/2=0.5,或者也可以寫成1.0/2.0=0.5,所以,z=0.5
㈤ C語言 除法
C語言中,如果輸入的常量是小數形式,編譯器會自動認為它是雙精度浮點型常量。而C語言的四則運算只要有一個數是浮點數,則所有數都會隱式轉換為浮點數進行運算,結果也是浮點數;否則對於除法來說就是做整除運算。由於運算結果是IEEE定義的double類型(為二進制浮點數),不可能會自動舍入或補充有效十進制數字,因此4.0/16的結果是0.25(如果4/16,結果是0)。如果要改變有效數字,一般要另做計算或在輸出時處理。
㈥ c兩個數組分別相除怎麼實現
inta[]={1,2,3,4};
intb[]={6,7,8,9};
for(inti=0;i<4;i++)
{
for(intj=0;j<4;j++)
{
b[i]/a[j];
}
}
㈦ 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語言數組里的元素怎麼加減乘除
你的數組越界了,把小於等於3改成小於3
㈨ C語言可以做數組除法嗎
當然可以,
/ 表示除法
% 表示求余數