題意按照分子式求有機物摩爾質量
思路:輸入放入myinput數組,把所有原子質量放入a數組,把原子個數放入b數組.最後a、b數組相同下標相乘。
爲解決這個問題,先設有一個函數,可以把原子個數放入b數組。
(1)先寫出主函數
(2)解決把原子個數放入b數組這個問題。
注意:不要亂寫i有可能會跳過輸入的數據,所以用變量now。
#include<stdio.h>
#include<string.h>
#define maxn 1100
int fun(char myinput[],int b[])
{
int sum=0;
int j=0;
int n=strlen(myinput);
for(int i=0;i<n;i++){
sum=0;
if(myinput[i]=='C') j=0;
else if(myinput[i]=='H') j=1;
else if(myinput[i]=='O') j=2;
else if(myinput[i]=='N') j=3;
if ((myinput[i]<'0'||myinput[i]>'9')&&(myinput[i+1] < '0' || myinput[i+1] > '9'))
sum+=1;
if(myinput[i]>='C'&&myinput[i]<='O'){
int now=i+1;
while(myinput[now]>='0'&&myinput[now]<='9')
sum=sum*10+(myinput[now++]-'0');
}
b[j]+=sum;
}
return 0;
}
int main()
{
double a[4]={12.01,1.008,16.00,14.01};
char myinput[maxn];
int b[4];
int T;
scanf("%d",&T);
while(T--){
double sum=0;
int ssum=0;
memset(myinput,0,sizeof(myinput));
memset(b,0,sizeof(b));
scanf("%s",&myinput);
fun(myinput,b);
for(int i=0;i<4;i++)
sum+=(a[i]*b[i]);
printf("%.3lf\n",sum);
}
return 0;
}