每日练习---C语言

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

目录

前言:

1.打印菱形

1.1补充练习 

2.打印水仙花

2.1补充训练


前言:

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

1.打印菱形

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

每日练习---C语言

  题目解析:多组输入一个值(我们用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补充练习 

  打印出下面的图案:

每日练习---C语言

  还是一样的思路,分为上半部分和下半部分,上面有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;
}

每日练习---C语言

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

2.打印水仙花

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

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

每日练习---C语言

  题目的意思是说多组输入两个整数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);
            sum += pow(m%10, n);//感谢www博主慧眼指错
            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,这是因为无论是什么数,一开始都有一位数

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

  希望大家读完,可以自己找到题目实现一遍,祝读者们有所收获。(喜欢的话麻烦留个小赞再走呗)!文章来源地址https://www.toymoban.com/news/detail-454697.html

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

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

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

相关文章

  • Go语言之函数补充defer语句,递归函数,章节练习

    defer语句是go语言提供的一种用于注册延迟调用的机制,是go语言中一种很有用的特性。 defer语句注册了一个函数调用,这个调用会延迟到defer语句所在的函数执行完毕后执行,所谓执行完毕是指该函数执行了return语句、函数体已执行完最后一条语句或函数所在协程发生了恐慌

    2024年02月17日
    浏览(47)
  • 用python打印菱形

    打印菱形是一个循环嵌套问题,首先要明白内层循环和外层循环分别控制什么。 首先要确定菱形的宽度,将菱形分为上下两个三角形。 然后在确定菱形需要几行,每一行菱形数量与行数对应。 由于range取值是左闭右开,所以要x+1。 内循环控制空格的数量。 与上半给三角形相

    2024年02月13日
    浏览(39)
  • python打印菱形

    打印菱形 方法一: 效果:   方法二: 打印 空心菱形 需要加上if else 语句 其他代码和打印菱形相同 效果:  打印此图形重点在于打印对角线 需要在if条件原有的基础上加上相应条件 (i == layer//2+1 or j == i )   效果:  

    2024年02月08日
    浏览(34)
  • 用python打印出菱形图案

    你可以使用Python编写一个简单的函数来打印菱形图案。下面是一个例子,这个函数接受一个参数 n ,表示菱形的高度,然后打印出一个菱形图案: def print_diamond(n):     # 上半部分     for i in range(n):         print(\\\" \\\" * (n - i - 1) + \\\"*\\\" * (2 * i + 1))     # 下半部分     for

    2024年02月05日
    浏览(36)
  • 【C语言练习——打印下三角及其变形】

    CSDN话题挑战赛第1期 活动详情地址:活动地址 参赛话题:大学学习月/季度总结 话题描述:对自己大学的月/季度学习的复盘及展望 下三角的概念在线性代数中经常出现, 下面是百度百科的定义: 具体形式见下图: 本文仿照上述定义,练习打印下三角及其变形: 结果见下图

    2024年01月19日
    浏览(44)
  • 【C语言练习——打印正方形及其变形】

    正方形形是一种特殊的平行四边形,定义见百度百科 本文主要是写关于菱形的练习题,在屏幕上打印菱形。 结果见下图 ,虽然是10行10列,由于同一行内的字符之间没有空隙,而不同行之间由于换行符的缘故,打印图形看着不是正方形,而是长方形了: 结果见下图 ,看着更

    2024年02月12日
    浏览(34)
  • 每日练习---C语言

    目录 前言: 1.打印菱形 1.1补充练习  2.打印水仙花 2.1补充训练   记录博主做题的收获,以及提升自己的代码能力,今天写的题目是: 打印菱形、打印水仙花数 。   我们先看到牛客网的题:OJ链接    题目解析:多组输入一个值(我们用n来控制)用来控制菱形的打印。  

    2024年02月05日
    浏览(29)
  • Java用for循环打印三角形菱形

    目录   一、打印矩形  二、打印直角三角形 1.直角三角形  2.打印九九乘法表  三、打印等腰三角形  四、打印平行四边形  五、打印菱形  六、打印两个直角三角形 1.打印两个直角三角形  2.打印倒着的两个直角三角形 七、打印“蝴蝶”   一、打印矩形 运行结果:  二、

    2024年04月25日
    浏览(37)
  • C语言-每日刷题练习

      小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用  *  表示正面,用  o  表示反面(是小写字母,不是零),比如可能情形是  **oo***oooo ,如果同时翻转左边的两个硬币,则变为  oooo***oooo 。现在小明的问题是:如果已知了初始状态和要达到的目

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

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

    2024年02月10日
    浏览(66)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包