🌟菜鸟主页:@晨非辰的主页
👀学习专栏:《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 < 10; i++){scanf("%d", &arr[i]);}//循环打印for (int j = 9; j >= 0; j--){printf("%d ", arr[j]);}return 0;
}
结语:本篇内容收录在《C语言刷题集》中,主要分享的是有关分支循环语句、数组题目的练习,难度不一,一定程度上能够有效提升编程能力,喜欢的朋友们,三连后一起来学习吧!!!