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

#C语言——刷题攻略:牛客编程入门训练(十三):循环输出图形(二)、一维数组(一),轻松拿捏!

🌟菜鸟主页:@晨非辰的主页

👀学习专栏:《C语言刷题合集》

💪学习阶段:C语言方向初学者

名言欣赏:"代码行数决定你的下限,算法思维决定你的上限。"

前言:在学习编程语言的同时,千万别忘了刷刷题来巩固一下学到的知识,对于牛客网_编程入门系列,小子会持续更新分享刷题过程,其中包括一些基础板块的题目,本次将呈现7道题。

~~注意部分标题括号内代表对题目涉及到的知识进行说明!


目录

1. BC103 金字塔图案

2.  BC104 翻转金字塔图案

3.  BC105 菱形图案

4.  BC106 K形图案

5.  BC116 记数问题

6.  BC118 N个数之和(多组输入实现类加:数据存储在缓冲区)

7.  BC119 最高分与最低分之差


1. BC103 金字塔图案

链接:牛客网_BC103 金字塔图案_简单

#include <stdio.h>
int main()
{int a;while (scanf("%d", &a) != EOF){int j = a;int k = 1;//循环行的变换--循环a行for (int i = 1; i <= a; i++){//循环生成前面的空格for (int i = 1; i <= j - 1; i++){printf(" ");}j--;//循环生成中间的'*'for (int i = 1; i <= k; i++){printf("* ");}k++;//就不用管后面的空格输出printf("\n");}}return 0;
}

思路——

--本题比其他的输出图案的题目就复杂一点点,额外加上了对 ' * ' 前面空格的输出考虑;注意在对 ' *  '输出时还带着一个空格 。


2.  BC104 翻转金字塔图案

链接:牛客网_BC104 翻转金字塔图案_简单

#include <stdio.h>
int main() 
{int a;while (scanf("%d", &a) != EOF) { int j = 1;int k = a;//循环行的变换--循环a行for(int i = 1; i<= a; i++){//循环生成前面的空格,从生成0个开始//需要前面空格输出的只有a - 1行,所以将初始值调高for(int i = 2; i <= j; i++ ){printf(" ");}j++;//循环生成中间的'*'for(int i = 1; i <= k; i++){printf("* ");}k--;printf("\n");}}return 0;
}

思路——

--本题于上一道题的思路基本相同,由于本题图案时翻转的,需要将空格的输出进行重新定义;


3.  BC105 菱形图案

链接:牛客网_BC105 菱形图案_简单

#include <stdio.h>
int main() 
{int a;while (scanf("%d", &a) != EOF) { int j = a;int k = 1;//循环行的变换--循环a行for(int b = 1; b<= a; b++){//循环生成前面的空格for(int c = 1; c <= j ; c++ ){printf(" ");}j--;for(int d = 1; d <= k; d++){printf("* ");}    k++;printf("\n");}k = 1;//重置j = a;//中间最长的一行for(int i = 1; i<= a + 1 ; i++){printf("* ");}printf("\n");//生成后面的行for(int e = 1; e <= a; e++){//循环生成前面的空格for(int f = 1; f <= k; f++ ){printf(" ");}k++;for(int h = 1; h <= j; h++){printf("* ");}j--;printf("\n");}}return 0;
}

思路——

--本题相当于前两个金字塔题的综合,虽然整体的思路不难,难得就在于将每个变量作用分清楚;注意需要重置部分变量的值。


4.  BC106 K形图案

链接:牛客网_BC106 K形图案_简单

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

思路——

--本题的图案在前一篇刷题博客有练过,基本逻辑与上一题的综合输出题目相同,也是注意变量之间的关系,千万不要搞混啊!


5.  BC116 记数问题

链接:牛客网_BC116 记数问题_入门

#include <stdio.h>
int main()
{int n = 0;int x = 0;int count_x = 0;scanf("%d%d", &n, &x);for (int i = 1; i <= n; i++){int j = i;//获取位数do{int num = j % 10;j /= 10;if (num == x){count_x++;}} while (j);}printf("%d\n", count_x);return 0;
}

思路——

--不知道到大家还对之前相似的一道题有没有印象,(链接放在下面)注意要求是统计出现x的次数,与之前的题略有不同;基本想法:循环取得数值的最末位,与x进行比较,是——>计数+1,反之无。

 BC89 包含数字9的数


6.  BC118 N个数之和(多组输入实现类加:数据存储在缓冲区)

链接:牛客网_BC118 N个数之和_简单

#include <stdio.h>
int main() 
{int N = 0;int num = 0;;int sum = 0;scanf("%d", &N);while(scanf("%d", &num) != EOF){sum += num;}printf("%d\n", sum);return 0;
}

思路——

--本题思路简单,进行多组输入实现累加因为键盘输入的数值存储在缓冲区,用1个读1个;这样也不会导致数据覆盖。


7.  BC119 最高分与最低分之差

链接:牛客网_BC119 最高分与最低分之差_简单

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);int arr[n];//变长数组int i = 0;//循环输入成绩for ( i = 0; i < n; i++){scanf("%d\n", &arr[i]);}//计算最大与最小之差int min = arr[0];int max = arr[0];for ( i = 1; i < n; i++){if (arr[i] < min)min = arr[i];if (arr[i] > max)max = arr[i];}printf("%d", max-min);return 0;
}

思路——

--本题的思路在之前有过相似的题目见过,但是最主要是的是使用了变长数组(大小在运行中确定--n);请注意日常使用时,变长数组在自己使用的编程软件适不适用(VS2022不支持)。


刷题系列回顾:

#C语言——刷题攻略:牛客编程入门训练(十二):攻克 循环控制(四)、循环输出图形(一),轻松拿捏!

结语:本篇文章就到此结束了,本文主要是练习部分循环控制以及输出图形题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~ 


文章转载自:

http://XpEgkqlF.wxccm.cn
http://a4RmxLAT.wxccm.cn
http://4STI2PO7.wxccm.cn
http://4lvvK2iL.wxccm.cn
http://iioKen2K.wxccm.cn
http://358KFehC.wxccm.cn
http://T1SjKiyQ.wxccm.cn
http://jaCfuJbD.wxccm.cn
http://x105zldU.wxccm.cn
http://u7hvPAvJ.wxccm.cn
http://lqCnhcp8.wxccm.cn
http://DFmLONJx.wxccm.cn
http://ke3to3yR.wxccm.cn
http://kNeC05sX.wxccm.cn
http://ftcOD4qK.wxccm.cn
http://QCAzaKyp.wxccm.cn
http://nxC3QNaq.wxccm.cn
http://ELj5EFlU.wxccm.cn
http://ApBljRGC.wxccm.cn
http://gQVKYYJi.wxccm.cn
http://gcfVBXVw.wxccm.cn
http://IuCc5n4l.wxccm.cn
http://XCj6xSqI.wxccm.cn
http://vVUAzeU2.wxccm.cn
http://OjXt79z0.wxccm.cn
http://ruG7TR42.wxccm.cn
http://FpngBBsw.wxccm.cn
http://Xr0MWeH7.wxccm.cn
http://tER1Y9Fq.wxccm.cn
http://U1gvS7Gk.wxccm.cn
http://www.dtcms.com/a/380034.html

相关文章:

  • Nginx服务——安装与搭建
  • 远程真机调试支持网络多线路切换,让自助兼容性测试更流畅
  • AI Agent工作流实用手册:5种常见模式的实现与应用,助力生产环境稳定性
  • 前端渲染技术全解析:SSR、SSG、CSR 有什么区别?
  • html css js网页制作成品——HTML+CSS娃娃店网页设计(4页)附源码
  • mac本地安装mysql
  • 使用android studio分析cpu开销
  • Android Studio如何开启离线编译模式
  • CSS 动画实战:实现电商中“加入购物车”的抛物线效果
  • Terraform整合到GitLab+Jenkins工具链
  • android studio 断点无效
  • Prompt技术深度解析:从基础原理到前沿应用的全面指南
  • WPF报错 XDG000 Windows Presentation Foundation (WPF) 项目中不支持 Application
  • Docker的使用及核心命令
  • Jmeter测试
  • 神经网络基本概念
  • 【打包app】uniapp打包ios端和安卓端app
  • 【LeetCode 每日一题】3000. 对角线最长的矩形的面积
  • 制造业档案管理混乱:档案宝如何破解?
  • 第4周 数组的概念和常见操作
  • vue,uniapp 实现卷帘对比效果
  • 鸿蒙 NEXT UI 性能优化实战:打造流畅用户界面的关键策略
  • 使用UniApp实现一个AI对话页面
  • 智能科技与搜索引擎优化关键词的新契机
  • 搜维尔科技:全身可穿戴Teslasuit动捕服的功能,自立式FES装置
  • Java 大视界 -- Java 大数据在智能医疗健康档案数据分析与个性化健康管理中的应用(410)
  • RK3588 Android12默认移除导航栏
  • HBuilder 运行编译器内存溢出
  • lesson59:JavaScript 控制流详解:分支结构与循环语句全指南
  • Avalonia 基础导航实现:从页面切换到响应式交互全指南