您的位置:首页 > 其它

UVa 1586 Molar mass

2017-10-19 23:07 411 查看
用switch进行用字符型遍历,sum进行累加。

遇到数字后看下一位是否为数字,如果是将前一位数字乘10加上该位即可。ch减去字符型0为了得到整型

#include<stdio.h>
#include<string.h>
#include<ctype.h>

int main(void)
{
char ch[85], cup;
int n, len, t;
const float C = 12.01, O = 16.00, H = 1.008, N = 14.01;
float count, num, sum, digit[100];

scanf("%d", &n);

while(n--)
{
sum = 0;
scanf("%s", ch);
len = strlen(ch);

for(int i = 0, t = 0; i <= len; i++)
{
int num = 1;

if (isdigit(ch[i]))
{
if (isdigit(ch[i+1]))
{
num = (ch[i] - '0') * 10 + ch[i+1] - '0';
}
else
num = ch[i] - '0';

}

switch(ch[i-1])
{
case 'C': sum += C*num; break;
case 'O': sum += O*num; break;
case 'H': sum += H*num; break;
case 'N': sum += N*num; break;
}

}

printf("%.3f\n", sum);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: