《使用循环做一些练习》---C语言

news2024/11/19 9:24:27

 

目录

前言:

1.练习专题

1.1打印1-100之间的奇数

1.2计算n的阶乘

1.3计算到达n阶乘的前m个阶乘相加

1.4演示字符串动态变化的效果

2.goto语句


❤博主CSDN:啊苏要学习

  ▶专栏分类:C语言◀

  C语言的学习,是为我们今后学习其它语言打好基础,C生万物!

  开始我们的C语言之旅吧!✈

前言:

  学完知识后,需要我们动手敲上一敲代码,才能确保我们真正掌握了,而不是脑子会了,手还停留在原地不动


1.练习专题

1.1打印1-100之间的奇数

第一种方法:

#include <stdio.h>
int main()
{
    int i = 0;
    for(i = 1; i <= 100; i+=2)
    {
        printf("%d ", i);
    }
    return 0;
}

  在打印前之间主动避开偶数,打印的都是奇数了

第二种方法:

#include <stdio.h>
int main()
{
    int i = 0;
    for(i = 1; i <= 100; i++)
    {
        if(i%2 != 0)
        {
            printf("%d ", i);
        }
    }
    return 0;
}

  通过判断能否被2整除,不能被2整除就是奇数,进入if语句并打印出来

1.2计算n的阶乘

#include <stdio.h>
int main()
{
    int n = 0;
    int i = 0;
    int ret = 1;
    scanf("%d", &n);
    for(i = 1; i <= n; i++)
    {
        ret *= i;
    }
    return 0;
}

  使用n来表示我们要计算的阶乘,i是一个从数字1增到数字n的循环变量。将所有的i全面乘给ret变量,*=有一个累积效果,ret初始化成为了1,不影响乘的过程

1.3计算到达n阶乘的前m个阶乘相加

第一种:

  什么意思呢?比如:到达5!的前4个阶乘相加,也就是求1!+2!+3!+4!的和

#include <stdio.h>
int main()
{
    int i = 0;
    int n = 0;
    int j = 0;
    int ret = 1;
    int sum = 0;
    scanf("%d", &n);
    for(i = 1; i < n; i++)
    {
        ret = 1;
        for(j = 1; j <= i; j++)
        {
            ret *= j;
        }
        sum += ret;
    }
    return 0; 
}

  用n来确定是到达的阶乘,i < n的意思是,在到达n之前有多少个数i的循环内部j循环是根据i的值来求阶乘的比如:i等于1的时候,j这个循环求的是1的阶乘,然后累加到sum上;然后i变成2,j的循环此时求的是2的阶乘,累加到sum上;就这样循环下去,总共有n-1次循环,也就是从1到n-1的阶乘都加大sum上去啦

  注意:在每次i符合条件进去后,要把ret重新赋值成1,因为ret表示的是上一次的阶乘,不重新改成1会出错

  比如有次i是以3进入循环里面的,那么上一次就是在执行求2的阶乘加到sum里面去,ret *= j;随着j从1、然后2,累乘到ret上,ret最后变成了2,是2的阶乘如果下次求的是3的阶乘,ret里的2会影响的。就是这般  2 * 1 * 2 * 3 所以要赋值成1,变成 1 * 1 * 2 * 3才对

第二种:

#include <stdio.h>
int main()
{
    int i = 0;
    int n = 0;
    int ret = 1;
    int sum = 0;
    scanf("%d", &n);
    for (i = 1; i < n; i++)
    {
        ret *= i;
        sum += ret;
    }
    printf("%d", sum);
    return 0;
}

  我们可以很明显的感受到,上一种在求阶乘的时候有重复的部分。比如求2的阶乘,ret是这样的 1 * 1 * 2;求3的阶乘 ret是这样的 1 * 1 * 2 * 3;我们动动机智的头脑,叮~

  我们还可以这样来求3的阶乘,那就是用前一个数的阶乘 乘上 这个要求的阶乘的数; 就是3!= 2!* 3; 是不是茅舍顿开了

  当然最后还要提醒一点的是,求的阶乘不能太大,因为超出整型的存储范围后,会发生截断,求出来的值就不对了

1.4演示字符串动态变化的效果

#include <stdio.h>
#include <string.h>
#include <Windons.h>
int main()
{
    char arr1[] = "hello, welcom to C"
    char arr2[] = "******************"
    int left = 0;
    int right = strlen(arr1) - 1;
    
    while(left <= right)
    {
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        printf("%s", arr2);
        Sleep(1000);
        system("cls");
        left++;
        right--;
    }
    printf("%s\n", arr2);
    return 0;
}

  我们慢慢解析这道题,首先是创建两个长度一样数组,left是数字左下标的意思,right是右下标的意思。strlen求的是字符串长度,右下标是字符串长度减一,因为数组是从0下标开始的然后循环,将arr2的左边的字符赋值成arr1的左边字符,将arr2右边的字符赋值成arr1的右边字符,left++,让下标往右走,来到了字符e的位置,最开始是h。right减减同理滴,博主不赘述了~

  这里出现了Sleep函数,和system函数,它们的头文件都是<Windons.h>。Sleep是让程序停下来休息的意思,后面的数字是停下来的毫秒数system是执行系统指令的,cls是清空屏幕的指令,记得要用""双引号括起来

2.goto语句

  哈哈,没想到吧,这里来插个小知识点,goto语句的使用。C语言提供了一种可以随意滥用的语句,这是因为使用goto语句是没有限制的,它可以让程序的执行流程在同一个函数内随意跳当然我们只期望在需要使用的时候才使用,随意用逻辑会乱套的

  goto 标签; 

  标签:     就是语句的使用方法。我们可以看到它可以改变程序的执行流程。goto语句一般情况下都是可以用循环替代的。就比如说这个吧,我们完全可以用while(1)来替代goto实现死循环(doge)。 当然不是要让读者去写bug哈~

  那么我们来讲讲goto真正的应用场景吧,看下面代码:

  在深层循环嵌套里面,想跳出多层循环,需要使用多次break,不仅容易出错,还看的眼花缭乱的。这时使用goto语句就很好的避免了这种情况,这是goto的优点所在

  好啦,这篇文章就讲完啦。主要讲了几个练习,补充了一下goto语句的知识。下篇我们就使用所学的知识,完成一个猜数字游戏的小代码吧。


结语:希望读者读完有所收获!在学C的路上,祝福我们能越来越C!✔

  读者对本文不理解的地方,或是发现文章在内容上有误等,请在下方评论区留言告诉博主哟~,也可以对博主提出一些文章改进的建议,感激不尽!最后的最后!

  ❤求点赞,求关注,你的点赞是我更新的动力,一起努力进步吧。

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

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

相关文章

扬声器,打印机2键触摸VK3602K SOP8 2键2通道触摸检测芯片技术资料直接输出自动校准功能

型号&#xff1a;VK3602K 封装形式&#xff1a;SOP8 KPP2620 VK3602K具有2个触摸按键&#xff0c;可用来检测外部触摸按键上人手的触摸动作。该芯片具有较高的集成度&#xff0c;仅需极少的外部组件便可实现触摸按键的检测。 提供了2路直接输出功能,可通过IO脚选择输出电平。…

基于单片机的家庭防盗报警系统的设计与实现_kaic

基于单片机的家庭防盗报警系统 专业&#xff1a;物联网工程 摘要&#xff1a;本论文研究的是将AT89C52单片机芯片作为核心元器件的防盗报警系统,该系统除了具有直接报警的功能外,还额外增加了布防和红外感应的功能。和市场上的其他各类防盗报警器相比,该设计的不同之处在于它所…

KubeSphere 助力提升研发效能的应用实践分享

作者&#xff1a;卢运强&#xff0c;主要从事 Java、Python 和 Golang 相关的开发工作。热爱学习和使用新技术&#xff1b;有着十分强烈的代码洁癖&#xff1b;喜欢重构代码&#xff0c;善于分析和解决问题。原文链接。 我司从 2022 年 6 月开始使用 KubeSphere&#xff0c;到目…

开放原子训练营(第一季)铜锁探密:基于铜锁构建在线在线加密工具箱

基于铜锁构建Web在线加密工具库 搭建运行环境 实验⼿册中的实验都是以 docker 和 docker-compose 环境为主&#xff0c;基于 Ubuntu 20.04 容器镜像。 初始化项目 首先利用 IDE 创建一个 tongsuo_web 的空项目&#xff0c;接下来我们所有的文件都会创建在该项目中&#xff0…

AI如何帮助人类进而验证直觉的可靠性?

AI可以通过以下方式帮助人类寻找反例进行否定或寻找特别的架构&#xff1a; 1. 利用机器学习算法进行反例搜索。AI可以训练一个分类器&#xff0c;用于判断某个假设是否成立。通过反复训练和测试&#xff0c;AI可以识别出一些不合理的假设&#xff0c;并帮助人类进行进一步的验…

docker安装-顺利的安装docker--再也不烦心啦

centos7安装Docker全过程记录&#xff08;无坑版教程&#xff09; 一、安装前必读 在安装 Docker 之前&#xff0c;先说一下配置&#xff0c;我这里是Centos7 Linux 内核&#xff1a;官方建议 3.10 以上&#xff0c;3.8以上貌似也可。 注意&#xff1a;本文的命令使用的是 r…

004 鸿蒙应用开发-通知栏

目录 一.通知概述 通知简介 通知业务流程 广播的类型 接口说明 开发前期准备 二.发送普通文本类型通知 1.先初始化广播的请求request 2.然后发送广播 3.显示效果如下 三.发送长文本类型广播 1.构建发送广播的参数request 2.然后发送广播 3.显示效果如下 注意事项…

利用ArcGIS软件赋予tif影像空间参考坐标系

问题&#xff1a; 在处理数据时有一幅没有任何空间参考坐标信息的tif影像&#xff0c;实质上为一个照片。现在需要将其与一个有空间地理参考坐标信息的shp文件叠加在一起。如何解决这个问题呢&#xff1f; 已知信息&#xff1a; shp文件的空间地理参考 shp文件的边界与tif影像的…

CV中的注意力机制

注意力机制 计算机视觉中的注意力机制的基本思想 就是想让系统学会注意力 &#xff0c;能够忽略无关信息&#xff0c;关注重点信息。 1. 硬注意力机制&#xff08;Hard/Local Attention&#xff09; 对每个输入项分配的权重非0即1&#xff0c;和软注意不同&#xff0c;硬注…

Sentence Bert 阅读笔记

Sentence Bert 阅读笔记 论文 https://arxiv.org/abs/1908.10084 Supervised / Unsupervised / Semi-supervised 从训练上看&#xff0c;是 Supervised / Unsupervised 两种结合 Model Structure 本文提出了两个architecture&#xff0c;一个用于文本的分类&#xff0c;一…

【Python基础绘图】自定义函数,一键标注相关性热力图的显著性

相关性热力图标自动注显著性 01 引言 很早之前其实就写过一篇博客【python相关性热力图自动标记显著性】介绍如何在相关性热力图上自动标注显著性&#xff0c;不过收到好多同学私信问我数据源是啥样的&#xff0c;怎么计算的啊等等问题。所以今天打算重新写篇&#xff0c;并附…

【github开源】Linux iptables 界面化 分布式 管理平台 go vue,底座firewalld

快速部署&#xff1a;Uranus 目前最优的firewalld前端 如果你觉得项目符合你的使用场景, 劳烦大佬点个 &#x1f31f;&#x1f31f;&#x1f31f; 吧!!! 好人一生平安!!! Uranus Gateway Uranus使命是将iptables转化为类安全组功能的一个工具 Uranus Gateway 是一个分布式管…

Android Studio添加EasyPemissions

问题描述 按照EasyPermissions主页描述的那样添加完依赖后&#xff0c; 在程序中使用还是报错&#xff1a; Failed to resolve: pub.devrel:easypermissions:0.3.0 解决方法 首先&#xff0c;EasyPemissions属于别人的开源库&#xff0c;我们想使用的话&#xff0c;必须让…

RHCE(shell第二次)

1.编写脚本for1.sh,使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入&#xff0c;例如: test1、test2、test3、.....、 test10 创建脚本for1 [rootserver ~]# vim xixi.sh 测试 2.编写脚本for2.sh,使用for循环,通过ping命令测…

中创AI|政治、工作、娱乐,ChatGPT正逐步影响我们的社会生产生活!

“作为政策官员&#xff0c;我们所做的一切&#xff0c;无论是编写会议记录还是批准预算文件&#xff0c;只是为了调动资源来解决一个常见问题。一旦我们从这个角度看待自己&#xff0c;ChatGPT就会成为推动者&#xff0c;而不是破坏者。” ——新加坡政府官员 ChatGPT可被广…

LC-1105. 填充书架(记忆化搜索 ==> 动态规划)

1105. 填充书架 难度中等169 给定一个数组 books &#xff0c;其中 books[i] [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。 按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。 先选几本书放在书架上&#xff08;它们的厚度之和…

ajax写法和json的知识点

1. JQuery方式来实现AJAX 1.1 $.ajax()方式来实现AJAX 语法&#xff1a;$.ajax(url,[settings]);但是我们一般这么写$.ajax({键值对});。 $.ajax()来实现ajax的案例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"…

consul集群搭建教程 - 多机集群

简言 1. 使用consul单节点有宕机&#xff0c;数据丢失的风险&#xff0c;为了安全&#xff0c;使用consul集群更靠谱 2. consul的各个版本下载地址在 Consul Versions | HashiCorp Releases 3. 本文使用consul的版本是consul1.15.1&#xff0c;所以请下载名字为 consul_1.15…

GitHub开源神器,已获3k star!让你的 ChatGPT 不再报错!感受丝滑般体验!

点击上方“Github爱好者社区”&#xff0c;选择星标 回复“资料”&#xff0c;获取小编整理的一份资料 作者&#xff1a;GG哥 来源&#xff1a;GitHub爱好者社区&#xff08;github_shequ&#xff09; 这是GitHub爱好者社区第 71 篇原创文章 Hello&#xff0c;大家好&#xff0…

基于springboot的大学生租房系统源码论文数据库

3.1系统功能 现在无论是在PC上还是在手机上&#xff0c;相信全国所有地方都在进行大学生租房管理。随着经济的不断发展&#xff0c;系统管理也在不断增多&#xff0c;大学生租房系统就是其中一种&#xff0c;很多人会登录到相关的租房系统查看租房信息&#xff0c;还能查看房屋…