C語言 · 乘法運算


算法提高 乘法運算  
時間限制:1.0s   內存限制:512.0MB
    
問題描述
  編制一個乘法運算的程序。
  從鍵盤讀入2個100以內的正整數,進行乘法運算並以豎式輸出。
輸入格式
  輸入只有一行,是兩個用空格隔開的數字,均在1~99之間(含1和99)。
輸出格式
  輸出為4行或7行,符合乘法的豎式運算格式。
樣例輸入
89 13
樣例輸出
89
×13
━━━
267
89
━━━
1157
輸入輸出樣例1解釋
  3×89=267,則第四行267右側對准個位輸出。1×89=89,則第五行89右側對准十位輸出。267+890=1157,則1157右側對准個位輸出。
樣例輸入
16 8
樣例輸出
16
× 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 }

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM