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