算法入门经典P57-习题3-2(化学分子式分子量的计算)

复制代码
#include<iostream>
#include<string.h>
#include<ctype.h>
using namespace std;
int main(){
    double score = 0,data[] = {12.01,1.008,16.00,14.01};
    char data_c[] = {'C','H','O','N'};
    char s[105],s_c[50];
    int s_num[50];
    scanf("%s",s);
    int i,j = 0,k = 0,len = strlen(s);
    memset(s_num,0,sizeof(s_num));
    for(i=0;i<len;i++){
        if(isalpha(s[i])){
            if(i>0&&isalpha(s[i-1])){
                s_c[j++] = s[i];
                s_num[k++] = 1;
            }
            else{
                s_c[j++] = s[i];
            }
        }
        else{
            int temp = s[i]-'0';
            while(i+1<len&&isdigit(s[i+1])){
                temp *= 10;
                temp += s[i+1]-'0';
                i++;
            }
            s_num[k++] = temp;
        }
    }
    if(s_num[k]==0){
        s_num[k] = 1;
        k++;
    }
    for(i=0;i<j;i++){
        for(k=0;k<4;k++){
            if(s_c[i]==data_c[k]){
                score += data[k] * s_num[i]; 
            }
        }
    }
    printf("%lf\n",score);
    return 0;
}
复制代码

 

posted @   智人心  阅读(123)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示