【牛客网题目解析:从入门到精通】173道基础题详解 (第六期)

在这里插入图片描述

😁本文作者:大家好,我是原始豌豆,欢迎来到牛客网刷题解析第六期,感谢你阅读本文欢迎评论,收藏,点赞哦。
😂内容专栏:这里是《牛客网在线编程》专栏,笔者用重金(时间和精力)打造,每道题目提供多种解法,从基础到拓展,希望可以帮到读者们。
😘写作不易:本文对每道题目提供了多种解法并加上了详细的注释,意在帮助读者锻炼思维灵活性,提高分析、解决问题的能力💓)。

开端
     。本期讲解的是牛客网101~115题,都是基于循环打印图形的题目,难度直接拉满。BC114 圣诞树, BC115 超级圣诞树堪称循环打印图形的天花板。过于复杂,后期会单独出一篇博客进行图文详解。

     挑战自己的极限,收获编程的乐趣,让我们一起踏上这段奇妙的C语言刷题之旅吧!!!!

题目目录

牛客网语法篇基础语法101~115题(C语言实现)
题目网址链接请点这✌️
标注*符号的题目为重点题目
本页目录跳转请点下方

BC101 翻转直角三角形图案*
BC102 带空格直角三角形图案
BC103 金字塔图案*
BC19 BC104 翻转金字塔图案 *
BC105 菱形图案*
BC106 K形图案*
BC107 箭形图案<
BC108 反斜线形图案
BC109 正斜线形图案*
BC110 X形图案*
BC111 空心正方形图案
BC112 空心三角形图案 *
BC113 数字三角形*
BC114 圣诞树***
BC115 超级圣诞树***

题目

>BC101 翻转直角三角形图案

在这里插入图片描述
解法一
  题目是多组输入,所以最外层采用while循环,控制多组输入,里面采用双重for循环打印倒直角三角形图形,第一层for循环控制行数,第二层for循环控制列数,每列的星号是在不断减少的。

#include <stdio.h>
int main() {
   
    int n, b;
    while (scanf("%d", &n) != EOF) {
    
        for (int i = 0; i < n; i++) {
   //控制行数
            for (int j = 0; j < n-i; j++) {
   //控制列数
                printf("* ");//打印星号+空格
            }
             printf("\n");//每完成一行要换行
        }     
    }
    return 0;
}

解法二
  与解法一相同的思路,只不过改变了循环的初始化,判断条件和调整部分

#include <stdio.h>
int main() {
   
    int n, b;
    while (scanf("%d", &n) != EOF) {
   
        for (int i = n; i > 0; i--) {
   //控制行数
            for (int j = i ; j > 0; j--) {
   //控制列数,j随着i变动
                printf("* ");//打印星号+空格
            }
            printf("\n");//每完成一行要换行
        }
    }
    return 0;
}

BC102 带空格直角三角形图案

在这里插入图片描述
解法一
  题目是多组输入,所以最外层采用while循环,控制多组输入,里面采用for循环打印反直角三角形图形,第一层for循环控制行数,第二层和第三层for嵌套在第一层for循环内部,属于并列结构,循环打印空格空格和星号空格,每行的空格空格是在不断减少的,每行的星号星号是在不断增多的的。

#include <stdio.h>
int main() {
   
    int n;
    while (scanf("%d", &n) != EOF) {
   
        for (int i = 0; i < n; i++) {
   //一共有n层
            for (int j = 1; j < n - i; j++)
                printf("  ");//注意是双空格
            for (int k = 0; k <= i; k++)
                printf("* ");//注意是星号+空格
            printf("\n");
        }
    }
    return 0;
}

解法二
  与解法一相同的思路,但是改变了i,j,k,三个循环变量的初始化,判断条件和调整部分

#include <stdio.h>
int main() {
   
    int n;
    while (scanf("%d", &n) != EOF) {
   
        for (int i = n; i > 0; i--) {
   //控制行数
            for (int j = i; j >1; j--)//控制每行空格+空格打印的数量
                printf("  ");
            for (int k = n; k >= i; k--)//控制每行星号+空格打印的数量
                printf("* ");
            printf("\n");
        }
    }
    return 0;
}

BC103 金字塔图案

在这里插入图片描述
解法一
  题目是多组输入,所以最外层采用while循环,控制多组输入,里面采用for循环打印金字塔图形,观察可以发现,金字塔图形实际上就是102题反直角三角形的变种,只不过把每次循环打印的空格数缩小一倍,其余不变。第一层for循环控制行数,第二层和第三层for嵌套在第一层for循环内部,属于并列结构,循环打印空格空格和星号空格,每行的空格空格是在不断减少的,每行的星号星号是在不断增多的。

#include <stdio.h>
int main() {
   
    int n;
    while (scanf("%d", &n) != EOF) {
    
        for (int i = 0; i <n; i++) {
   //外层循环,用于控制金字塔行数。对于每一个i值,都会生成一行。
            for (int j = 1; j <n-i; j++)
                printf(" ");//每次只打印一个空格
            for (int
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值