C语言逐日一练——day_10

打印 上一主题 下一主题

主题 964|帖子 964|积分 2894

引言

        针对初学者,逐日训练几个题,快速上手C语言。第十天。(连续更新中)
        接纳在线OJ的形式
什么是在线OJ?

        在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用来测试参赛程序的在线系统,也可以用于平时的训练。
        具体内容可以看一下这篇博客:关于C/C++语言的初学者在哪刷题,怎么刷题-CSDN博客
https://blog.csdn.net/2401_88433210/article/details/146056171?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
 建议从第一天开始做,前面讲了的知识点后面只是会提一下。有不懂的写再评论区里 
        今天的题全是一些二维数组的应用
1.班级成绩输入输出 

        点进去直接做题:班级成绩输入输出_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/60d96b08e1cb42e38629d54e37eac008?tpId=107&&tqId=33382&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     double arr[5][5];
  5.     for(int i=0;i<5;++i)
  6.     {
  7.        scanf("%lf %lf %lf %lf %lf",&arr[i][0],&arr[i][1],&arr[i][2],&arr[i][3],&arr[i][4]);
  8.     }
  9.     for(int i=0;i<5;++i)
  10.     {
  11.          double sum=0;
  12.         for(int j=0;j<5;++j)
  13.         {
  14.              printf("%.1f ",arr[i][j]);
  15.             sum+=arr[i][j];
  16.         }
  17.         printf("%.1f\n",sum);
  18.     }
  19.     return 0;
  20. }
复制代码
解析:按照题目要求做就行了
2.矩阵元素定位

        点进去直接多题:矩阵元素定位_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/b8e6a46992fe4e11b2822b20561b6d94?tpId=107&&tqId=33383&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
  1. #include <stdio.h>
  2. int main() {
  3.     int n, m;
  4.     scanf("%d %d", &n, &m);
  5.     int val[n + 1][m + 1];
  6.     for (int i = 1; i <= n; i++) {
  7.         for (int j = 1; j <= m; j++) {
  8.             scanf("%d ", &val[i][j]);
  9.         }
  10.     }
  11.     int x, y;
  12.     scanf("%d %d", &x, &y);
  13.     printf("%d", val[x][y]);
  14.     return 0;
  15. }
复制代码
 解析:按照题目要求做就行了,简朴题
3.序列重组矩阵

        点进去直接做题:序列重组矩阵_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/7548f8f5e44c42fa84fb2323d899a966?tpId=107&&tqId=33384&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking
 参考代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int n = 0;
  5.     int m = 0;
  6.     int arr[100] = { 0 };
  7.     scanf("%d %d", &n, &m);
  8.     for (int i = 0; i < n; i++)
  9.     {
  10.         for (int j = 0; j < m; j++)
  11.         {
  12.             scanf("%d", &arr[i]);
  13.             printf("%d ", arr[i]);
  14.         }
  15.         printf("\n");
  16.     }
  17.     return 0;
  18. }
复制代码
解析:按照题目意思就行,简朴的
4.最高身高

        点进去直接做题:最高身高_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/258fe0c567ac493f9b7bc9d3669d158d?tpId=107&&tqId=33385&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int n = 0;
  5.     int m = 0;
  6.     int arr[10][10] = { 0 };
  7.     scanf("%d %d", &n, &m);
  8.     int max = 0;
  9.     int x = 0;
  10.     int y = 0;
  11.     for (int i = 0; i < n; i++)
  12.     {
  13.         for (int j = 0; j < m; j++)
  14.         {
  15.             scanf("%d", &arr[i][j]);
  16.             if (arr[i][j] > max)
  17.             {
  18.                 x = i + 1;
  19.                 y = j + 1;
  20.                 max = arr[i][j];
  21.             }
  22.         }
  23.     }
  24.     printf("%d %d\n", x, y);
  25.     return 0;
  26. }
复制代码
解析:
        核心代码就if语句里面的东西,很简朴。 
5.矩阵相等判断

        点进去直接做题:矩阵相等判断_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/2f058b1e89ae43f7ab650c0fd0b71fa8?tpId=107&&tqId=33386&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int n = 0;
  5.     int m = 0;
  6.     int arr1[10][10] = { 0 };
  7.     int arr2[10][10] = { 0 };
  8.     //输入
  9.     scanf("%d %d", &n, &m);
  10.     int i = 0;
  11.     for (i = 0; i < n; i++)
  12.     {
  13.         for (int j = 0; j < m; j++)
  14.         {
  15.             scanf("%d", &arr1[i][j]);
  16.         }
  17.     }
  18.     for (i = 0; i < n; i++)
  19.     {
  20.         for (int j = 0; j < m; j++)
  21.         {
  22.             scanf("%d", &arr2[i][j]);
  23.             //判断
  24.             if (arr1[i][j] != arr2[i][j])
  25.             {
  26.                 printf("No\n");
  27.                 return 0;
  28.             }
  29.         }
  30.     }
  31.     printf("Yes\n");
  32.     return 0;
  33. }
复制代码
解析:题目让你干啥,你就干啥。
6.上三角矩阵判断

        点进去直接做题:
上三角矩阵判断_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/f5a29bacfc514e5a935723857e1245e4?tpId=107&&tqId=33387&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
  1. //方法一:先将元素进行录入,后进行判别下三角的情况
  2. int main()
  3. {
  4.     int n = 0;
  5.     scanf("%d",&n);
  6.     int i,j;
  7.     int arr[10][10] = {0};
  8.     for(i=0; i<n;i++)
  9.     {
  10.         for(j=0;j<n;j++)
  11.         {
  12.             scanf("%d",&arr[i][j]);
  13.         }
  14.     }
  15.     for(i=0; i<n;i++)
  16.     {
  17.         for(j=0;j<i;j++)
  18.         {
  19.             if(arr[i][j] != 0)
  20.             {
  21.                 printf("NO\n");
  22.                 return 0;
  23.             }
  24.         }
  25.     }
  26.     printf("YES\n");
  27.     return 0;
  28. }
  29. */
  30. //方法二:一边录入元素,一边进行判断
  31. int main()
  32. {
  33.     int n = 0;
  34.     scanf("%d",&n);
  35.     int i,j;
  36.     int arr[10][10] = {0};
  37.     for(i=0; i<n;i++)
  38.     {
  39.         for(j=0;j<n;j++)
  40.         {
  41.             scanf("%d",&arr[i][j]);
  42.              if(i>j)
  43.            {
  44.                if(arr[i][j] != 0)
  45.                {
  46.                    //下三角有不是0的就不满足
  47.                    printf("NO");
  48.                    return 0;
  49.                }
  50.            }
  51.         }
  52.     }
  53.     printf("YES\n");
  54.     return 0;
  55. }
复制代码
解析:找规律,按照题意来做就行。
7.矩阵互换

        点进去直接做题:矩阵互换_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/ec44d4ff8c794b2f9205bdddbde96817?tpId=107&&tqId=33389&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int n = 0;
  5.     int m = 0;
  6.     int arr[10][10] = { 0 };
  7.     scanf("%d %d", &n, &m);
  8.     for (int i = 0; i < n; i++)
  9.     {
  10.         for (int j = 0; j < m; j++)
  11.         {
  12.             scanf("%d", &arr[i][j]);
  13.         }
  14.     }
  15.     int k = 0;
  16.     scanf("%d", &k);
  17.     char t = 0;
  18.     int a = 0;
  19.     int b = 0;
  20.     //进行k次变化
  21.     for (int i = 0; i < k; i++)
  22.     {
  23.         scanf(" %c %d %d", &t, &a, &b);
  24.         if (t == 'r')
  25.         {
  26.             //交换a和b行
  27.             for (int j = 0; j < m; j++)
  28.             {
  29.                 int tmp = arr[a - 1][j];
  30.                 arr[a - 1][j] = arr[b - 1][j];
  31.                 arr[b - 1][j] = tmp;
  32.             }
  33.         }
  34.         else if (t == 'c')
  35.         {
  36.             //交换a和b列
  37.             for (int j = 0; j < n; j++)
  38.             {
  39.                 int tmp = arr[j][a - 1];
  40.                 arr[j][a - 1] = arr[j][b - 1];
  41.                 arr[j][b - 1] = tmp;
  42.             }
  43.         }
  44.     }
  45.     for (int i = 0; i < n; i++)
  46.     {
  47.         for (int j = 0; j < m; j++)
  48.         {
  49.             printf("%d ", arr[i][j]);
  50.         }
  51.         printf("\n");
  52.     }
  53.     return 0;
  54. }
复制代码
 解析:
1. 假如是%c读取字符,肯定要清理前面输入时留下的空缺字符
2. 注意二维数组的下标
3.按照题意模拟就行。
8.矩阵转置

        点进去直接做题:矩阵转置_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/351b3d03e410496ab5a407b7ca3fd841?tpId=107&&tqId=33388&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
  1. #include <stdio.h>
  2. int main() {
  3.     int m, n, b[20][20];
  4.     scanf("%d %d", &n, &m);
  5.     for (int i = 0; i < n; i++)
  6.     {
  7.         for (int j = 0; j < m; j++)
  8.         {
  9.             scanf("%d", &b[i][j]);
  10.         }
  11.     }
  12.     for (int i = 0; i < m; i++)
  13.     {
  14.         for (int j = 0; j < n; j++) {
  15.             printf("%d ", b[j][i]);
  16.         }
  17.         printf("\n");
  18.     }
  19.     return 0;
  20. }
复制代码
解析:按照题目标意思做就行。
9.杨辉三角

        点进去直接做题:杨辉三角_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/e671c6a913d448318a49be87850adbcc?tpId=107&&tqId=33390&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int n = 0;
  5.     int arr[30][30] = { 0 };
  6.     scanf("%d", &n);
  7.     for (int i = 0; i < n; i++)
  8.     {
  9.         for (int j = 0; j <= i; j++)
  10.         {
  11.             if (0 == j || i == j)
  12.             {
  13.                 arr[i][j] = 1;
  14.             }
  15.             else
  16.             {
  17.                 arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
  18.             }
  19.             printf("%5d", arr[i][j]);
  20.         }
  21.         printf("\n");
  22.     }
  23.     return 0;
  24. }
复制代码
解析:找规律题,模拟就行,注意题目要求。
10.井字棋

        点进去直接做题:井字棋_牛客题霸_牛客网 (nowcoder.com)
https://www.nowcoder.com/practice/0375c1d206ef48a3894f72aa07b2fdde?tpId=107&&tqId=33391&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking参考代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char board[3][3] = { 0 };
  5.     char flag = 0;
  6.     for (int i = 0; i < 3; i++)
  7.     {
  8.         for (int j = 0; j < 3; j++)
  9.         {
  10.             scanf(" %c", &board[i][j]);
  11.         }
  12.     }
  13.     //判断输赢
  14.     for (int i = 0; i < 3; i++)
  15.     {
  16.         //行
  17.         if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][2] != 'O')
  18.         {
  19.             flag = board[i][2];
  20.             break;
  21.         }
  22.         //列
  23.         if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[2][i] != 'O')
  24.         {
  25.             flag = board[2][i];
  26.             break;
  27.         }
  28.     }
  29.     //对角线
  30.     if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] != 'O')
  31.     {
  32.         flag = board[2][2];
  33.     }
  34.     if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] != 'O')
  35.     {
  36.         flag = board[2][0];
  37.     }
  38.     if ('K' == flag)
  39.     {
  40.         printf("KiKi wins!\n");
  41.     }
  42.     else if ('B' == flag)
  43.     {
  44.         printf("BoBo wins!\n");
  45.     }
  46.     else
  47.     {
  48.         printf("No winner!\n");
  49.     }
  50.     return 0;
  51. }
复制代码
 解析:
        把所有赢的环境罗列出来然后排除就行。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表