1.练习项目:

问题描述

给定一个 n×m 的矩阵表示 Excel 表格中的数据,行号从上到下按数字 1,2,3,⋯编号,列号从左到右按大写字母 A,B,C,⋯ 编号。一个单元格用列号和行号相连表示。

例如,第 3 行第 5 列编号为 E3,第 20 行第 3 列编号为 C20。

给定一个 Excel 中的加法公式,公式第一个字符一定为等号,后面只包含单元格的名称和加号,且单元格名称不相邻,加号的两边都是单元格名称。请计算加法的结果。

输入格式

输入的第一行包含两个整数 n,m,用一个空格分隔。

接下来 n 行,每行 m 个整数,表示给定的数据。

接下来一行包含一个 Excel 中的加法公式。

输出格式

输出一行包含一个整数,表示答案。

2.选择课程

在蓝桥云课中选择题库,选择题号17018并开始练习。

3.开始练习

(1)源码 :

#include<bits/stdc++.h>

using namespace std;

using ll=long long;

const int N=110,M=30;

ll d[N][M];

int main()

{

  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

  int n,m;cin>>n>>m;

  for(int i=1;i<=n;i++){

    for(int j=1;j<=m;j++){

      cin>>d[i][j];

    }

  }

  string s;cin>>s;

  ll sum=0;

  for(int i=0;i<s.size();i++){

    if(s[i]!='+'&&s[i]!='=')continue;

    int j=i+1;

    while(j<s.size()&&s[j]!='+')j++;

    string s1=s.substr(i+1,j-i-1);

    int l=s1.size(),num=0;

    char s2=s1[0];string s3=s1.substr(1,l-1);

    for(int k=0;k<s3.size();k++){

      num*=10;

      num+=s3[k]-'0';

    }

    

    sum+=d[num][s2-'A'+1];

    i=j-1;

  }

  cout<<sum<<'\n';

  return 0;

}

(2)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。

更多推荐