在下面的代码中,我尝试通过创建 bool 函数来检查字符串数组中的每个字符是否按字母顺序排列。但是当我运行程序时,我的 bool 函数不会循环遍历字符串数组,而只检查字符串数组中的第一个字符。进一步的调试还表明该函数确实没有循环遍历字符串数组。
p.s 这是我针对 CS50 问题所做的测试。
#include <cs50.h>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
bool only_alpha(string a);
int main(void)
{
string s = get_string("String: ");
if(only_alpha(s))
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
bool only_alpha(string a)
{
int q = strlen(a);
//check if each char in string is alphabetical
for(int i = 0; i < q; i++)
{
if(isalpha(a[i]))
{
return true;
}
else
{
return false;
}
}
return 0;
}
我以前使用过 for 循环,我不知道我做错了什么,我开始认为这是一个 VScode 问题(在新的更新之后),因为我使用了这个确切的代码(但是使用是数字)。 请帮忙!!!
逻辑是错误的,你总是在检查第一个字母时
return
,无论它是什么。相反,您应该返回第一个无效字母,或者如果没有找到无效字母,则在末尾返回 true
:
for(int i = 0; i < q; i++)
{
if(!isalpha(a[i]))
{
return false;
}
}
return true;