c语言数组减法运算

c语言 数组间相加和相减应该怎么编,用下面的最后两个方程 求大神相助

按元素位置 对应相加减就可以了

比如

int i,j;

for(i = 0; i  row; i ++)

    for(j = 0; j  col; j ++)

        c[i][j] = a[i][j] + b[i][j];

不过 看你下面函数的参数 都转成一维数组了 就更简单了

只要

int j;

for(j = 0; j  col; j ++)

    c[j] = a[j] + b[j];

这样就ok了

减法类似

c语言数组减法运算

C语言数组运算问题:数组进行加减法怎样计算啊?请以以下程序为例讲解,谢谢

#include stdio.h

int main()

{

char a[15]={“windows98”};

printf(“%s\n”,a+7); // a+7相当于a[7],也就是从a的首地址偏移7个位置,结果是:98

return 0;

}

求问个c语言问题,怎样数组模拟减法运算

/*大数减法*/

c=a-b;

void subtract(char* a,char* b,char* c)

{

int i,j,ca,cb;

ca=strlen(a);

cb=strlen(b);

if (cacb||(ca==cbstrcmp(a,b)=0))

{

for (i=ca-1,j=cb-1;j=0;i–,j–)

a[i]-=(b[j]-‘0’);

for (i=ca-1;i=0;i–)

if (a[i]’0′)

{

a[i]+=10;

a[i-1]–;

}

i=0;

while (a[i]==’0′)

i++;

if (a[i]==’\0′)

{

c[0]=’0′;

c[1]=’\0′;

}

else

{

for (j=0;a[i]!=’\0′;i++,j++)

c[j]=a[i];

c[j]=’\0′;

}

}

else

{

for (i=ca-1,j=cb-1;i=0;i–,j–)

b[j]-=(a[i]-‘0’);

for (j=cb-1;j=0;j–)

if (b[j]’0′)

{

b[j]+=10;

b[j-1]–;

}

j=0;

while (b[j]==’0′)

j++;

i=1;

c[0]=’-‘;

for (;b[j]!=’\0′;i++,j++)

c[i]=b[j];

c[i]=’\0′;

}

}

用c语言数组计算两个数的四则运算,考虑两个数非常大的情况

假设A

100位、B

100位分别存到数组m、n中。(位数不一样时,小的数补零填充)

1、加法时,从低位按位相加、进位

2、减法时,重高位开始比较大小,然后从低位开始按位减、借位

3、乘法时,低位按位乘、进位

4、除法时,用模运算求整数商,小数部分折半减,逐步精确

附:直接点的方法也可以先转化成二进制、然后用补码运算

用c语言 数组 做大数 加减乘除 急

参考代码:

#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);  

  bigmult2(a,b,c);  

  bigdiv2(a,b,c,d);

  getchar();

  return 0;

}

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;iMAXINT;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;iMAXINT;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 (len1  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 bigmult2(int a[],int b[],int c[])      //高精度乘以高精度

{

    int i,j,len;

    for (i=0;iMAXINT;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 (len1  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 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;iMAXINT;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 (j0  d[j]==0)        //去掉高位0

                      j–;

                d[0]=j;

            c[i]++;                           //商所在位值加1

      }

   }

   j=b[0];

   while (c[j]==0  j0) 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语言数组里的元素怎么加减乘除

加法:

voidAdd(char s1[],char s2[])//参数为两个字符串数组{ int num1[M],num2[M]; int i,j; len1 = strlen (s1); len2 = strlen (s2); for (i = len1-1,j = 0; i = 0; i–)//num1[0]保存的是低位 num1[j++]= s1[i] – ‘0’; for (i = len2-1,j = 0; i = 0; i –) num2[j++] = s2[i] – ‘0’; for (i = 0; i M; i ++) { num1[i] += num2[i]; if (num1[i] 9) { num1[i] -= 10; num1[i+1] ++; } } for(i = M-1; (i = 0)(num1[i] == 0); i –) ;//找到第一个不是 0的数的位置 if (i= 0) //从高位到低位输出每个数 for(; i = 0; i –) printf (“%d”,num1[i]); else printf (“0\n”);}

减法等于加上负的数

乘法

voidMulti(char str1[],char str2[]){ int len1,len2,i,j; int a[MAX+10],b[MAX+10],c[MAX*2+10]; memset (a,0,sizeof(a)); memset (b,0,sizeof(b)); memset (c,0,sizeof(c)); len1=strlen(str1); for(j=0,i=len1-1; i=0; i–)//把数字倒过来 a[j++]=str1[i]-‘0’; len2=strlen(str2); for(j=0,i=len2-1; i=0; i–)//倒转第二个整数 b[j++]=str2[i]-‘0’; for(i=0; ilen2; i++)//用第二个数乘以第一个数,每次一位 for(j=0;jlen1; j++) c[i+j]+= b[i]*a[j]; //先乘起来,后面统一进位for(i=0;iMAX*2; i++)//循环统一处理进位问题 if(c[i]=10) { c[i+1]+=c[i]/10; c[i]%=10; } for(i=MAX*2; (c[i]==0)(i=0);i–);//跳过高位的0 if(i=0) for(; i=0; i–) printf(“%d”, c[i]); else printf(“0”); pritnf(“\n”);} 除法最难 看这里吧(你们竟然会布置除法! 一般都是到乘法)

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月26日 02:55:48
下一篇 2024年3月26日 03:06:01

相关推荐

  • c语言游戏开发教程,c语言游戏编程从入门到精通

    c做游戏代码简单游戏代码c语言 算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 /*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo??)上都能运行,你还可以进一步改进。这是一个类似贪吃蛇的小游戏。 用户输入:游戏需要响应用户的输入,…

    2024年5月23日
    3500
  • c语言数组联系,c语言数组的问题

    C语言字符数组连接问题 1、str1和str2都是99个字节,如果str1内字符串的长度比较大,连接str2就会出现超出str1长度的可能,也就是溢出。可以把str1的长度定义大一些。 2、C语言中,字符类型char和整数类型在存储数据的格式上是相同的,都是采用补码存储数据。所不同的是,char只有一个字节,而int数据有四个字节。 3、实际上就是实现str…

    2024年5月23日
    3500
  • c语言将字符串内字符进行替换,c语言截取字符串中的某一段字符

    C语言中如何替换一个字符串中的字符 打开visual C++ 0-文件-新建-文件-C++ Source File。定义变量:#include stdio.hvoid main(){ char c1,c2,c3; /*定义字符变量*/。 第一步,依次单击visual C ++ 0的“文件”–“新建”–“文件”–“C++ S…

    2024年5月23日
    3300
  • c语言里的空格符,c语言中的空格符号

    在C语言中空格和换行符怎么表示 1、C语言中, \0表示空字符,一般用于标识字符串结束;\n表示换行符,一般用于换行打印;回车符用\t表示。C语言中,所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。 2、表示(注意两个单引号之间有空位),显示出来是一个空白。比如“a b”,在a和b之间就是一个空格字符。 3、制表符为\t,相当于4个或8个空…

    2024年5月23日
    4200
  • c语言判断彩票,如何用c语言判断

    求助,C语言问题 1、二进制11111111代表-127,是按原码规则来算。若按补码规则,二进制11111111算出来是-1。文中说的是10000000代表-128。 2、这个问题是操作系统中为防止误输入而设置的。因为有的人输入时点击键盘的速度比较慢,为防止这种情况下的误输入,所以,键盘一般都有一个“延时”,在此时间间隔内,键盘不会接受同一按键上“连续的输入…

    2024年5月23日
    4200
  • 创建c语言文件,c语言 创建文件

    C语言中如何用代码新建一个文件? 使用文件指针 file 创建了名为 “STRING.txt” 的文件,并以写入模式打开。如果文件无法创建,程序将打印一条错误消息并退出。从键盘输入一个字符串,并使用 fgets() 函数将其写入文件。关闭文件。 第一首先在电脑打开vs软件。再点击左上角的文件。第二然后选择新建。再点击项目。第三然后选择控制台应用程序。再设置项…

    2024年5月23日
    4300
  • c语言2ltlt3移位运算,c语言中移位运算

    C语言函数编程题 以下是Python语言的实现:其中,replace函数的三个参数分别为字符串(str)、待查找的字符(char1)和替换的字符(char2)。函数中使用循环遍历字符串,查找第一个字符,并进行替换,直到找到或者遍历完整个字符串为止。 函数`search`使用简单的for循环遍历数组,找到第一个被7整除的数,返回该元素在数组中的下标(即位置加1…

    2024年5月23日
    3400
  • c语言复用键,复用键什么意思

    C语言编程有哪些快捷键? 注释:ctrl+K+C取消注释:ctrl+K+U。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。 代码移动:Alt+方向上或下箭头,可把当前行代码与上一行或下一行互换位置,如按下多次方向上箭头,可向上移动数行,也可移动整块代码。 //注释多行快捷键 Ctrl+k ct…

    2024年5月23日
    3100
  • 安卓平板c语言,安卓平板c++编程软件

    用c语言可以开发app吗(c语言能开发安卓app吗) c语言不可以开发安卓app,安卓app是用Java语言开发,而苹果app是用C语言开发。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。 理论上是可以的,但很少人这么做。因为C语言太底层了,而手机应用是相对比较上层的应用,它包括了许多界面和交互…

    2024年5月23日
    3900
  • 用c语言设计一个大程序设计,用c语言设计一个小程序

    C语言程序设计,帮忙设计一个程序,很急。 1、实现文件写入功能,一次写入一个职工信息。实现查询功能(包含4种条件查询)。实现信息删除和修改并写入文件。根据题意,数据用结构数组存储,且职工编号唯一性,因此单独两个函数计算信息长度和编号。 2、你看HI消息啊 我给你发了 功能:统计出若干个学生的平均成绩,最高分以及得最高 分的人数。 3、委员会由硬件厂商,编译器…

    2024年5月23日
    6800

发表回复

登录后才能评论



关注微信