例如吧:H2So4
拆分成:H2,So4
遍历串。
1遇到首字母大写 下一个字母也大写的 直接输出指针位置字母
2遇到首字符是字母 下一个字母是数字的,直接输出字母,指针跳到下一个字符判断
遇到首字母大写,下一个字母小写的 直到遇到数字或大写,输出这些指针位
关键点:从样例数据分析,是不是每个化学元素的首字母是大写
知识点:大写字符、小写字符的 ASCII 码区间是不是不同?
流程:按照字符一个一个判断,每次打印的时候,判断下一个字符是不是大写,如果下一个字符是大写,除了打印当前字符,再打印一个逗号
供参考:
#include <stdio.h>
#include <ctype.h>
int main()
{
int i = 0,s = 0;
char str[16]="H2So4Na3K",c;
while (1){
c = str[i];
if(c == '\n' || c == '\0') break;
switch(s){
case 0:if(isupper(c)) {putchar(c);s = 1;} break;
case 1:if(islower(c) || isdigit(c)){putchar(c);}
else{putchar(','); s = 0; i--;} break;
}
i++;
}
return 0;
}