gpt4 book ai didi

c - 我怎样才能使 C 可以将字母与单词分开

转载 作者:行者123 更新时间:2023-12-03 16:46:43 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

7 个月前关闭。




Improve this question




首先很抱歉标题模糊,如果我的问题没有被理解。英语是我的第三语言,很难清楚地表达这个问题。这是我的问题,我想引入一个化学物质公式,如 H3PO4,程序应该将 H 分开,并给他一个变量名称,如 x(我们将有 3x,因为它的 H3)和 PO4 作为另一个变量,如 y。或者更简单的物质,如 HCl,程序应该将其分离为 H 和 Cl 。

最佳答案

您可以通过测试大写字母、小写字母和数字来分解化学式:

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>

struct element {
char symbol[3];
int n;
};

// decompose a formula into an array of elements and counts
int decompose(char *s, struct element *a, int length) {
int i = 0;
while (*s) {
if (isupper((unsigned char)*s) && i < length) {
int j = 0;
a->symbol[j++] = *s++;
if (islower((unsigned char)*s)) {
a->symbol[j++] = *s++;
}
a->symbol[j] = '\0';
a->n = 1;
if (isdigit((unsigned char)*s)) {
a->n = strtol(s, &s, 10);
}
i++;
a++;
} else {
return -1; // syntax error
}
}
return i; // number of elements
}

int main(int argc, char *argv[]) {
struct element array[10];
for (int i = 1; i < argc; i++) {
int n = decompose(argv[i], array, sizeof(array) / sizeof(*array));
if (n < 0) {
printf("%s: syntax error\n", argv[i]);
} else {
printf("%s:\n", argv[i]);
for (int j = 0; j < n; j++) {
printf(" %d %s\n", array[j].n, array[j].symbol);
}
}
}
return 0;
}
示例运行:
$ ./chem HCl H3PO4 XePtF6
1 H
1 Cl
H3PO4:
3 H
1 P
4 O
XePtF6:
1 Xe
1 Pt
6 F

关于c - 我怎样才能使 C 可以将字母与单词分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66661703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com