首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个循环,只有一个正在显示

两个循环,只有一个正在显示
EN

Stack Overflow用户
提问于 2022-04-03 14:47:39
回答 2查看 37关注 0票数 -1

这个程序没有识别第二个for循环。打印长度后,它就停止了。寻找这个结果:41 W(数组的大小:5 4-是的,这是数字1-是的,这是数字W-是的,这是一个字母表。是的,这是字母表。(不,这不是数字或字母

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    char misc[5];

    misc[0] = '4';
    misc[1] = '1';
    misc[2] = 'W';
    misc[3] = 'H';
    misc[4] = '(';
    misc[5] = '\0';

    size_t length = sizeof(misc)/sizeof(misc[0]);

    for(int a; a < length; a++)
    {
        printf("%c", misc[a]);
    }

    printf("\nSize of Array: %d\n", length);

    for(int i; i<length; i++)
    {
        if (misc[i] >= '0' && misc[i] <= '9')
        {
            printf("%c - ", misc[i]);
            printf("Yes, this is a number\n");
        }
        else if ((misc[i] >= 'a' && misc[i] <= 'z') || (misc[i] >= 'A' && misc[i] <= 'Z'))
        {
            printf("%c - Yes, this is an alphabet.\n", misc[i]);
        }
        else
        {
            printf("%c - ", misc[i]);
            printf("No, this is not a number or alphabet\n");
        }
    }
    return 0;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-03 14:54:48

对于数组的长度,您有一个越界错误(逐个关闭)。此外,您也没有用0初始化int a。下面的代码适用于我。

代码语言:javascript
复制
#include <stdio.h>

int main()
{
    size_t length = 6;
    char misc[length]; // 6 not 5

    misc[0] = '4';
    misc[1] = '1';
    misc[2] = 'W';
    misc[3] = 'H';
    misc[4] = '(';
    misc[5] = '\0'; // not out of bounds anymore

    for(int a = 0; a < length; a++) // Initilize with 0 here
    {
        printf("%c", misc[a]);
    }

    printf("\nSize of Array: %d\n", length);

    for(int i = 0; i<length; i++) // Initilize with 0 here, too
    {
        if (misc[i] >= '0' && misc[i] <= '9')
        {
            printf("%c - ", misc[i]);
            printf("Yes, this is a number\n");
        }
        else if ((misc[i] >= 'a' && misc[i] <= 'z') || (misc[i] >= 'A' && misc[i] <= 'Z'))
        {
            printf("%c - Yes, this is an alphabet.\n", misc[i]);
        }
        else
        {
            printf("%c - ", misc[i]);
            printf("No, this is not a number or alphabet\n");
        }
    }
    return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2022-04-03 14:53:41

您的代码有未定义的行为。这几乎就是解释的结尾。

misc

  • you数组的最高合法索引4之外的
  • (如Cediwelli所指出的那样)使用i,而从未初始化i
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71726941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档