c++编程算法和程序,3844: 快速求和

题目描述
输入数据只由26个大写字母和空格组成,并且开始和结束的字符一定是大写字母。除此之外,它可以任意组合,包括出现连续空格。
求和的算法是每个字母的位置号和字母值乘积的总和。空格的值为0,字母的值按照字母表顺序取值,比如A=1,B=2。下面是"ACM"和"MID CENTRAL"计算和的例子:
ACM: 11 + 23 + 313 = 46
MID CENTRAL: 1
13 + 29 + 34 + 40 + 53 + 65 + 714 + 820 + 918 + 101 + 1112 = 650
输入
一行,由大写字母或空格组成,最多有255个字符。
输出
一行,计算出的和。
样例
输入1 复制
ACM
输出1 复制
http://www.jzoj.cn/problem.php?id=3844 复制
MID CENTRAL
输出2 复制
http://www.jzoj.cn/problem.php?id=3844
?%ra=link

以下代码可供题主参考:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int i,num,sum;
    char s[256];

    while(gets(s),s[0]!= '#')  //循环输入字符串 以 # 结束
    {
       sum= 0;
       num=strlen(s);

       for(i=0; i<num; i++)
       {
          if(s[i]==' ')
          {
              sum+=0;
          }
          else if(s[i]>='A' && s[i]<= 'Z')
          {
              sum+=(i+1)*(s[i]-'A'+1);
          }
       }

       printf("%d\n", sum);
    }
}


运行结果如图:

img


以上仅供参考,希望对题主有所帮助!

#include <iostream>

int main()
{
    std::string string;
    std::getline(std::cin, string);
    int sum = 0;
    for (std::size_t i = 0; i < string.length(); i++)
    {
        if (string[i] == ' ')
            continue;
        sum += (string[i] - 'A' + 1) * (i + 1);
    }
    printf("%d", sum);
    return 0;
}