数字小游戏

Description

游戏从一个整数S开始,只要它的位数多于1,就计算它各位的乘积,并且不断重复这个过程。比如:我们从95开始,9 × 5 = 45,45不是1位数,继续4 × 5 = 20.继续2 × 0 = 0.至此只有1位数,结束。

再比如:如果从396开始
3 × 9 × 6 = 162
1 × 6 × 2 = 12
1 × 2 = 2
最后得到2。

Input

 每行开始1个整数,表示起始值。最后以0结束。

Output

游戏从开始到结束的序列,从起始值开始。

Sample Input

95
396 
28 
4 
40
0

Sample Output

95 45 20 0
396 162 12 2
28 16 6
4
40 0



解题思路:个人觉得是一道很好的题,主要考察对循环的理解和使用,很有意思


 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,i,ans,a,sum;
 5     while(scanf("%d",&n)!=EOF)
 6     {
 7         if(n==0)
 8             break;
 9         sum=1;
10         while(n>=10)
11         {
12 
13             printf("%d ",n);
14             while(1)///求每一次变化后的得到的数
15             {
16                 a=n%10;
17                 n=n/10;
18                 sum=sum*a;///一位一位的拆数
19                 if(n==0)
20                 {
21                     n=sum; 
22                     sum=1;
23                     break;
24                 }
25             }
26         }
27         printf("%d
",n);
28     }
29     return 0;
30 }


 
原文地址:https://www.cnblogs.com/wkfvawl/p/8845929.html