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:\n");
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:\n");
45 }
46 getchar();//接收scanf读取失败的一个字符。
47 if(val<0)
48 {
49 printf("请输入正整数\n");
50 goto gogogo;
51 }
52 */
53 /*
54 //方法二:用 do while +goto 实现
55 int val,r_digit;
56 val = 0;
57 printf("请输入正整数,退出输入q:\n");
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:\n");
68 }
69 getchar();//接收scanf读取失败的一个字符。
70 if(val<0)
71 {
72 printf("请输入正整数\n");
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\n",i,j,k);
93 }
94 }
95 */
96 return 0;
97 }