#include
#include
int main()
{
const double d[]={0,0,12.01,0,0,0,0,1.008,0,0,0,0,0,14.01,16.00};
char str[100][100]={'\0'};
char x;
double sum[100]={0},n=0;
int numble=0;
scanf("%d",&numble);
for(int j=0;j0;
gets(str[j]);//???
for(int i=0;ifor(int i=0;str[j][i]!='\0';i++)
{
if(isalpha(str[j][i]))//是字母
{
x=str[j][i];
sum[j]+=d[x-'A'];
}
else//是数字
{
n=str[j][i]-'0';
while(isdigit(str[j][i+1]))
{
n=n*10;
n+=str[j][i+1]-'0';
i++;
}
sum[j]+=(n-1)*d[x-'A'];
}
}
printf("%.3f",sum[j]);
}
}
}
重新修改见注释,供参考:
#include<stdio.h>
#include<ctype.h>
int main()
{
const double d[]={0,0,12.01,0,0,0,0,1.008,0,0,0,0,0,14.01,16.00};
char str[100]={'\0'}; //[100] 修改
char x , fx; //修改
double sum[100]={0},n=0;
int numble=0;
scanf("%d",&numble);
getchar(); //修改
for(int j=0;j<numble;j++)
{
scanf("%s", str); //gets(str[j]);
//for(int i=0;i<numble;i++) 修改
n=0; //{ 修改
for(int i=0;str[i]!='\0';i++)
{
if(isalpha(str[i]))//是字母
{
x=str[i];
sum[j]+=d[x-'A'];
if (n != 0)
sum[j] += (n-1)*d[fx-'A'];
fx = x;
n=0;
}
else//是数字
{
n = n * 10 + str[i]-'0';
//while(isdigit(str[j][i+1]))
//{
// n=n*10;
// n+=str[j][i+1]-'0';
// i++;
//}
if (str[i+1] == '\0')
sum[j] += (n-1)*d[fx-'A'];
}
}
printf("%.3f\n",sum[j]);
//}修改
}
return 0;
}