http://acm.hdu.edu.cn/showproblem.php?pid=2734
思路挺简单的题目却折腾了好久,刚开始想把字符一个一个读进一个数组里,但却对开多大的数组产生了疑惑(后来看大神们的代码,普遍数组都开10000),便想避开,用c++的string直接cin,可是cin读字符串不把空格读进去,这道题需要计算空格。后来想到用gets(),这个函数呀....gets(char),虽然是读入字符,但只要开个字符数组,就能读字符串了...还是学艺不精呀,走了那么多弯路。
还是把自己的代码放上来做个警戒
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char s; 6 scanf("%c",&s); 7 while(s!='#') 8 { 9 int i=1,sum=0; 10 while(s!=10) 11 { 12 if(s>='A'&&s<='Z') 13 sum+=(i++)*(s-64); 14 if(s==' ') 15 i++; 16 scanf("%c",&s); 17 } 18 printf("%d ",sum); 19 scanf("%c",&s); 20 } 21 }
大神代码
1 #include <string.h> 2 #include <stdio.h> 3 4 int main() 5 { 6 char str[10000]; 7 int len,i,a[26],sum; 8 for(i = 0;i<26;i++) 9 { 10 a[i] = i+1; 11 } 12 while(gets(str)) 13 { 14 if(strcmp(str,"#") == 0) 15 break; 16 len = strlen(str); 17 sum = 0; 18 for(i = 0;i<len;i++) 19 { 20 if(str[i]>='A' && str[i]<='Z') 21 sum+=(i+1)*a[str[i]-'A']; 22 } 23 printf("%d ",sum); 24 } 25 26 return 0; 27 }
自己感觉这个代码里的a数组挺多余的....strcmp也没必要用....囧