【牛客网C语言刷题合集】(三)
🌟菜鸟主页:@晨非辰的主页
👀学习专栏:《C语言刷题集》
💪学习阶段:C语言方向初学者
⏳名言欣赏:\"任何足够先进的bug都与魔法无异。\"
前言:刷题博客主要记录在学习编程语言时,练习的一系列题目,比较适合C语言的初学者用来巩固提高编程能力,其余可见专栏。
1. 三角形判断
--题目链接:三角形判断_牛客网
思路——
- 首先根据三角形判断条件进行筛选输入数值,符合则继续判断,不符则判断下一组输入;
- 选择语句设置特殊三角形判断条件
- 注意:循环条件中,判断scanf返回数值(!=EOF)十分重要
代码实现:
int main() { int a, b, c = 0; while (scanf(\"%d %d %d\", &a, &b, &c) != EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf(\"%lld\") to //判断是满足两边之和大于第三边 if ((a + b <= c) || (a + c <= b) || (b + c <= a)) { printf(\"Not a triangle!\\n\"); } //等边三角形判断 else if (a == b && b == c) { printf(\"Equilateral triangle!\\n\"); } //等腰三角形判断 else if ((a == b) || (a == c) || (c == b)) { printf(\"Isosceles triangle!\\n\"); } else { printf(\"Ordinary triangle!\\n\"); } } return 0;}
2. X 型图案
--题目链接:X型图案_牛客网
实现思路——
--第一眼看输出示例,感觉和多维数组的打印类似,那么就可以想到因该会有循环嵌套;
- 大体结构
--最外层循环判断输入(2~20),条件单一,使用while循环;
--中间嵌套一层for循环,观察输出(在 a×a
矩阵打印两条对角线(*
),其余位置填空格)
--关键发现:
--主对角线:行号 b
== 列号 c
(如 (0,0)
、(1,1)
)。
--副对角线:列号 c
== a - b - 1
(如 a=3
时,(0,2)
、(1,1)
、(2,0)
)。
-- 实现:用双重循环遍历每个位置 (b,c)
,满足上述任意条件时打印 *
,否则打印空格。
每行结束换行。
int main() { int a; while(scanf(\"%d\", &a)!=-1) { for(int b = 0;b < a;b++) { for(int c = 0;c < a;c++) { if(b == c) { printf(\"*\"); } else if(c == a-b-1) { printf(\"*\"); } else { printf(\" \"); } } printf(\"\\n\"); } } return 0;}
3.矩阵转换
--题目链接: 矩阵转换_牛客网
--实现思路:
--看输出示例,需要数组打印;
- 大体结构
--定义完需要的变量后,先要进行数组内容输入;一层for循环设置行数,嵌套第二层for循环设置列数,内部行、列输入;
--对于转置输出,需要将行、列颠倒,根据数组下标进行输出; 一列一列的输出;
// 矩阵转置int main(){int n,m = 0;//行、列scanf(\"%d%d\", &n, &m);//输入确定行列int num[10][10];//行输入数字int i, j = 0;for (i = 0; i < n; i++){//列输入数值for (j = 0; j < m; j++){scanf(\"%d\", &num[i][j]);}}//转置for (i = 0;i < m; i++){for (j = 0; j < n;j++){printf(\"%d\", num[j][i]);}printf(\"\\n\");}}
4. 逆序打印
题目链接:逆序打印_牛客网
--这道题目大家应该都有思路,就不多bb了,直接上代码:
int main(){//创建数组,先初始化0int arr[10] = {0};//循环输入for (int i = 0; i = 0; j--){printf(\"%d \", arr[j]);}return 0;}
结语:本篇内容收录在《C语言刷题集》中,主要分享的是有关分支循环语句、数组题目的练习,难度不一,一定程度上能够有效提升编程能力,喜欢的朋友们,三连后一起来学习吧!!!