我的for循环(c语言)在vscode中没有循环

问题描述 投票:0回答:1

在下面的代码中,我尝试通过创建 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;
}

这是我运行程序时得到的结果。 enter image description here

我以前使用过 for 循环,我不知道我做错了什么,我开始认为这是一个 VScode 问题(在新的更新之后),因为我使用了这个确切的代码(但是使用是数字)。 请帮忙!!!

c loops for-loop visual-studio-code boolean
1个回答
0
投票

逻辑是错误的,你总是在检查第一个字母时

return
,无论它是什么。相反,您应该返回第一个无效字母,或者如果没有找到无效字母,则在末尾返回
true

for(int i = 0; i < q; i++)
{
    if(!isalpha(a[i]))
    {
        return false;
    }
}
return true;
© www.soinside.com 2019 - 2024. All rights reserved.