C语言 求分子式的分子质量

要求:1:不带括号的分子式求解
2:带一层括号的分子式求解

不带括号的分子式
用high和low记住每次扫描的最高位和最低位,不能求解多为整数时的系数

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

typedef struct 
{
	char w[10][2];
	int num[10];
} ele;


int  flag(char a[2],ele b)                         //原子质量b.num[m],确定m的值 
{
	int m=0,i,j;
	for(i=0;i<10;i++)
	{   if(a[1]!='\0')                             //所输入元素有两个字母
		{
		  if(a[0]==b.w[i][0])
		     if(a[1]==b.w[i][1])
		        {
				   m=i;break;
				}
	    }
		else                                       //所输入元素只有一个字母 
		{
			if(a[0]==b.w[i][0])   
			   {
			      m=i;
			      break;
			   }
		}
		
	}
	return(m);   
}
	
	
int find(char s[10],int low)                             //找到每次扫描的最高下标 
{
	int high;
	high=low+1;                                             //赋初值 
	  
	while(s[high]!='\0')
	{
		if(s[high+1]=='\0')                           
		{
			
			  if(s[high]>='A'&&s[high]<='Z')
			     return(high);
			  else
			  {
			  	high++;
			   return(high);
			  }	  
		}
		else
		  if(s[high]>='A'&&s[high]<='Z')
		    return(high);
		  else
		    high++;
	}
	if(s[high]=='\0')                                 //已经扫描到最后一位 
	{
		return(high);
	}	 
}

int sum(char s[38],ele b)                         //求总的分子量 
{
	int quality=0;
	int low=0,j=0,m,high,t;
	char a[2];
	high=find(s,0);
    do                       //s[38]
	{  
		t=1;
		a[0]='\0';
		a[1]='\0';
		 do
		    {
			     while(low<high)
		         {
		         	if(a[0]=='\0')
		         	{
		         	  a[0]=s[low];
					  low++;
					  if(s[low]>='a'&&s[low]<='z')
					     a[1]=s[low];
					  else
					    break;	
					 }
					 else
					 {
					 	low=high;
					 	break
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值