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

来源:互联网 发布:qq软件群号码 编辑:程序博客网 时间:2024/04/29 20:40

方法一:按照行读入。

#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’。同样,进行运算的时候的表示也不同。

1 0
原创粉丝点击