当前位置:首页 » 编程语言 » 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);

}

}