UVa 1586
来源:互联网 发布:51单片机控制马达 编辑:程序博客网 时间:2024/05/08 06:13
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define max 1000
char sub[100][100];
int main()
{
char s[max];
int T;
scanf("%d", &T);
while (T--)
{
scanf("%s", s);
memset(sub,0,sizeof(sub));
double sum = 0.0;
int length = strlen(s);
int j = 0,k = 0;
int flag = 0; //遇到一个字母后跟两个数字或更多数字时,下标j只减一次
for (int i = 0; i < length; i++)
{
if (isupper(s[i]))
{
k = 0;
sub[j++][k] = s[i];
flag = 0;
}
else
{
if (flag == 0)
{
j--;
flag = 1;
}
k++;
sub[j][k] = s[i];
if (isupper(s[i + 1]))
j++;
}
}
for (int i = 0; i <= j; i++)
{
int k = 1;
int num = 0;
while (sub[i][k])
{
num *= 10;
num += sub[i][k] - '0';
k++;
}
if (num != 0)
{
if (sub[i][0] == 'C')
{
sum += 12.01 * num;
}
else if (sub[i][0] == 'H')
{
sum += 1.008 * num;
}
else if (sub[i][0] == 'O')
{
sum += 16.00 * num;
}
else if (sub[i][0] == 'N')
{
sum += 14.01 * num;
}
}
else
{
if (sub[i][0] == 'C')
{
sum += 12.01 ;
}
else if (sub[i][0] == 'H')
{
sum += 1.008 ;
}
else if (sub[i][0] == 'O')
{
sum += 16.00 ;
}
else if (sub[i][0] == 'N')
{
sum += 14.01 ;
}
}
}
printf("%.3f\n", sum);
}
return 0;
}
- UVa-1586
- UVa 1586
- UVa 1586
- UVA 1586
- Uva 1586
- UVA-1586
- 【UVa - 1586】
- UVa-1586
- UVA 1586
- UVa.1586
- UVA 1586
- UVA 1586
- UVA 1586
- uva 1586
- uva 1586 - Molar mass
- UVa 1586 - Molar mass
- UVa 1586 - Molar mass
- UVA 1586 ----Molar mass
- 黑马程序--异常概述
- linux详细命令
- iOS3D转场动画
- 关于下拉菜单的onmouseover事件
- C#反射概念以及实例详解
- UVa 1586
- 开发中的效率工具
- C语言运算符优先级与结合方向
- 【计蒜客系列】挑战难题2:整除问题
- mysql组内排序(分析函数)解决方案
- redmine备份 重装系统后,redmine数据恢复
- 数学题hdu2523
- 【leetcode】Largest Rectangle in Histogram
- jstack分析cpu占用100%(转)