精华内容
下载资源
问答
  • c语言 整数四则运算

    千次阅读 2020-07-19 15:19:17
    整数四则运算 计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 ...

    整数四则运算

    计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。

    输入格式:
    输入在一行中给出2个正整数A和B。

    输出格式:
    在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。

    输入样例:
    3 2
    输出样例:
    3 + 2 = 5
    3 - 2 = 1
    3 * 2 = 6
    3 / 2 = 1

    #include <stdio.h>
    int main()
    {
        int a, b;
        scanf("%d%d",&a,&b);
        printf("%d + %d = %d\n",a,b,a+b);
        printf("%d - %d = %d\n",a,b,a-b);
        printf("%d * %d = %d\n",a,b,a*b);
        printf("%d / %d = %d\n",a,b,a/b);
    }
    

    运行结果
    在这里插入图片描述

    展开全文
  • C语言整数四则运算

    千次阅读 2020-05-23 16:52:08
    本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、...

    本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。

    输入格式:
    输入在一行中给出2个正整数A和B。

    输出格式:
    在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。

    输入样例:
    3 2
    输出样例:
    3 + 2 = 5
    3 - 2 = 1
    3 * 2 = 6
    3 / 2 = 1
    思路:算法不难,难的地方是输出格式,所以按照题目的格式复制和粘贴。

    #include<stdio.h>
    int main()
    {
        int a,b;
        scanf("%d %d",&a,&b);
        printf("%d + %d = %d\n",a,b,a+b);
        printf("%d - %d = %d\n",a,b,a-b);
        printf("%d * %d = %d\n",a,b,a*b);
        printf("%d / %d = %d\n",a,b,a/b);
        return 0;
    }
    
    展开全文
  • #include#include#includetypedef struct bigint{char *num; //指向长整数数组(序号0中保存着最高位)char minus; //符号(1表示正数,-1表示负数)int digit; //保存该数的位数(实际位数)}BIGINT, *pBIGINT;voi...

    #include

    #include

    #include

    typedef struct bigint

    {

    char *num; //指向长整数数组(序号0中保存着最高位)

    char minus; //符号(1表示正数,-1表示负数)

    int digit; //保存该数的位数(实际位数)

    }BIGINT, *pBIGINT;

    void BigIntTrans(pBIGINT num1) //将字符串转为数字表示

    {

    char *temp; //临时数组

    int i,k,len;

    len=strlen(num1->num); //字符串长度

    //分配内存

    if(!(temp = (char *)malloc(sizeof(char)* len)))

    {

    printf("内存分配失败!\n");

    exit(0);

    }

    i=0;

    num1->minus=1; //保存为正数

    if(num1->num[0]=='-') //判断是否为负数

    {

    num1->minus=-1;

    i++;

    }

    k=0; //数字位数计数器

    while(num1->num[i]!='\0') //字符串未结束

    {

    if(num1->num[i]>='0' && num1->num[i] <='9') //数字为0~9

    //将ASCII码转换为对应数字

    temp[k]=num1->num[i]-'0';

    k++;

    }

    i++;

    }

    for(i=0;idigit;i++) //清空数组各元素

    num1->num[i]=0;

    num1->digit=k; //转换后的数据位数

    for(i=0,k--;k>=0;k--,i++) //将临时数组各位置反置保存到数组num中

    num1->num[i]=temp[k];

    BigIntTrim(num1); //整理输入的大整数

    }

    void BigIntTrim(pBIGINT num1) //整理大整数,去掉前面多余的0

    {

    int i;

    for(i=num1->digit-1;i>=0;i--) //从高位检查是否为0

    {

    if(num1->num[i] !=0) //遇到不为0的最高位

    break; //跳出循环

    }

    if(i<0) //若余数全部为0

    {

    num1->digit=1; //设置余数位数为1

    num1->num[0]=0;

    }else

    num1->digit=i+1; //余数位数

    }

    void BigIntPrint(pBIGINT result) //输出大整数

    {

    int j;

    if(result->minus ==-1) //是负数

    printf("-"); //输出负数

    //若大整数为0

    if(result->digit ==1 &&result->num[0]==0)

    printf("0");

    else //不为0

    {

    //从高位到低位输出

    for(j=result->digit-1;j>=0;j--)

    printf("%d",result->num[j]);

    }

    }

    int BigIntEqual(pBIGINT num1,pBIGINT num2) //比较绝对值大小

    {

    int i;

    //num1的位数大于num2

    if(num1->digit>num2->digit)

    return 1;

    //num1的位数小于num2

    else if(num1->digitdigit)

    return -1;

    else //两数位数相等

    {

    i=num1->digit-1; //num1的数据位数

    while(i>=0) //从高位向地位比

    {

    //num1对应位大于num2

    if(num1->num[i]>num2->num[i])

    return 1;

    //num1对应位小于num2

    else if(num1->num[i]num[i])

    return -1;

    else //比较下一位

    i--;

    }

    }

    return 0; //相等

    }

    void BigIntAdd(pBIGINT num1,pBIGINT num2,pBIGINT result)

    {

    int i;

    i=BigIntEqual(num1,num2); //比较两数绝对值大小

    if(i<0) //num1绝对值小于num2

    {

    pBIGINT temp;

    temp=num1; //交换两数

    num1=num2;

    num2=temp;

    }

    if(num1->minus * num2->minus <0) //符号不同,则执减法

    {

    if(i==0) //两数相等

    {

    //结果长度为一位数,就是数值0

    result->digit =1;

    result->num[0]=0; //结果值为0

    result->minus =1; //结果设为正号

    return; //返回

    }

    //调用相减函数完成异号相加

    BigIntSub1(num1,num2,result);

    }else

    //调用相加函数完成同号相加

    BigIntAdd1(num1,num2,result);

    }

    void BigIntAdd1(pBIGINT num1,pBIGINT num2,pBIGINT result)

    {

    int i,carry;

    carry=0; //清除进位

    result->minus =num1->minus; //保存符号

    //将被加数复制到结果数组中

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

    result->num[i]=num1->num[i];

    //num2中的数小,可能位数也少些

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

    {

    //将对应位的数和进位数相加

    result->num[i]=result->num[i]+num2->num[i]+carry;

    carry=result->num[i]/10; //计算进位数据

    result->num[i]=result->num[i]%10; //保留一位

    }

    if(carry) //若最后还有进位

    result->num[i]=result->num[i]+carry;

    BigIntTrim(result); //整理结果

    }

    //减法函数

    void BigIntSub(pBIGINT num1,pBIGINT num2,pBIGINT result)

    {

    num2->minus =-1 * num2 ->minus; //将减数的符号取反

    BigIntAdd(num1,num2,result); //调用加法函数

    }

    //异号相减函数

    void BigIntSub1(pBIGINT num1,pBIGINT num2,pBIGINT result)

    {

    int i,borrow;

    result->minus =num1->minus; //结果符号

    borrow=0;

    //将被减数的内容复制到结果中

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

    result->num[i]=num1->num[i];

    for(i=0;i<=num2->digit;i++)

    {

    //num1减去num2,并减去低位的借位

    result->num[i]=result->num[i]-num2->num[i]-borrow;

    if(result ->num[i]<0) //若为负数

    {

    result->num[i]=10+result->num[i]; //向高位借位

    borrow=1; //设置借位数

    }else

    borrow=0;

    }

    if(borrow==1)

    result->num[i]=result->num[i]-borrow;

    i=num1->digit;

    while(i>0)

    {

    if(result->num[i]==0)

    i--;

    else

    break;

    }

    result->digit=i+1; //保存结果位数

    BigIntTrim(result); //整理结果

    }

    void BigIntMul(pBIGINT num1,pBIGINT num2,pBIGINT result)

    {

    char carry,temp;

    int i,j,pos;

    //结果数组和中间数清0

    for(i=0;idigit+num2->digit;i++)

    result->num[i]=0;

    //用乘数的每一位乘以被乘数

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

    {

    carry=0; //清除进位

    //被乘数的每一位

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

    {

    //相乘并加上进位

    temp=num2->num[i] * num1->num[j]+carry;

    //计算进位carry

    carry =temp/10;

    //计算当前位的值

    temp=temp%10;

    pos=i+j;

    //计算结果累加到临时数组中

    result->num[pos]+=temp;

    carry=carry+result->num[pos]/10; //计算进位

    result->num[pos]=result->num[pos]%10;

    }

    if(carry>0)

    {

    result->num[i+j]=carry; //加上最高位进位

    result->digit=i+j+1; //保存结果位数

    }else

    result->digit=i+j; //保存结果位数

    }

    result->minus=num1->minus * num2->minus; //结果的符号

    }

    void BigIntDiv(pBIGINT num1,pBIGINT num2,pBIGINT result,pBIGINT residue)

    //除法函数

    {

    BIGINT quo1,residol,quo2;

    int i,j,k,m; //k保存试商结果,m保存商的位数

    char t;

    result->minus = num1->minus * num2->minus; //商的符号

    //分配余数的内存空间

    residue->num =(char *)malloc(sizeof(char) * num2->digit);

    for(i=0;idigit;i++) //将余数全部清0

    residue->num[i]=0;

    m=0;

    for(i=num1->digit-1;i>=0;i--)

    {

    //重新设置余数的位数比除数多一位

    residue->digit=num2->digit+1;

    for(j=num2->digit-1;j>0;j--) //移余数

    residue->num[j]=residue->num[j-1];

    //复制被除数中的一位到余数的最低位中

    residue->num[0]=num1->num[i];

    BigIntTrim(residue); //整理余数

    k=0; //试商

    //比较余数与除数的大小

    while(BigIntEqual(residue,num2)>=0)

    {

    BigIntSub1(residue,num2,residue); //用余数减去除数,差值保存在余数中

    k++; //试商加1

    }

    result->num[m++]=k; //保存商

    }

    result->digit=m; //保存商的位数

    for(i=0;i

    {

    t=result->num[i];

    result->num[i]=result->num[m-1-i];

    result->num[m-1-i]=t;

    }

    BigIntTrim(result); //整理商

    BigIntTrim(residue); //整理余数

    }

    int main()

    {

    //参与运算的数,结果,余数

    BIGINT num1,num2,result,residue;

    int i=0,len;

    char op;

    printf("输入最大数的位数:");

    scanf("%d",&len);

    if(!(num1.num=(char *)malloc(sizeof(char) * (len+1))) )

    {

    printf("内存分配失败!\n");

    exit(0);

    }

    num1.digit=len +1;

    if(!(num2.num=(char *)malloc(sizeof(char) * (len +1))))

    {

    printf("内存分配失败!\n");

    exit(0);

    }

    num2.digit=len+1;

    if(!(result.num=(char *)malloc(sizeof(char) * (2*len +1))))

    {

    printf("内存分配失败!\n");

    exit(0);

    }

    result.digit=2*len+1;

    for(i=0;i

    result.num[i]=0;

    printf("选择大整数的运算(+,-,*,/):");

    fflush(stdin);

    scanf("%c",&op);

    switch(op)

    {

    case '+':

    printf("\n输入被加数:");

    scanf("%s",num1.num);

    printf("\n输入加数:");

    scanf("%s",num2.num);

    BigIntTrans(&num1);

    BigIntTrans(&num2);

    BigIntAdd(&num1,&num2,&result); //加法

    break;

    case '-':

    printf("\n输入被减数:");

    scanf("%s",num1.num);

    printf("\n输入减数:");

    scanf("%s",num2.num);

    BigIntTrans(&num1);

    BigIntTrans(&num2);

    BigIntSub(&num1,&num2,&result); //减法

    break;

    case '*':

    printf("\n输入被乘数:");

    scanf("%s",num1.num);

    printf("\n输入乘数:");

    scanf("%s",num2.num);

    BigIntTrans(&num1);

    BigIntTrans(&num2);

    BigIntMul(&num1,&num2,&result); //乘法

    break;

    case '/':

    printf("\n输入被除数:");

    scanf("%s",num1.num);

    printf("\n输入除数:");

    scanf("%s",num2.num);

    BigIntTrans(&num1);

    BigIntTrans(&num2);

    if(num2.digit==1 && num2.num[0]==0) //大整数为0

    printf("除数不能为0!\n");

    else

    BigIntDiv(&num1,&num2,&result,&residue); //除法

    break;

    }

    if(op=='/')

    {

    //为除法且除数不为0

    if(!(num2.digit==1 && num2.num[0]==0))

    {

    printf("商:");

    BigIntPrint(&result);

    printf("\t余数:");

    BigIntPrint(&residue);

    }

    }else

    {

    printf("结果:");

    BigIntPrint(&result);

    }

    getch();

    return 0;

    }

    展开全文
  • C语言实现大整数(超过ulong的取值范围)的四则运算
  • 除法可保留小数无限位./**/////////////////#include #include #include #include int cchkdig(char *r){int i=0;while(r[i]!...}//去掉整数串表示前面多余的零,最后结果为空串时置为"0"void cdel0(...

    除法可保留小数无限位.

    /**/

    #include

    #include

    #include

    #include

    int cchkdig(char *r)

    {

    int i=0;

    while(r[i]!='\0')

    {

    if(isdigit(r[i++])==0)

    return (0);

    }

    return (1);

    }

    //去掉整数串表示前面多余的零,最后结果为空串时置为"0"

    void cdel0(char *r)

    {

    unsigned int lr;

    int i=0, j;

    lr=strlen(r);

    while(r[i]=='0')

    ++i;

    if(i>0)

    {

    for(j=0; j

    r[j]=r[j+i];

    for(j=lr-i; j

    {

    r[j]='\0';

    }

    }

    if(r[0]=='\0')

    {

    r[0]='0';

    }

    }

    int scmp(char *r, char *u)

    {

    unsigned int lr, lu;

    cdel0(r);

    cdel0(u);

    lr=strlen(r);

    lu=strlen(u);

    if(lr>lu)

    {

    return 1;

    }

    else if (lr

    {

    return -1;

    }

    return (strcmp(r, u));

    }//end scmp()

    //两个串表示数的减法

    char *ssub(char *r, char *u)

    {

    unsigned int i,lr, lu, lp,c=0;

    char h,hc;

    char *p;

    if(scmp(r, u)<0)

    return NULL;

    lr=strlen(r);

    lu=strlen(u);

    p=(char *)malloc((unsigned int)(lr+1)*sizeof(char));

    for(i=0; i

    {

    h=r[lr-i-1]-u[lu-i-1]-c;

    if(h<0)

    {

    c=1;

    h=h+10;

    }

    else

    c=0;

    p[i]=h+'0';

    hc=h+'0';

    }

    for (i=lu; i

    {

    h=r[lr-i-1]-'0'-c;

    if(h<0)

    {

    c=1;

    h=h+10;

    }

    else

    c=0;

    p[i]='0'+h;

    hc='0'+h;

    }

    p[i]='\0';

    lp=i-1;

    while(p[lp]=='0'&&lp!=0)

    {

    p[lp]='\0';

    lp--;

    }

    for(i=0; i

    {

    hc=p[i];

    p[i]=p[lp-i];

    p[lp-i]=hc;

    }

    return (p);

    }//end ssub()

    /*

    //两个串表示数的加法

    char *sadd(char *r, char *u)

    {

    unsigned int lr, lu, lp;

    int i, h, c=0;

    char hc, *p;

    lr=strlen(r);

    lu=strlen(u);

    if(lu>lr)

    {

    p=r;

    r=u;

    u=p;

    h=lr;

    lr=lu;

    lu=h;

    }

    p=(char *)malloc((unsigned int)(lr+2)*sizeof(char));

    for(i=0; i

    {

    h=r[lr-i-1]-'0'+u[lu-i-1]-'0'+c;

    if(h>9)

    {

    c=1;

    h=h-10;

    }

    else

    c=0;

    p[i]=h+'0';

    }

    for(i=lu; i

    {

    h=r[lr-i-1]-'0'+c;

    if(h>9)

    {

    c=1;

    h=h-10;

    }

    else

    c=0;

    p[i]='0'+h;

    }

    if(c>0)

    {

    p[i]=c+'0';

    lp=i;

    }

    else

    lp=i-1;

    for(i=lp+1; i

    p[i]='\0';

    for(i=0; i

    展开全文
  • C语言实现整数四则运算表达式的计算

    万次阅读 多人点赞 2016-03-29 02:24:28
    从标准输入中读入一个整数算术运算表达式,如5 - 1 * 2 * 3 + 12 / 2 / 2 = 。计算表达式结果,并输出。 要求: 1、表达式运算符只有+、-、*、/,表达式末尾的’=’字符表示表达式输入结束,表达式中可能会出现空格...
  • C语言-大整数四则运算

    万次阅读 2016-04-17 21:06:21
    int的存储空间有限,利用”串”的结构,分享一则“大整数”简单四则运算
  • C语言-四则运算.docx

    2020-11-15 09:03:01
    四则运算 姓 名: 学 号: 班 级: 1.功能结构图 四则运算 加法运算 减法运算 乘法运算 除法运算 求模运算 混合运算 理 f 统计正确率 2?程序功能 进行整数的加减乘除和求模运算程序采用随机产生 1~100的两个数进行运算...
  • 首先对输入串进行输入格式判断,如果判断不正确则重新输入,输入正确将...判断输入串是整数还是负数决定是否输出‘-’,对两串的绝对值的大小进行比较,并根据四则运算控制符的符号来判断进行的运算和符号标识位的值。
  • 任务:设计一个实现任意长的整数进行加法、减法运算的演示程序。 要求:利用双向循环链表实现长整数的存储,每个结点含一个整形变量。任何整形变量的范围是 -(2^15 - 1)~ (2^15 - 1)。输入和输出形式:按中国对于长...
  • 1、 设计一个实现任意长的整数进行四则运算的程序。 2、 输入和输出形式是按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开,长整数位数没有上限,以分号结束长整型数据的输入。 3、 程序执行的命令包括: 1...
  • 整数四则运算 数据结构课的作业,实现大整数的四则运算。 一、效果图 二、头函数 #include #include #include typedef struct BigNum{ int num[1000]; int carry[1000]; int length; }BigNum; void AddNum...
  • C语言 两个整数四则运算

    千次阅读 2020-05-06 21:08:05
    编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 ...
  • 完整报告,包括源程序,构思过程,报告形式等。
  • #include<stdio.h> #include <stdlib.h> #include<conio.h> #include<time.h> int main() { int a=0; int b=0; int m=0; int i,t; srand((unsigne...
  • 练习2-9 整数四则运算 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果...
  • 设计题目 大整数四则运算 1. 功能简介 编写出实现大整数之间相加相减相乘相除的程序并输出计算 结构 课程设计要求 采用模块化程序设计 源程序中应有足够的注释 必须上机调试通过 注重算法运用优化存储效率与运算...
  • #include<stdio.h> #include <stdlib.h> #include<conio.h> #include<time.h> #include<string.h> int main() { int a=0; int b=0; int c=0; int d=0;......
  • 设计题目 大整数四则运算 1. 功能简介 编写出实现大整数之间相加相减相乘相除的程序并输出计算 结构 课程设计要求 采用模块化程序设计 源程序中应有足够的注释 必须上机调试通过 注重算法运用优化存储效率与运算...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼1L贴代码#include using namespace std;struct LargeInt{public://构造跟析构LargeInt();~LargeInt();//拷贝构造LargeInt(const LargeInt & b);...
  • 在编程计算时, 程序设计...本文把计算机原理中的数值运算方法应用于高级语言编程, 总结出了一个提高计算精度的有效方法, 叫做分段运算法, 如不考虑机器的运行时间和内存容量, 采用这种方法可以使计算精度达到任意位。
  • 练习2-9 整数四则运算 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果...
  • 设计题目 大整数四则运算;1;1*p1=i;k++;int minus(int a[],int b[],int d[],int m,int n;return;printf"\n;return;for(i=m-1,s=1;i>0;i--,s++;for(r=1;r;r++;break;c[i+j-first+1]+=(temp/10000)+(c[i+j-first]/...
  • /****************************************************** * Auther : Hongpo Zhang * Email : * Last modified : 2013-08-29 16:10 * Filename : cal.c * Description : 简单四则运算, 最多两位整形数的加
  • 第一部分:引言 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。...大整数四则运算
  • 整数四则运算,加减乘除开平方 算法原理和C语言实现代码 C++封装 MMX,SSE优化

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 318
精华内容 127
关键字:

c语言整数四则运算

c语言 订阅