#include<stdio.h>
int main()
{
char c;
double k,m=0,count=0;
scanf("%c",&c);
while(c!='\n')
{
if(c=='C') k=12.01;
if(c=='H') k=1.008;
if(c=='O') k=16.00;
if(c=='N') k=14.01;
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);
}
m=m+count*k;
}
printf("%.3lf\n",m);
}
在倒数第七行的(c-’0‘)是什么意思?
将字符转换为对应的数字
因为ascii码中,数字区是连续排列的
假设c是 '3',也就是ascii=51,那么要得到数字3,就要减去0的ascii,也就是-48=3,而48也就是'0'
字符是字符,数字是数字,字符如何转数字?
每个字符都有一个ascii码值
char -> int(ascii)
'0' -> 48
'1' -> 49
.
.
.
'A' -> 65
'B' -> 66
.
.
.
'a' -> 97
'b' -> 98
等等
用字符和数字或字符直接进行运算,是用ascii码值相运算。
c为字符,‘0’也是字符,c-‘0’就是c的ascii减‘0’的ascii即减去48。