C语言基础习题50例(五)21-25

CuterCorley
• 阅读 1185

你不得不学的职场高效表达训练https://www.bilibili.com/audio/am30872653,需要的朋友自取哟。

习题21

猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少。

实现思路: 采用逆向思维进行反推。

代码如下:

#include<stdio.h>

int main(){
    int sum = 1, i;
    for(i = 10; i > 1; i--){
        sum += 1;
        sum *= 2;
    }
    printf("Sum = %d\n", sum);

    return 0;
}

打印:

Sum = 1534

习题22

两个乒乓球队进行比赛,各出三人,甲队为 a、b、c 三人,乙队为 x、y、z 三人。已抽签决定比赛名单,有人向队员打听比赛的名单,a 说他不和 x 比, c 说他不和 x、z 比,请编程序找出三对赛手的名单。

实现思路: 多层循环嵌套,遍历并判断。

代码如下:

#include<stdio.h>

int main(){
    char a, b, c;
    for(a = 'x'; a <= 'z'; a++){
        for(b = 'x'; b <= 'z'; b++){
            for(c = 'x'; c <= 'z'; c++){
                if(a != b && b!= c && a != c){
                    if(a != 'x' && c != 'x' && c != 'z'){
                        printf("a-%c\nb-%c\nc-%c\n", a, b, c);
                    }
                }
            }             
        }
    }

    return 0;
}

打印:

a-z
b-x
c-y

习题23

打印出如下图案(菱形): C语言基础习题50例(五)21-25

实现思路: 方式一——分成两部分: 先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。 代码如下:

#include<stdio.h>

int main(){
    int i, j;
    for(i = 0; i < 4; i++){
        for(j = 0; j < 3 - i; j++){
            printf(" ");
        }
        for(j = 0; j < 2 * i + 1; j++){
            printf("*");
        }
        printf("\n");
    }
    for(i = 0; i < 3; i++){
        for(j = 0; j <= i; j++){
            printf(" ");
        }
        for(j = 0; j < 5 - 2 * i; j++){
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

打印:

   *
  ***
 *****
*******
 *****
  ***
   *

方式二——看成一个整体: 用一个遍历来控制,使之成为一个整体,循环打印。

代码如下:

#include<stdio.h>
#include <math.h>

int main(){
    int i, j;
    for(i = -3; i < 4; i++){
        for(j = 0; j < abs(i); j++){
            printf(" ");
        }
        for(j = 0; j < 7- 2 * abs(i); j++){
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

效果与前面相同。

习题24

有一分数序列:2/1、3/2、5/3、8/5、13/8、21/13... 求出这个数列的前20项之和。

显然,这个数列每个元素的分子和分母构成了斐波拉契数列,可循环求和。

代码如下:

#include<stdio.h>

int main(){
    float sum = 0, f1 = 1, f2 = 1, i, temp;
    for(i = 0; i < 20; i++){
        temp = f2;
        f2 += f1;
        f1 = temp;
        sum += f2 / f1;
    }
    printf("Sum = %8.4f\n", sum);

    return 0;
}

打印:

Sum =  32.6603

习题25

求1+2!+3!+...+20!的和。

实现思路: 使用循环求和。

代码如下:

#include<stdio.h>

int main(){
    float i, t = 1, sum = 0;
    for(i = 1; i < 21; i++){
        t *= i;
        sum += t;
    }
    printf("Sum = %.2f\n", sum);

    return 0;
}

打印:

Sum = 2561327455189073900.00

本文原文首发来自博客专栏C语言实战,由本人转发至https://www.helloworld.net/p/epbUXQigAFK7,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/106518425查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
5个月前
webpack5手撸vue2脚手架
webpack5手撸vue相信工作个12年的小伙伴们在面试的时候多多少少怕被问到关于webpack方面的知识,本菜鸟最近闲来无事,就尝试了手撸了下vue2的脚手架,第一次发帖实在是没有经验,望海涵。languageJavaScript"name":"vuecliversion2","version":"1.0.0","desc
浅梦一笑 浅梦一笑
5个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
技术小男生 技术小男生
5个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
小森森 小森森
5个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
Stella981 Stella981
1年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
1年前
C# Aspose.Cells导出xlsx格式Excel,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
报错信息:最近打开下载的Excel,会报如下错误。(xls格式不受影响)!(https://oscimg.oschina.net/oscnet/2b6f0c8d7f97368d095d9f0c96bcb36d410.png)!(https://oscimg.oschina.net/oscnet/fe1a8000d00cec3c
Stella981 Stella981
1年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
1年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
1年前
Nginx反向代理upstream模块介绍
!(https://oscimg.oschina.net/oscnet/1e67c46e359a4d6c8f36b590a372961f.gif)!(https://oscimg.oschina.net/oscnet/819eda5e7de54c23b54b04cfc00d3206.jpg)1.Nginx反