任务:创建一个C代码,从用户那里获取一些文本输入,并打印出其中字母数的计数。字母可以是任何大写字母或小写字母字符,但不应该包括任何标点符号、数字或其他符号。
#include <stdio.h>
#include <ctype.h>
#include <cs50.h>
#include <string.h>
int main (void)
{
char alphabets[] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
string text = get_string("Text: ");
int length = strlen(text);
int n = 0;
for (int i = 0; i < length; i++)
{
for (int j = 0; j < length; j++)
{
if (alphabets[j] == text[i] || toupper(alphabets[j]) == text[i])
{
m++;
}
}
if (m == 0)
{
length--;
}
m = 0;
}
printf ("%i letter(s) \n", length);
}发布于 2021-07-09 19:58:01
你应该使用isalpha
然后你可以简单地做:
int main (void)
{
string text = get_string("Text: ");
size_t length = strlen(text);
int n = 0;
for (size_t i = 0; i < length; ++i)
{
if (isalpha(text[i])) ++n;
}
printf ("%i letter(s) \n", n);
}发布于 2021-07-09 19:59:50
嵌套的for循环以及在此调用中使用的变量length。
printf ("%i letter(s) \n", length);别说得通。
也是这个变量
int n = 0;都没有用过。
调用标准函数strlen效率低下。
您所需要的只是一个for循环,在这个循环中,您将检查给定的字符是否代表一个字母。
注意,在标头isalpha中声明了标准的C函数<ctype.h>,它决定了一个字符是否是字母。
该程序可以如下所示
#include <stdio.h>
#include <ctype.h>
#include <cs50.h>
int main( void )
{
string text = get_string( "Text: " );
size_t n = 0;
for ( string current = text; *current != '\0'; ++current )
{
if ( isalpha( ( unsigned char )*current ) ) ++n;
}
printf( "%zu letter(s)\n", n );
}https://stackoverflow.com/questions/68321866
复制相似问题