//2+22+222+2222+22222=?(仅提供思路,考虑不周欢迎拍砖)
#include<stdio.h>
#define max 1000
int ar[max]={0};//按10进制位顺序存储结果
int moreThanTen(int x,int n)
{
int j=0,m=0;
if(x>9)
{
for(j=1;j<10;j++)
{
m=x-10*j;
if(m<10)
{
x=m;
ar[n]=x;
return j;
}
}
}
else{
ar[n]=x;
return 0;
}
return 0;
}
void printTitle(int n,int a)
{
int j,m;
for(j=1;j<=n;j++)
{
for(m=1;m<=j;m++)
printf("%d",a);
if(j<n)
printf("+");
else
printf("=");
}
}
int main(){
int n=0,i=0,a=0,x=0,y=0;
printf("请输入位数(n<1000)和数字(a<10)并用逗号隔开,如(5,2):\n");
while(a<10)
{
scanf("%d,%d",&n,&a);
if(a>9) break;
printTitle(n,a);//打印题目
for (i=n;i>=1;i--)
{
x=a*i+y;//竖式计算
y=moreThanTen(x,i);//处理遇10进1,同时按10进制位顺序存储结果
}
for (i=1;i<=n;i++)
{
printf("%d",ar[i]);//打印正向结果
if(i==n)
printf("\n继续测试,输入(5,11)退出\n",ar[i]);
}
}
return 0;
}
|