整数翻转,99乘法表,百钱买百鸡

 1 #include <stdio.h>
 2 /*
 3 循环练习题
 4 */
 5 int main(void)
 6 {
 7 /*
 8 //题目1:打印99乘法表
 9 //思路:观察乘法表:1.每行打印的列数等于行号(例如:第一行,1列,第二行2列)  所以内循环的终止条件:j<=i;
10 //                 2.起始位置:i =1 ,j = 1;
11 //      总结:外层循环决定起始位置,内层循环决定打印方向。
12 
13     int i,j;
14 
15     for(i = 1;i<10;i++)
16     {
17         for(j = 1;j<=i;j++)
18         {
19             printf("%d*%d = %d ",j,i,i*j);
20         }
21         putchar(10);
22     }
23 */
24 
25 
26 //题目2:分别用 while 和 do while 实现将输入的整数翻转输出。 比如,输出 12345,输出 54321。
27 //        思路:首先整数必须为正数,即没有符号。其次:取出个位打印,然后去掉个位.循环后再次取出个位打印。直至为0退出循环。
28 
29 
30 /*
31 //方法一:用while + goto实现
32     int val,r_digit;
33     val = 0;
34     printf("请输入正整数,退出输入q:
");
35 gogogo:    while(scanf("%d",&val) == 1&& val>0)
36         {
37             while(val)
38             {
39                 r_digit = val%10;
40                 printf("%d",r_digit);
41                 val /=10;
42             }
43             putchar(10);
44             printf("请输入正整数,退出输入q:
");
45         }
46         getchar();//接收scanf读取失败的一个字符。
47         if(val<0)
48         {
49             printf("请输入正整数
");
50             goto gogogo;
51         }
52 */
53 /*
54 //方法二:用 do while +goto 实现
55     int val,r_digit;
56     val = 0;
57     printf("请输入正整数,退出输入q:
");
58 gogogo:    while(scanf("%d",&val) == 1&& val>0)
59         {
60             do
61             {
62                 r_digit = val%10;
63                 printf("%d",r_digit);
64                 val /=10;    
65             }while(val);
66             putchar(10);
67             printf("请输入正整数,退出输入q:
");
68         }
69         getchar();//接收scanf读取失败的一个字符。
70         if(val<0)
71         {
72             printf("请输入正整数
");
73             goto gogogo;
74         }
75 */
76 
77 /*
78 //第三题:百钱买百鸡的问题:        中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:
79 //          鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
80 //思路: i,j,k 分别代表鸡翁,鸡母,鸡雏。  
81 //        1.如果买最少 鸡雏最少买三只,其他都可以买一只 
82 //        2.如果买最多 全部买鸡翁 可买20只。全部买鸡母能买33只,余1钱。全部买而鸡雏最多可买100只(限制只能买百鸡)
83 //        3.确定好鸡翁和鸡母那么鸡雏的数量就确定了。所以有:k = 100-(i+j);
84 //        4.以上分析有等式 : 5*i+3*j+i/3 = 100(一共花100钱),i+j+k = 100(一共买100只鸡),k%3 == 0(鸡雏最少买三只)  这3个条件同时满足就是要的结果。
85     int i,j,k;
86     for(i = 0;i<=20;i++)
87     {
88         for(j = 0;j<=33;j++)
89         {
90             k = 100 -(i+j);
91             if(k%3 == 0 && 5*i+3*j+k/3 == 100&&i+j+k ==100)
92                 printf("%d,%d,%d
",i,j,k);
93         }
94     }
95 */                
96     return 0;
97 }
原文地址:https://www.cnblogs.com/wangchaomahan/p/9590284.html