C语言成长学习题(九)

三十六、输出所有两位素数,要求一行输出15个素数。

 1 #include <stdio.h>
 2 #include <math.h>
 3 
 4 void main(void)
 5 {
 6     int a, i, end, n = 0;
 7     
 8     for (a = 10; a <= 99; a++)
 9     {
10         end = sqrt(a);
11         for (i = 2; i <= end; i++)
12             if (a % i == 0) break;
13         if ( i > end)
14         {
15             printf("%4d", a);
16             n++;
17             if (n % 15 == 0)
18                 printf("
");
19         }
20     }
21     printf("
");
22 }

 结果:

11  13  17  19  23  29  31  37  41  43  49  53  59  61  67

71  73  79  83  89  97

三十七、打印1000以内所有“水仙花数”(abc = a3 + b3 + c3)。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int a, b, c, x;
 6     
 7     printf("1000以内所有的水仙花数是: ");
 8     for (x = 100; x <= 999; x++)
 9     {
10         a = x / 100;
11         b = x / 10 - a * 10;
12         c = x % 10;
13         if (x == a * a *a + b * b * b + c * c * c)
14             printf("%5d", x);
15     }
16     printf("
");
17 }

结果:

1000以内所有的水仙花数是:153 370 371 407

三十八、猴子吃桃子问题。猴子第1天摘下若干个桃子,猴子当天吃了一半后又再吃1个,从第2天起猴子每天都是吃了前一天剩下的一半多1个桃子。到第10天猴子想吃桃子的时候发现只剩下1个桃子,请计算猴子第1天共摘了多少个桃子。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int day, n1, n2;
 6     
 7     for (day = 10, n2 = 1; day >=1; day--)
 8     {
 9         n1 = (n2 + 1) * 2;
10         n2 = n1;
11     }
12     printf("第一天摘的桃子总数为: %d
", n1);
13 }

结果:

第一天摘的桃子总数为: 3070

三十九、编写程序,求s=a+aa+aaa+...+aaaa..aaa(n个a)的值。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int n, i;
 6     long a, s = 0, t = 0;
 7 
 8     printf("Input value of a and n: ");
 9     scanf("%ld%d", &a, &n);
10     for (i = 1; i <= n; i++)
11     {
12         t = t + a;
13         s = s + t;
14         a = a * 10;
15     }
16     printf("%ld +%ld%ld+%d%ld%ld+... = %ld
", a, a, a, a, a, a, s);
17 }

 结果:

Input value of a and n: 3 6

3+33+333+... = 370368

四十、编写程序,从键盘输入两个正整数分别存放在a和b中,用”辗转相除法“求它们的最大公约数。

 1 #include <stdio.h>
 2 
 3 void main(void)
 4 {
 5     int a, b, r;
 6 
 7     printf("请输入正整数a和b的值: ");
 8     scanf("%d%d", &a, &b);
 9     if (a < b)
10     {
11         r = a;
12         a = b;
13         b = r;
14     }
15     r = a % b;
16     while (r != 0)
17     {
18         a = b;
19         b = r;
20         r = a % b;
21     }
22     printf("a和b的最大公约数: %d
", b);
23 }
原文地址:https://www.cnblogs.com/zero-jh/p/5024862.html