首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【手把手带你刷好题】--C语言基础编程题(十)

【手把手带你刷好题】--C语言基础编程题(十)

作者头像
LOTSO
发布2025-10-29 13:49:44
发布2025-10-29 13:49:44
1780
举报
文章被收录于专栏:C++C++

🔥个人主页:@草莓熊Lotso 🎬作者简介:C++研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受。

前言:本篇博客是刷题集中的第十篇,题目都是一些比较基础的IO型题目,适合C语言初学者。特别声明一下,这里提供的答案和思路都并非唯一,仅供参考。

1.班级成绩输入输出

题目链接:班级成绩输入输出_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>
int main() {
    int i = 0;//5个学生
    for (i = 0; i < 5; i++)
        {
            double sum = 0.0;
            int j = 0;
            double score = 0.0;
            for (j = 0; j < 5; j++)
            {
                scanf("%lf", &score);
                sum += score;
                printf("%.1lf ", score);
            }
       printf("%.1lf\n", sum);
    }
    return 0;
}

题目解析:

  • 在输入的同时求和,并且每输入一个就输出出来,最后全部输入完之后再把sum输出出来就可以

2.矩阵元素定位

题目链接:矩阵元素定位_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int n=0;
    int m=0;
    int x=0;
    int y=0;
    int arr[5][5]={0};
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            scanf("%d ",&arr[i][j]);
        }
    }
    scanf("%d %d",&x,&y);
    printf("%d",arr[x][y]);
    return 0;
}

题目解析:

  • 这题其实就算输入一个二维数组,然后通过下标访问操作找到你所想要定位的元素
  • 大家注意一下,我输入的时候是从1开始的,如果大家是从0开始的话,最后输出的时候需要把你输入的下标都减1。

3.序列重组矩阵

题目链接:序列重组矩阵_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

方法1:

代码语言:javascript
复制
#include <ctype.h>
#include <stdio.h>

int main() {
    int n=0;
    int m=0;
    int s[100]={0};
    scanf("%d%d",&n,&m);
    for(int i=0;i<n*m;i++)
    {
        scanf("%d",&s[i]);
    }
    int i=0;
    for(int j=0;j<n;j++)
    {
        for(int k=0;k<m;k++)
        {
            printf("%d ",s[i]);
            i++;
        }
        printf("\n");
    }
    return 0;
}

方法2:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int n = 0;
    int m = 0;
    int s[100] = {0};
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i++) {
        for (int k = 0; k < m; k++) {
            scanf("%d ", &s[i]);
            printf("%d ", s[i]);
        }
        printf("\n");
    }
    return 0;
}

方法3:

代码语言:javascript
复制
#include <stdio.h>
int main() {
    int n = 0;
    int m = 0;
    scanf("%d%d", &n, &m);
    int i = 0;
    int tmp = 0;
    for (i = 1; i <= m * n; i++) {
        scanf("%d", &tmp);
        printf("%d ", tmp);
        if (i % m == 0)
            printf("\n");
    }
    return 0;
}

题目解析:

  • 这里提供了三个方法,都可以解决这个问题,我个人推荐第三种,用一层循环就解决了,是较优的解。
  • 注意当i%m==0时证明一行输入完了我们得换行后继续输入下一行的

4. 最高身高

题目链接:最高身高_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n=0;
    int m=0;
    scanf("%d %d",&n,&m);
    int arr[10][10]={0};
    int max=0;
    int x=0;
    int y=0;
    for(int i=1;i<=n;i++)//注意,我特意从1开始;
    {
        for(int j=1;j<=m;j++)
        {
            scanf("%d",&arr[i][j]);
            if(arr[i][j]>max)
            {
                max=arr[i][j];
                x=i;
                y=j;
            }
        }
    }
    printf("%d %d",x,y);
    return 0;
}

题目解析:

  • 一边输入一边求最大值,这个很基础了。需要注意的还是我这里是从一开始的,所有后面直接输出就行

5.矩阵相等判定

题目链接: 矩阵相等判定_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int a, b;
    int n = 0;
    int m = 0;
    int arr1[10][10]={0} ;
    int arr2[10][10]={0};
    scanf("%d %d",&n,&m);
    int flag=1;//假设相等
    for (int i = 0; i <n; i++) {
        for (int j = 0; j < m; j++) {
            scanf("%d", &arr1[i][j]);
        }
    }
    for (int i = 0; i <n; i++) {
        for (int j = 0; j < m; j++) {
            scanf("%d", &arr2[i][j]);
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <m; j++) {
            if(arr1[i][j]!=arr2[i][j])
            {
               flag=0;
                break;
            }
        }
    }
    if(flag==1)
    printf("Yes\n");
    else
     printf("No\n");
    return 0;
}

题目解析:

  • 这题看起来代码很多很复杂,其实原理很简单,就是输入两个二维数组后利用flag进行判断,如果有不相等的就把flag置为0,直接break出去。最后要是flag还是1那就输出Yes,是0就输出No

6.KiKi判断上三角矩阵

题目链接:KiKi判断上三角矩阵_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int n=0;
    int arr[10][10]={0};
    scanf("%d",&n);
    int flag=1;//假设是上三角矩阵
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            scanf("%d ",&arr[i][j]);
        }
    }
     for(int i=0;i<n;i++)
    {
        for(int j=0;j<i;j++)
        {
            if(arr[i][j]!=0)
            {
                flag=0;
                break;
            }
        }
    }
    if(flag==1)
    printf("YES\n");
    else
     printf("NO\n");
    return 0;
}

题目解析:

  • 这题其实就是在判断处于下三角的元素是否都为0,如果有不为0的还是跟上一题思路一样将flag置为0,并且break跳出。最后根据flag的值输出对应结果

7.矩阵转置

题目链接:矩阵转置_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() 
{
    int n=0;
    int m=0;
    int arr[10][10]={0};
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%d ",&arr[i][j]);
        }
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            printf("%d ",arr[j][i]);
        }
        printf("\n");
    }
    return 0;
}

题目解析:

  • 先输入一个二维数组,然后输出的时候将j和i的范围交换,并且arr[i][j]变成arr[j][i]

8.矩阵交换

题目链接:矩阵交换_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>
 
int main() {
    int n = 0;
    int m = 0;
    int arr[10][10] = {0};
    scanf("%d %d", &n, &m);
    for (int i =1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            scanf("%d ", &arr[i][j]);
        }
    }
    int a = 0;
    int b = 0;
    int k = 0;
    char t = 0;
    scanf("%d", &k);
    
    while (k) {
         scanf(" %c %d %d", &t, &a, &b);
        if (t == 'r') { //进行行变换
            for (int j = 1; j <= m; j++) {
                int temp = arr[a][j];
                arr[a][j] = arr[b][j];
                arr[b][j] = temp;
            }
        }
       else if (t == 'c') { //进行列变换
            for (int i = 1; i <= n; i++) {
                int temp = arr[i][a];
                arr[i][a] = arr[i][b];
                arr[i][b] = temp;
            }
        }
        k--;
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
 
    return 0;
}

题目解析: 注意哈,我还是都从1开始的,那么剩下的就是交换行时行为a和b,列变化,列交换同理。输入完k次后,输出就行。


9.杨辉三角

题目链接:杨辉三角_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int n=0;
    scanf("%d",&n);
    int arr[30][30]={0};
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<=i;j++)
        {
            if(i==j||j==0)
            {
                arr[i][j]=1;
            }
            else
            {
                arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
            }
        }
    }

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<=i;j++)
        {
            printf("%5d",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

题目解析:

  • 这题已经把杨辉三角的定义和规律告诉你了,你用代码实现出来就可以了,再注意下输出的域宽要求

10.井字棋

题目链接:井字棋_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

代码语言:javascript
复制
#include <stdio.h>
int main() {
       char arr[3][3] = {0};
       int i = 0;
       int j = 0;
       char flag = 'c';
       for (i = 0; i < 3; i++)
          {
               for (j = 0; j < 3; j++)
                  {
                       scanf("%c", &arr[i][j]);
                       getchar();
                 
        }
         
    }
       for (i = 0; i < 3; i++)
          {
               if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2])
                  {
                       flag = arr[i][1];
                       break;
                 
        }
               if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i])
                  {
                       flag = arr[1][i];
                       break;
                 
        }
         
    }
       
       if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2])
          {
               flag = arr[1][1];
         
    }
       if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0])
          {
               flag = arr[1][1];
         
    }
       
       if (flag == 'K')
               printf("KiKi wins!");
       else if (flag == 'B')
               printf("BoBo wins!");
       else
               printf("No winner!");
                 
       return 0;
}

题目解析:

  • 本题的解法就是纯暴力解法,把所有都列举出来就可以了,大家自己看着理解一下

往期回顾:

【手把手带你刷好题】--C语言基础编程题(六)

【手把手带你刷好题】--C语言基础编程题(七)

【手把手带你刷好题】--C语言基础编程题(八)

【手把手带你刷好题】--C语言基础编程题(九)

结语: 本篇文章就到此结束了,C语言刷题集专栏中的第十篇的题目会难点,但有了前面的基础铺垫,这样的难度也是在合理范围内的,大家应该都可以解决,还是非常适合刚学完C语言的朋友们拿来练手,提升自己代码能力的。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.班级成绩输入输出
  • 2.矩阵元素定位
  • 3.序列重组矩阵
  • 4. 最高身高
  • 5.矩阵相等判定
  • 6.KiKi判断上三角矩阵
  • 7.矩阵转置
  • 8.矩阵交换
  • 9.杨辉三角
  • 10.井字棋
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档