您的位置:首页 > 编程语言 > C语言/C++

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

2016-01-08 11:06 429 查看
方法一:按照行读入。

#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’。同样,进行运算的时候的表示也不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息