首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【牛客网C语言刷题合集】(三)

【牛客网C语言刷题合集】(三)

作者头像
晨非辰Tong
发布2025-12-23 14:22:53
发布2025-12-23 14:22:53
540
举报
文章被收录于专栏:C++C++

前言:刷题博客主要记录在学习编程语言时,练习的一系列题目,比较适合C语言的初学者用来巩固提高编程能力,其余可见专栏。

1. 三角形判断

--题目链接:三角形判断_牛客网


思路——

  • 首先根据三角形判断条件进行筛选输入数值,符合则继续判断,不符则判断下一组输入;
  • 选择语句设置特殊三角形判断条件
  • 注意:循环条件中,判断scanf返回数值(!=EOF)十分重要

代码实现:

代码语言:javascript
复制
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),满足上述任意条件时打印 *,否则打印空格。

每行结束换行。


代码语言:javascript
复制
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循环设置列数,内部行、列输入;

--对于转置输出,需要将行、列颠倒,根据数组下标进行输出; 一列一列的输出;


代码语言:javascript
复制
// 矩阵转置
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了,直接上代码:

代码语言:javascript
复制
int main()
{
	//创建数组,先初始化0
	int 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语言刷题集》中,主要分享的是有关分支循环语句、数组题目的练习,难度不一,一定程度上能够有效提升编程能力,喜欢的朋友们,三连后一起来学习吧!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 三角形判断
  • 2. X 型图案
  • 3.矩阵转换
  • 4. 逆序打印
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档