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

这篇具有很好参考价值的文章主要介绍了《使用循环做一些练习》---C语言。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

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,因为如果不重新赋值为0,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语句是没有限制的,它可以让程序的执行流程在同一个函数内随意跳当然我们只期望在需要使用的时候才使用,随意用的话逻辑会乱套的

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

  goto 标签; 

  标签:     

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

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

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

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

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


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

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

  ❤求点赞,求关注,你的点赞是我更新的动力,一起努力进步吧。文章来源地址https://www.toymoban.com/news/detail-427687.html

到了这里,关于《使用循环做一些练习》---C语言的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言初阶(5)】循环练习题

    阶乘 某个数从 1 开始一直乘到这个数本身为止; 例如:3 的阶乘就是 1 * 2 * 3 = 6; n 的阶乘就是 1 * 2 * 3 … * n。 解题思路 如果想要阶乘到 n 的话,就要产生 1-n 的数字,此时就需要用到循环。 通过循环产生 1-n 的数字,然后把这些数字累积乘到一个数上。 代码实现 解题思路

    2024年02月11日
    浏览(47)
  • C语言循环练习题(共23题)

    2024年01月12日
    浏览(42)
  • 【PTA-C语言】编程练习3 - 循环结构Ⅱ

    如果代码存在问题,麻烦大家指正 ~ ~ 有帮助麻烦点个赞 ~ ~ 给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。 输入格式: 输入在一行中给出不超过9的正整数a和n。 输出格式: 在一行中按照“s = 对应的和”的格式输出。 输入样例: 输出样例:

    2024年02月03日
    浏览(50)
  • C语言之分支与循环【附6个练习】

    C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、

    2024年02月03日
    浏览(33)
  • 【C语言】【典例详解】【刷题】猜名次&&猜凶手【循环练习】

    目录 猜名次问题 典例题目 题目分析: 代码实现: 运行结果: 猜凶手问题  典例题目 题目分析 代码实现: 运行结果: 猜名次: 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果: A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二;

    2024年02月07日
    浏览(36)
  • 【C语言】| 简单循环练习——九九乘法表(五种格式)

    目录 一、乘法表的格式 二、分析、代码 1.乘法表——中间 2.乘法表——左下  3.乘法表——左上  4.乘法表——右下 5.乘法表——右上 乘法表的形式有很多种,比如说……这种、这种、这种、这种……一共五种。 (左下) (左上) (右下)  (右上)  (正中间)    写出

    2024年02月05日
    浏览(58)
  • 《Git入门实践教程》前言+目录

    版本控制系统(VCS)在项目开发中异常重要,但和在校大学生的交流中知道,这个重要方向并未受到重视。具备这一技能,既是项目开发能力的体现,也可为各种面试加码。在学习体验后知道,Git多样化平台、多种操作方式、丰富的资源为业内人士提供了方便的同时,也造成

    2024年02月10日
    浏览(68)
  • FPGA学习实践之旅——前言及目录

    很早就有在博客中记录技术细节,分享一些自己体会的想法,拖着拖着也就到了现在。毕业至今已经半年有余,随着项目越来越深入,感觉可以慢慢进行总结工作了。趁着2024伊始,就先开个头吧,这篇博客暂时作为汇总篇,记录在这几个月以及之后从FPGA初学者到也算有一定

    2024年02月03日
    浏览(55)
  • Python---练习:使用for循环嵌套实现打印九九乘法表

    思考: 外层 循环主要用于控制循环的 行数 , 内层 循环用于控制 列数。 基本语法: 序列1  序列2 ,就可以是range(1, 10)   -----也就是从1,到9。 参考while循环: 相关链接Python---练习:使用while嵌套循环打印 9 x 9乘法表-CSDN博客 最终代码:

    2024年02月08日
    浏览(38)
  • Python--练习:使用while循环求1~100之间,所有偶数的和(涉及if判断是不是偶数)

    案例: 求1~100之间,所有偶数的和 思考: 先套用原有 基础模式 ,之后再思考其他的。 其实就是在之前文章 Python--练习:使用while循环求1..100的和-CSDN博客 的基础上,再判断如果获取到里面的全部偶数,相加就行了。 while循环的基本语法: 对于循环 次数已知 的情况,建议

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包