任意两个整数的乘法竖式

在万恶的C语言习题中,存在这样一类恶心人的题,包含知识点:求出每个位置的数是多少,求出位数,格式化,循环。如下
-30000~30000间的任意两个整数的乘法竖式。(乘号用小写x,横线用15个英文减号)
在这里插入图片描述

为了拯救各位学生狗,特地写下本文,希望能对各位有所帮助

# include<stdio.h>
int main( )
{

    int a,b,i=10,N=13,s=0,n=0,j,table,t,x=0,sum=0;
    scanf("%d\n%d",&a,&b);
    printf("%13d\n",b);
    printf("x%12d\n",a);
    printf("---------------\n");
    if((a<0&&b>0)||(a>0&&b<0)){
        x+=1;
        }//正负数据的处理,本人在这错了一次
    while(1)
    {
        if(a%i!=a%(i/10)){
        table=(((a-s)%i)/(i/10))*b;
        sum+=table*(i/10);
        t=table;
        while(t){n++;t/=10;}
        if(a%(i)==a%(i*10)){
        x+=1;
        printf("+");}
        for(j=13-n-x;j>0;j--){printf("%c",32);}
        n=0;
        printf("%d\n",table);
        x++;
        s=a%i;
        }
        else
            break;
        i*=10;}
    printf("---------------\n");
    printf("=%12d",sum);
        return 0;
}

各位可以发挥主观能动性,不要直接复制,否则会查重太多
后记:这个其实是大数算法的简略版,仅供参考。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值