当前位置: 首页 > news >正文

C语言每日一练——day_7

引言

        针对初学者,每日练习几个题,快速上手C语言。第七天。(连续更新中)

        采用在线OJ的形式

什么是在线OJ?

        在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用来测试参赛程序的在线系统,也可以用于平时的练习。

        详细内容可以看一下这篇博客:关于C/C++语言的初学者在哪刷题,怎么刷题-CSDN博客https://blog.csdn.net/2401_88433210/article/details/146056171?spm=1011.2415.3001.10575&sharefrom=mp_manage_link

 建议从第一天开始做,前面讲了的知识点后面只是会提一下。有不懂的写再评论区里

        今天的题目都是一些找规律题,说实话,不是很好做,耐住性子找规律,可以锻炼代码能力

 1.翻转金字塔图案

        点进去直接做题:翻转金字塔图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/c4775776e4464537bfb6a5ba37c596c6?tpId=107&&tqId=33343&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

#include <stdio.h>


//代码一: 比较难想,尽量想一下
#include <stdio.h>
int main()
{
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
        int i = 0;
        for (i = 0; i < n; i++)
        {
            //一行
            int j = 0;
            for (j = 0; j < i; j++)
            {
                printf(" ");
            }
            for (j = 0; j < n - i; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}
//代码二:
int main() {
    int a,b,c;
    while (scanf("%d", &a) != EOF)
    {
        for(b=a;b>0;b--)
        {
            c=a-b;
            while(c>0)
            {
                printf(" ");
                c--;
            }
            while(c<b)
            {
                printf("* ");
                c++;
            }
            printf("\n");
        }
    }
    return 0;
}

解析:

        1. 多组输入

        2. 控制好行数,控制好每一行前面的空格数

        3.一定要亲自敲出来,先找出规律再敲

2.菱形图案

        点进去直接做题:菱形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/8b935f8ffe99445dbd42494febd13e45?tpId=107&&tqId=33344&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

#include <stdio.h>
int main()
{
    int n = 0;
    while (scanf("%d", &n) != EOF)
    {
        int i = 0;
        //上
        for (i = 0; i < n; i++)
        {
            //一行
            int j = 0;
            for (j = 0; j < n - i; j++)
            {
                    printf(" ");
            }
            for (j = 0; j <= i; j++)
            {
                printf("* ");
            }
            printf("\n");
        }
        //下
        for (i = 0; i <= n; i++)
        {
        //一行
        int j = 0;
        for (j = 0; j < i; j++)
        {
            printf(" ");
        }
        for (j = 0; j <= n - i; j++)
        {
            printf("* ");
        }
            printf("\n");
        }
    }
    return 0;
}

解析:

        1. 首先把菱形的打印分为上下2个部分

        2. 上下分别控制好行数和空格的个数

        3. 多组输入

        4. 一定要把规律想明白,自己把代码敲出来

3.K形图案

        点进去直接做题:

K形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/753cc2662d9949fe826a85f815db0ca4?tpId=107&&tqId=33345&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

#include <stdio.h>
int main() {
    int n = 0;
    while (scanf("%d", &n) != EOF) {
        //上一半
       for (int i = n+1; i>0; i--) {
            for (int j = i; j>0; j--) {
                printf("* ");
            }
            printf("\n");
        }
        //下一半
        for (int i = 1; i <= n; i++) {
            for (int j = 0; j <= i; j++) {
                 printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}

解析:

        1. 多行输入

        2. 图形的打印分为上下2个部分

4.反斜线形图案

        点进去直接做题:

反斜线形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/7b066963c4eb4d188becd18c37dfe22d?tpId=107&&tqId=33347&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

int main(){
    int i;
    while(~scanf(" %d",&i)){//多组输入
    for(int j=0;j<i;j++)
    {//行
        for(int k=0;k<j;k++)//每一行需要输入的空格数
            printf(" ");
        printf("*\n");//最后输入*,换行。
    }
    }
    return 0;
}

 解析:看代码注释来理解

5.反斜线形图案

        点进去直接做题:

反斜线形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/7b066963c4eb4d188becd18c37dfe22d?tpId=107&&tqId=33347&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

int main(){
    int i;
    while(~scanf(" %d",&i))
    {                       //多组输入
    for(int j=0;j<i;j++)
    {                       //行
        for(int k=0;k<j;k++)//每一行需要输入的空格数
            printf(" ");
        printf("*\n");//最后输入*,换行。
    }
    }
    return 0;
}

解析:看代码注释

6.正斜线形图案

        点进去直接做题:正斜线形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/61ef68d129534dfbb04b232e1244e447?tpId=107&&tqId=33348&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

int main()
{
    int n;
    int i,j;
    while(~scanf("%d", &n))
    {
        for(i=0;i<n;++i)
        {
            for(j=i+1;j<n;++j)
            {
                printf(" ");
            }
            printf("*\n");
         
        }
    }
    return 0;
}

解析:找规律

7.X形图案

        点进去直接做题:

X形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/83d6afe3018e44539c51265165806ee4?tpId=107&&tqId=33349&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

int main()
{
    int n = 0;
    while(~scanf("%d",&n))
    {
     //n*n的数组,对角线初始化为*,其余初始化为‘ ’,最后打印这个二维数组
        char arr[20][20];
        int i = 0,j = 0;
        for(i = 0;i<n;i++)
        {
            for(j = 0;j<n;j++)
            {
                //主对角线
                if(i==j)
                {
                    arr[i][j] = '*';
                }
                //反对角线
                else if((i+j)==(n-1))
                {
                    arr[i][j] ='*';
                }
                else
                {
                    arr[i][j]=' ';
                }
                printf("%c",arr[i][j]);
            }
            printf("\n");
        }
    }
    return 0;
}

 解析:找规律

8.空心正方形图案

        点进去直接做题:

空心正方形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/72347ee949dc47399186ee183632f303?tpId=107&&tqId=33350&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

#include <stdio.h>
int main()
{
  int n = 0;
  while(scanf("%d", &n) != EOF)
  {
      for(int i=0; i<n; i++)  //外循环为行
      {
         for(int j=0; j<n; j++) //内循环为列
         {
            if(i==0||i==n-1||j==0||j==n-1)//找规律
                 printf("* ");
             else
                 printf("  ");
         }
         printf("\n");
      }
  }
}

 解析:找规律

9.空心三角形图案

        点进去直接做题:

空心三角形图案_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/2ccc5fca423e47f0b622fe6f151cfab4?tpId=107&&tqId=33351&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:

#include <stdio.h>
int main()
{
    int num,i,j;
    while(scanf("%d",&num)!=EOF)
    {
        for(i=0;i<num;i++)//行数
        {
            for(j=0;j<num;j++)//每行的打印
            {
                 if(j==0|i==num-1)//打印每一行的第一个*和最后一排
                     printf("* ");
                 else if(j==i&&i!=0)//从第二排开始每隔i个空打印一个*
                     printf("* ");
                else //其余的都打双空格
                    printf("  ");
            }
            printf("\n");//最后换下一行
        }
    }
    return 0;
}

解析:找规律

相关文章:

  • ASP3605抗辐照加固同步降压调节器——商业航天电源芯片解决方案新选择
  • 鸿蒙下载文件保存到手机本地公共文件夹下、将本地的沙箱目录文件,保存到公共目录,鸿蒙picker save保存文件为空(0字节)的问题
  • windows命令:创建和打开文件
  • React + Node.js实践 仿B站评论
  • JavaScript 编程:从基础到高级应用的全面探索
  • 嵌入式开发之STM32学习笔记day08
  • ffmpeg库视频硬编码使用流程
  • Redis哨兵模式-黑马学习笔记
  • STM32F429单片机FMC接口驱动TFT LCD和SDRAM
  • Flutter Dart 泛型详解
  • OpenCV图像拼接(4)图像拼接模块的一个匹配器类cv::detail::BestOf2NearestRangeMatcher
  • 【论文阅读】CARES:医学视觉语言模型可信度的综合基准
  • 2025-03-17 学习记录--C/C++-PTA 习题4-7 最大公约数和最小公倍数
  • 汇编移位指令
  • 读取Table的结构转换为Model类
  • Git push后撤销提交
  • 变量和数据类型——Python
  • 如何在electron中注册快捷键?
  • 高性能缓存:使用 Redis 和本地内存缓存实战示例
  • 使用vite新建vue3项目 以及elementui的使用 vite组件问题
  • 第1现场|无军用物资!伊朗港口爆炸已遇难40人伤1200人
  • 伊朗港口爆炸已致40人死亡
  • 孟泽:我们简化了历史,因此也简化了人性
  • 来论|这无非就是一只“纸老虎”:评特朗普政府“关税战”
  • 审议民营经济促进法草案等,十四届全国人大常委会第十五次会议将举行
  • 国际观察|伦敦会谈“降级”凸显美国乌克兰政策窘境