只有C H O N元素
C 12。01 H 1。008 O 16。00 N 14。01
输入C6H5OH
输出94.108
*/
#include<stdio.h>
int main()
{
printf("请输入化学式:\n")
char c
int count_c=0,count_h=0,count_o=0,count_n=0
double mass=0.0
int count=0
scanf("%c",&c)//读取第一个字符
while(c!='\n') //读取字符直到回车
{
switch (c) { //处理四种情况,四种元素
case 'C': //C元素
scanf("%c",&c) //读取下一个字符
if((c>='0')&&(c<='9'))//如果下一个是数字则准备读该数字否则准备该元素加一
count=0
else count=1
while((c>='0')&&(c<='9'))//读取元素符号后面的数字
{
count=count*10+(c-'0')
scanf("%c",&c)
}
count_c+=count//累加该种元素
break
case 'H':
scanf("%c",&c)
if((c>='0')&&(c<='9'))
count=0
else count=1
while((c>='0')&&(c<='9'))
{
count=count*10+(c-'0')
scanf("%c",&c)
}
count_h+=count
break
case 'O':
scanf("%c",&c)
if((c>='0')&&(c<='9'))
count=0
else count=1
while((c>='0')&&(c<='9'))
{
count=count*10+(c-'0')
scanf("%c",&c)
}
count_o+=count
break
case 'N':
scanf("%c",&c)
if((c>='0')&&(c<='9'))
count=0
else count=1
while((c>='0')&&(c<='9'))
{
count=count*10+(c-'0')
scanf("%c",&c)
}
count_n+=count
break
default:
printf("errorbad input\n")
break
}//end switch
}//end while
//printf("C%dH%dO%dN%d\n",count_c,count_h,count_o,count_n)
mass=12.01*count_c+1.008*count_h+16.00*count_o+14.01*count_n//计算总质量
printf("mass:%lf\n",mass)//输出总质量
system("pause")//暂停等待用户继续
}
绝对不是,绝对不是原子操作是指 一句汇编指令。但是 i++是指 i 先被使用虽然咱们这里并没有使用,但实际上会被 临时存储下来。然后i=i+1。
所以算2句