求输入字符串的位置*该字符的值的和,空格不计入---C++

方法一:按照行读入。

#include <fstream>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{

   char c[21];
   int sum=0;
   int i;
   while (cin.getline(c,21))
   {
       if (c[0]=='#') break;
       for (i=0;c[i]!='\0';i++)
       {
           if(c[i]!=' ') sum=sum+(i+1)*(c[i]-64);
       }
       cout<<sum<<endl;

   }
return 0;
}

方法二:逐个字符读入。

#include <fstream>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
    char a;
    int sum=0;
    int i=1;
//cin 会忽略回车、空格、 Tab 跳格
//采用 cin.get()一个一个读,就不会忽略任何字符
//也可以采用 cin.getline()一行一行读入
    while(cin.get(a))
    {
        if(a=='#')break;
        if (a!='\n')
        {
            sum=sum+i*(a-64);
            i++;
        }
        if(a=='\n')cout<<sum<<endl;
    }
    return 0;
}

两种方法不同的点在于,按照行读入需要一个字符数组进行存储,而且需要判断的是结束符’\0’.
而逐个字符读入是不需要字符数组进行存储的,需要判断的是换行符’\n’。同样,进行运算的时候的表示也不同。

你可能感兴趣的:(C++,字符位置乘积和)