每日练习---C语言

news2024/11/25 6:30:17

目录

前言:

1.打印菱形

1.1补充练习 

2.打印水仙花

2.1补充训练


前言:

  记录博主做题的收获,以及提升自己的代码能力,今天写的题目是:打印菱形、打印水仙花数

1.打印菱形

  我们先看到牛客网的题:OJ链接 

  题目解析:多组输入一个值(我们用n来控制)用来控制菱形的打印。

  思路将最长一行的之上的看成是上半部分,包括最长一行在内的之下划为下半部分上部分是n行,有n列,每一列由空格和星号组成,空格减少,星号增多;下半部分是n+1行,有n+1列,空格增多,星号减少

#include <stdio.h>

int main()
{
    int n = 0;
    //1.多组输入
    while(scanf("%d", &n) != EOF)
    {
        //i控制行
        int i = 0;
        //2.打印上半部分
        for(i = 0; i < n; i++)
        {
            int j = 0;
            //2.1打印对应行的空格列
            for(j = 0; j < n - i; j++)
            {
                printf(" ");
            }
            //2.2打印对应行的星号列
            for(j = 0; j <= i; j++)
            {
                printf("* ");
            }
            printf("\n");//一列打印完换行
        }
        //3.打印下半部分
        for(i = 0; i < n + 1; i++)
        {
            int j = 0;
            for(j = 0; j < i; j++)
            {
                printf(" ");
            }
            for(j = 0; j < n + 1 - i; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;    
}

1.1补充练习 

  打印出下面的图案:

  还是一样的思路,分为上半部分和下半部分,上面有6行,那我们输入的时候就把n输进去一个6,下半部分是7行,也就是n+1。 

#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    for(i = 0; i < n; i++)
    {
        int j = 0;
        for(j = 0; j < n - i; j++)
        {
            //看图会发现是两个空格
            printf("  ");
        }
        //第一次是1个,后面每次增加2
        //i一开是为0,没往下一行,就多打印两个*
        for(j = 0; j < 1 + 2 * i; j++)
        {
            printf("* ");
        }
        printf("\n");
    }
    for(i = 0; i < n + 1; i++)
    {
        int j = 0;
        for(j = 0; j < i; j++)
        {
            printf("  ");
        }
        //7行打印13个 2*n+2是14,减去1等于13,刚好
        //对于下半部分,第一行i为0不减,没往下一行,就多减2个星号的打印
        for(j = 0; j < 2*n + 2 - 1 - 2*i; j++)
        {
            printf("* ");
        }
        printf("\n");
    }
    return 0;
}

  相信看完后,读者对循环的掌控可以更如鱼得水一点~

2.打印水仙花

  水仙花数的定义有一个n位数,它的每一位数的n次方之和等于它本身。例如153这个数字:153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27。

  我们先看到牛客网的题:OJ链接

  题目的意思是说多组输入两个整数m和n;输出在m和n范围内的水仙花数,并且用空格隔开。水仙花在范围内[m,n],我们遍历的时候,是就打印,不是就跳过,水仙化数自然是从小到大排列的

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

int main()
{
    int m, n;
    int flag = 1;
    //1.多组输入
    while(scanf("%d%d", &m, &n) != EOF)
    {
        //2.创建i,并用i遍历区间[m,n]
        int i = 0;
        for(i = m; i <= n; i++)
        {
            //3.用k当做i的副本使用,不要在循环内改变循环变量i
            int k = i;
            int sum = 0;
            while(k)
            {
                //题目已知是三位数,用3直接当做次方
                sum += pow(k%10, 3);
                k /= 10;
            }
            //4.如果加起来的sum等于i,就是水仙花数
            if(sum == i)
            {
                printf("%d ", i);
                //有打印,就把flag改成0
                flag = 0;
            }
        }
        //5.如果全部遍历完,没有打印出一个水仙花,flag没有被改成0
        //就在这里打印出no
        if(flag)
        {
            printf("no");
        }
    }
}

  解释看到第3步骤,假设k是123,进入循环,k取模上10得到3,pow(3, 3)是3的3次方,然后k /= 10,123除以10商12,把12赋值给了k接着循环,直到k /= 10把商为0赋值给k,循环结束

  补充注意sum要定义在for循环内,不能定义在for循环外,这样sum在每次重新判断一个数是不是水仙数的时候,都会带着上次求的sum值或者定义在外面,每次for循环重新赋值成0

2.1补充训练

  打印0-100000(十万)之间的水仙花数

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

int main()
{
    int i = 0;
    for(i = 0; i < 100000; i++)
    {
        //1.求i的几位数的
        int n = 1;
        int m = i;
        while(m/=10)
        {
            n++
        }
        //2.求每一位数的n次阶乘之和
        m = i;
        int sum = 0;
        while(m)
        {
            sum = pow(m%10, n);
            m /= 10;
        }
        //3.判断sum等不等于i
        if(sum == i)
        {
            printf("%d ", i);
        }
    }
    return 0;
}

  解释求i是几位数的时候,n从1开始是因为,假设我们此时i是12,m被初始化为12,m/10会以1的值进入循环,并被赋值成1,然后n++一次;接着m/10为商0余1,进不去循环了,如果一开始我们的n是从0开始的,那么只经过一次n++,n为1,实际上i是两位数所以n一开始设成1,这是因为无论是什么数,一开始都有一位数

  总结多组输入的方法、控制循环的训练、将一个整数一个一个剥离下来的方法以及锻炼手敲代码的能力和不怕出错进行调试的抗压心态

  希望大家读完,可以自己找到题目实现一遍,祝读者们有所收获。(喜欢的话麻烦留个小赞再走呗)!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/548927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用ChatGPT编写Excel公式,对比讯飞星火与ChatGPT对Excel公式的回答

系列文章目录 借助国内ChatGPT平替MindShow&#xff0c;飞速制作PPT 借助国内ChatGPT平替markmap/Xmind飞速生成思维导图 借助国内ChatGPT平替剪映/百度AIGC平台快速制作短视频 文章目录 系列文章目录前言一、利用ChatGPT编写Excel公式1.描述我们想实现的Excel公式&#xff…

四、医院模块开发

文章目录 一、医院模块开发1、搭建医院模块service-hosp1.1搭建service-hosp1.2修改配置1.3 添加启动类 2、添加医院设置CURD2.1 添加model2.2 添加Mapper2.3 添加service接口及实现类2.4 添加controller2.5 医院设置CRUD2.6 添加controller方法 3、Swagger2介绍与集成4、医院锁…

【Python beautiful soup】如何用beautiful soup 解析HTML内容

美丽汤&#xff08;Beautiful Soup&#xff09;是一个流行的Python库&#xff0c;用于从HTML或XML文件中提取数据。它将复杂的HTML文件转化为一个Python对象&#xff0c;使得用户可以更方便地解析、搜索和修改HTML内容。本文将介绍如何使用Beautiful Soup解析HTML内容&#xff…

数据的家——MySQL的数据目录

之前学过了行格式&#xff0c;在往上面是页&#xff0c;最上层的也就学到了页。 现在的数据目录是什么&#xff1f;这之间有什么关系呢&#xff1f;带着这个问题&#xff0c;来继续学习。 数据库和文件系统的关系是什么&#xff1f; InnoDB和MyISAMy 是把表存储在磁盘上面的…

【计算机网络之HTTP篇】HTTPS与HTTP的区别

目录 HTTPS产生的原因 HTTPS工作原理 对称加密 非对称加密 引入数字证书 HTTPS完整工作流程 高频面试题&#xff1a;HTTPS与HTTP的区别 HTTPS产生的原因 HTTP协议是按照文本的形式来明文传递数据的&#xff0c;因此数据很容易被黑客劫持&#xff0c;发生泄密可能。 HTTP…

AlmaLinux 8.8 发布 - RHEL 下游免费发行版(CentOS 稳定版的替代品)

AlmaLinux 8.8 发布 - RHEL 下游免费发行版&#xff08;CentOS 稳定版的替代品&#xff09; AlmaLinux OS 是一个开源、社区驱动的项目&#xff0c;旨在提供 CentOS 稳定版的替代品。 请访问原文链接&#xff1a;https://sysin.org/blog/almalinux-8/&#xff0c;查看最新版。…

Linux系统编程——多线程[补充]:懒汉模式自旋锁读者写者问题

0.关注博主有更多知识 操作系统入门知识合集 目录 1.单例设计模式 1.1将线程池设计为懒汉方式实现的单例模式 1.2线程安全版本的懒汉方式 2.STL、智能指针与线程安全 3.自旋锁 4.读者写者问题 1.单例设计模式 在一些软件设计场景当中&#xff0c;要求某些类只能具有一…

五一后“实在高校行”紧锣密鼓走进四所高校,校企合作硕果累累!

近年来&#xff0c;随着人工智能科技的快速发展&#xff0c;越来越多高校加快了与先进企业在培养优秀人才的合作步伐。实在智能一直注重校园生态发展及在人才培养&#xff0c;不断引进数字化人才&#xff0c;做强培训师资&#xff1b;同时积极走出去&#xff0c;在全社会范围内…

2023-05-20:go语言的slice和rust语言的Vec的扩容流程是什么?

2023-05-20&#xff1a;go语言的slice和rust语言的Vec的扩容流程是什么&#xff1f; 答案2023-05-20&#xff1a; go语言的slice扩容流程 go版本是1.20.4。 扩容流程见源码见runtime/slice.go文件中的growslice 函数。 growslice 函数的大致过程如下&#xff1a; 1.如果元…

Mybatis Plus之DQL(条件查询方式、查询投影、查询条件设定、字段映射与表名映射)

文章目录 1 条件查询1.1 条件查询的类1.2 环境构建1.3 构建条件查询1.4 多条件构建1.5 null判定 2 查询投影2.1 查询指定字段2.2 聚合查询2.3 分组查询 3 查询条件3.1 等值查询3.2 范围查询3.3 模糊查询3.4 排序查询 4 映射匹配兼容性问题1:表字段与编码属性设计不同步问题2:编…

你真的知道怎么使用vs吗?把把手教你实用调试小技巧

实用调试小技巧 1.什么是bug&#xff1f;2.调试是什么&#xff1f;有多重要&#xff1f;3.debug和release的介绍。4.windows环境调试介绍。4.1常见调试快捷键4.2 调试的时候查看程序当前信息4.2.1监视&#xff1a;4.2.2内存4.2.3调用堆栈4.2.4反汇编4.2.5寄存器 5.一些调试的实…

HNU-计算机系统-实验4-ShellLab

ShellLab 计科2102 梅炳寅 202108010206 写在前面 作为一份实验报告,我希望阅读者能够比较好地看到这份报告有价值的部分。私以为更为有价值的部分体现在: 报告中打★的部分,最后的代码中,我在代码中加入了大量的中文注释、函数原型、参数解读、以及个人对代码的推断与理…

网易云音乐开发--音乐播放暂停切换上下首功能实现

音乐播放暂停功能实现 封装一个控制音乐播放/暂停的功能函数 看一下文档&#xff0c;我需要用的api 这个接口好像没有音频的url&#xff0c;查看一下&#xff0c;换个api 这样就能拿到id&#xff0c;并可以播放了 但是音乐并没有播放 我们少了这个 现在可以播放了&#xff…

[CTF/网络安全] 攻防世界 view_source 解题详析

[CTF/网络安全] 攻防世界 view_source 解题详析 查看页面源代码方式归类总结 题目描述&#xff1a;X老师让小宁同学查看一个网页的源代码&#xff0c;但小宁同学发现鼠标右键好像不管用了。 查看页面源代码方式归类 单击鼠标右键&#xff0c;点击查看页面源代码&#xff1a; …

Linux 指令(三)+完整思维导图+实图例子+深入细节+通俗易懂建议收藏

绪论 涓滴之水终可磨损大石&#xff0c;不是由于它的力量强大&#xff0c;而是由于昼夜不舍的滴坠。今天我们继续学习Linux指令。 话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑观看&#xff09;。 附&#xff1a;红色&#xff0c;部分为重点部分&#xff1b;蓝颜…

由斯坦福、Nautilus Chain等联合主办的 Hackathon 活动,现已接受报名

由 Stanford Blockchain Accelerator、Zebec Protocol、 Nautilus Chain、Rootz Lab 共同主办的黑客松活动&#xff0c;现已接受优秀项目提交参赛申请。 在加密行业发展早期&#xff0c;密码极客们就始终在对区块链世界基础设施&#xff0c;在发展方向的无限可能性进行探索。而…

四、easyUI中的tabs(选项卡)组件

1.tabs&#xff08;选项卡&#xff09;组件的概述 选项卡会显示一批面板&#xff0c;但在同一个时间只会显示一个面板。每个选项卡面板都有头标题和一些小的按钮工具菜单&#xff0c;包括关闭按钮和其他自定义按钮。 2.tabs&#xff08;选项卡&#xff09;组件的使用 在项目新…

【C++】——内存管理(new和delete)

文章目录 1. 前言2. C/C内存分布3. C语言动态内存管理方式4. C内存管理方式4.1 内置类型4.2 自定义类型 5. operator new与operator delete函数6. new和delete的实现原理7. 定位new表达式(placement-new)8. 结尾 1. 前言 在学习C语言的时候&#xff0c;我们学习了动态内存管理…

物联网协议之MQTT

MQTT 简介 MQTT 可以简单看做一个网络协议&#xff0c;用于机器对机器的通信&#xff08;与客户端到服务器的传输有点区别&#xff09;。智能传感器、可穿戴设备和其他物联网&#xff08;IoT&#xff09;设备通常必须通过带宽有限的资源受限网络传输和接收数据。这些物联网设…

更新cuda和 pytorch==1.12.1版本,更新到cuda11.3.1

nvidia-smi 查看gpu支持的最高cuda版本 nvcc -V 查看当前cuda版本 卸载旧版本cuda 除了NVIDIA Geforce、NVIDIA PhysX、NVIDIA图形驱动程序&#xff0c;将电脑中其他NVIDIA开头的全部卸载 安装cuda 下载适合的cuda版本 https://developer.nvidia.com/cuda-toolkit-ar…