你不得不学的职场高效表达训练https://www.bilibili.com/audio/am30872653,需要的朋友自取哟。
习题21
猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少。
实现思路: 采用逆向思维进行反推。
代码如下:
1#include<stdio.h> 2 3int main(){ 4 int sum = 1, i; 5 for(i = 10; i > 1; i--){ 6 sum += 1; 7 sum *= 2; 8 } 9 printf("Sum = %d\n", sum); 10 11 return 0; 12}
打印:
1Sum = 1534 2
习题22
两个乒乓球队进行比赛,各出三人,甲队为 a、b、c 三人,乙队为 x、y、z 三人。已抽签决定比赛名单,有人向队员打听比赛的名单,a 说他不和 x 比, c 说他不和 x、z 比,请编程序找出三对赛手的名单。
实现思路: 多层循环嵌套,遍历并判断。
代码如下:
1#include<stdio.h> 2 3int main(){ 4 char a, b, c; 5 for(a = 'x'; a <= 'z'; a++){ 6 for(b = 'x'; b <= 'z'; b++){ 7 for(c = 'x'; c <= 'z'; c++){ 8 if(a != b && b!= c && a != c){ 9 if(a != 'x' && c != 'x' && c != 'z'){ 10 printf("a-%c\nb-%c\nc-%c\n", a, b, c); 11 } 12 } 13 } 14 } 15 } 16 17 return 0; 18}
打印:
1a-z 2b-x 3c-y 4
习题23
打印出如下图案(菱形):
实现思路: 方式一——分成两部分: 先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。 代码如下:
1#include<stdio.h> 2 3int main(){ 4 int i, j; 5 for(i = 0; i < 4; i++){ 6 for(j = 0; j < 3 - i; j++){ 7 printf(" "); 8 } 9 for(j = 0; j < 2 * i + 1; j++){ 10 printf("*"); 11 } 12 printf("\n"); 13 } 14 for(i = 0; i < 3; i++){ 15 for(j = 0; j <= i; j++){ 16 printf(" "); 17 } 18 for(j = 0; j < 5 - 2 * i; j++){ 19 printf("*"); 20 } 21 printf("\n"); 22 } 23 24 return 0; 25}
打印:
1 * 2 *** 3 ***** 4******* 5 ***** 6 *** 7 * 8
方式二——看成一个整体: 用一个遍历来控制,使之成为一个整体,循环打印。
代码如下:
1#include<stdio.h> 2#include <math.h> 3 4int main(){ 5 int i, j; 6 for(i = -3; i < 4; i++){ 7 for(j = 0; j < abs(i); j++){ 8 printf(" "); 9 } 10 for(j = 0; j < 7- 2 * abs(i); j++){ 11 printf("*"); 12 } 13 printf("\n"); 14 } 15 16 return 0; 17}
效果与前面相同。
习题24
有一分数序列:2/1、3/2、5/3、8/5、13/8、21/13... 求出这个数列的前20项之和。
显然,这个数列每个元素的分子和分母构成了斐波拉契数列,可循环求和。
代码如下:
1#include<stdio.h> 2 3int main(){ 4 float sum = 0, f1 = 1, f2 = 1, i, temp; 5 for(i = 0; i < 20; i++){ 6 temp = f2; 7 f2 += f1; 8 f1 = temp; 9 sum += f2 / f1; 10 } 11 printf("Sum = %8.4f\n", sum); 12 13 return 0; 14}
打印:
1Sum = 32.6603 2
习题25
求1+2!+3!+...+20!的和。
实现思路: 使用循环求和。
代码如下:
1#include<stdio.h> 2 3int main(){ 4 float i, t = 1, sum = 0; 5 for(i = 1; i < 21; i++){ 6 t *= i; 7 sum += t; 8 } 9 printf("Sum = %.2f\n", sum); 10 11 return 0; 12}
打印:
1Sum = 2561327455189073900.00 2
本文原文首发来自博客专栏C语言实战,由本人转发至https://www.helloworld.net/p/epbUXQigAFK7,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/106518425查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

