我一直在一个程序中工作,以完成Project Euler的问题17,我试图在C中完成。 问题:
如果数字1到5用文字写出:一,二,三,四,五,那么总共有3 + 3 + 5 + 4 + 4 = 19个字母。
如果所有1到1000(一千)的数字都用文字写出来,会用多少个字母?
我编写了一个函数,它将所有数字放在1到1000之间的单词中,并放入一个包含1001个元素的数组中(最后一个为迭代时为NULL)。 但是当我尝试计算字符串中每个元素的字符数时,我遇到了麻烦,因为我不知道该怎么做。有人可以给我一些帮助吗?
答案 0 :(得分:5)
你可以这样做:
int char_count = 0;
char **p = array;
while (*p) {
char_count += strlen(*p);
++p;
}
请注意,strlen()
也会计算空格。
如果您不想要空格或特殊字符,您可以编写自己的长度函数,例如:
int string_length (const char *str) {
int len = 0;
while(*str) {
/* Count only lower-case letters a-z. */
if (*str >= 'a' && *str <= 'z') ++len;
++str;
}
return len;
}
答案 1 :(得分:2)
假设您的数组被称为array
...
int count = 0, i;
for (i = 1; i <= 1000; ++i) {
count += strlen(array[i]);
}