FJNU.1405
Description
從鍵盤讀入兩個100以内的正整數,進行乘法計算并輸出
Input
該題有多組測試資料,每組資料為一行,包含兩個乘數,用空格分開。
Output
輸出格式請看樣例.注每一行末尾沒有任何空格,比如樣例資料中的89後面沒有空格。
Sample Input
89 13
Sample Output
89
* 13
-------
267
89
-------
1157
My Program
#include < iostream >
using namespace std;
void MIDDLE( int m, int n, int lm, int ln)
... {
int a[3],i;
int k1,k2,k3;
int l1=2,l2=2,l3=2;
a[0]=n%10;a[1]=n/10;
if(ln==3)
...{
a[2]=n/10%10;
a[1]=n/100;
}
k1=a[0]*m;
if(k1<10) l1=1;
else
if(k1>=100) l1=3;
else
if(k1>=1000) l1=4;
k2=a[1]*m;
if(k2<10) l2=1;
else
if(k2>=100) l2=3;
else
if(k2>=1000) l2=4;
k3=a[2]*m;
if(k3<10) l3=1;
else
if(k3>=100) l3=3;
else
if(k3>=1000) l3=4;
for(i=7-l1;i>0;i--)
cout<<" ";
cout<<k1<<endl;
if(ln==3)
...{
for(i=7-l3;i>1;i--)
cout<<" ";
cout<<k3<<endl;
for(i=7-l2;i>2;i--)
cout<<" ";
cout<<k2<<endl;
}
else
...{
for(i=7-l2;i>1;i--)
cout<<" ";
cout<<k2<<endl;
}
cout<<"-------"<<endl;
}
int main()
... {
int m,n,s;
int lengthM=2,lengthN=2,lengthS=4;
int i;
while(scanf("%d%d",&m,&n)!=EOF)
...{
s=m*n;
lengthM=2;lengthN=2;lengthS=4;
if(m<10) lengthM=1;
if(m>=100) lengthM=3;
if(n<10) lengthN=1;
if(n>=100) lengthN=3;
if(s<10) lengthS=1;
else
if(s<100) lengthS=2;
else
if(s<1000) lengthS=3;
else if(s>=10000) lengthS=5;
for(i=7-lengthM;i>0;i--)
cout<<" ";
cout<<m<<endl;
cout<<"*";
for(i=7-lengthN;i>1;i--)
cout<<" ";
cout<<n<<endl;
cout<<"-------"<<endl;
if(lengthN!=1)
MIDDLE(m,n,lengthM,lengthN);
for(i=7-lengthS;i>0;i--)
cout<<" ";
cout<<s<<endl;
}
return 0;
}
YOYO's Note:
很白的寫法……一直WA,我還以為是因為沒有考慮百位,于是就多了一段寫百位……
後來問了人家才知道是自己想太多……我把最後帶0的都考慮了……變成
12
* 50
--------
600
實際上還是要分段輸出的……郁悶……