C++
/*******************wrong answer***********************************/
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
int sum;
int i;
while (getline(cin,s,'#')){
sum = 0;
for (i = 0; i < s.size(); i++){
if (s[i] >= 'A' && s[i] <= 'Z')
sum += (s[i] - 'A' + 1)*(i + 1);
}
cout << sum << endl;
// cout << sizeof(string)<<endl;
}
return 0;
}
/**********************Accepted********************************************/
#include<iostream>
using namespace std;
const int N = 256;
int main(){
char s[N] = {'\0'};
while (cin.getline(s, N)){
if (s[0] == '#')
break;
int i = 0;
int sum = 0;
while (s[i] != '\0'){
if (s[i] != ' '){
sum += (i + 1) * (s[i] - 'A' + 1);
}
i++;
}
cout << sum << endl;
}
return 0;
}
C
/******Accepted************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char s[256];
int sum, i;
while(gets(s) && s[0] != '#'){
sum = 0;
for(i = 0; i< strlen(s); i++)
if(s[i] >= 'A' && s[i] <= 'Z')
sum += (s[i] - 'A' + 1) * (i + 1);
printf("%d\n", sum);
}
return 0;
}
主要是c++部分使用while(getline(cin,s))和用错了sizeof(s)导致非法访问s[i]而在运行的时候弹窗。
getline()详细用法参考http://blog.sina.com.cn/s/blog_60263c1c0101ck25.html