算法提高 乘法運算
時間限制:1.0s 內存限制:512.0MB
問題描述
編制一個乘法運算的程序。
從鍵盤讀入2個100以內的正整數,進行乘法運算並以豎式輸出。
從鍵盤讀入2個100以內的正整數,進行乘法運算並以豎式輸出。
輸入格式
輸入只有一行,是兩個用空格隔開的數字,均在1~99之間(含1和99)。
輸出格式
輸出為4行或7行,符合乘法的豎式運算格式。
樣例輸入
89 13
樣例輸出
89
×13
━━━
267
89
━━━
1157
×13
━━━
267
89
━━━
1157
輸入輸出樣例1解釋
3×89=267,則第四行267右側對准個位輸出。1×89=89,則第五行89右側對准十位輸出。267+890=1157,則1157右側對准個位輸出。
樣例輸入
16 8
樣例輸出
16
× 8
━━━
128
× 8
━━━
128
輸入輸出樣例2解釋
8×16=128,則第四行128右側對准個位輸出。計算完成,不再輸出。
作者注釋:這一題做的很蛋疼,格式怎么調都提交不過,以下是自己滿意的版本。
1 #include<stdio.h> 2 int main(){ 3 int m,n; 4 int a[2]={0},b[2]={0};//分別用來存放m、n的十位和個位 5 scanf("%d%d",&m,&n); 6 a[0] = m%10;//m的個位 7 a[1] = m/10;//m的十位 8 b[0] = n%10;//n的個位 9 b[1] = n/10;//n的十位 10 printf("%4d\n",m); 11 printf("X%3d\n",n); 12 printf("━━━\n"); 13 if(a[1]==0 && b[1]==0){//一位數乘一位數 14 printf("%4d",m*b[0]); 15 } 16 if(a[1]>0 && b[1]==0){//兩位數乘一位數 17 printf("%4d",m*b[0]); 18 } 19 if(a[1]==0 && b[1]>0){//一位數乘兩位數 20 for(int i=0;i<2;i++){ 21 if(m*b[i]==0) 22 printf(" 00\n"); 23 else if(i==0 && m*b[i]!=0 && m*b[i]/10 != 0) 24 printf("%4d\n",m*b[i]); 25 else if(i==1 && m*b[i]!=0 && m*b[i]/10 != 0) 26 printf("%3d\n",m*b[i]); 27 else 28 printf("%3d\n",m*b[i]); 29 } 30 printf("━━━\n"); 31 printf("%4d",m*n); 32 } 33 if(a[1]>0 && b[1]>0){//兩位數乘兩位數 34 for(int i=0;i<2;i++){ 35 if(m*b[i]==0) 36 printf(" 00\n"); 37 else if(i==0 && m*b[i]!=0 && m*b[i]/10 != 0) 38 printf("%4d\n",m*b[i]); 39 else if(i==1 && m*b[i]!=0 && m*b[i]/10 != 0) 40 printf("%3d\n",m*b[i]); 41 else 42 printf("%3d\n",m*b[i]); 43 } 44 printf("━━━\n"); 45 printf("%4d",m*n); 46 } 47 }