在万恶的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;
}
各位可以发挥主观能动性,不要直接复制,否则会查重太多
后记:这个其实是大数算法的简略版,仅供参考。