c - array 要么不打印出计数,要么打印出多次

标签 c arrays

这个小程序基本上应该获取用户输入,读取它是否有任何 a 或 A,并将这些计数存储到 Array[] 中。然后打印出 Array[] 的计数。

#include<stdio.h>

main()
{
    int Array[100] = {0};

    int i;

    char input[100];

    printf("Enter a message:...");
    gets(input);

    for(i=0; input[i]!='\0'; i++)
    {
        if (input[i]=='a' || input[i]=='A') {Array[i]++;}   
    }

    printf("Total A's:%d\n",Array[i]);
}

来自控制台的示例输入/输出:

 Enter a message:...harry 

 Total A's:0

很明显,输入中有一个“a”,但它没有被考虑。现在我尝试将 printf 放在 for 循环中,但它会输出:

Enter a message:...harry 

 Total A's:0 

 Total A's:1 

 Total A's:0 

 Total A's:0 

 Total A's:0

发生的事情显然是它读取消息有多少个字符,并检查每个索引是否有一个,这是应该做的,但它也在每个索引处打印出这个输出。

它应该只 printf 一次。所以将 printf 放入循环中确实有效,但会生成此“错误”

最佳答案

问题是

 printf("Total A's:%d\n",Array[i]);

并没有按照您的想法行事。从逻辑的角度来看,您尝试打印的值无用

不是为每次出现的 'A''a' 递增 count,您只是递增的初始值您在 input 中找到匹配项的特定索引(Array 的)。之后,您将以任何方式打印索引变量的值,该值未被更改(提示:在循环<之后检查 i 的值).

显然,您不需要数组来保存单个变量的计数。只需使用普通变量,将其初始化为 0 并继续递增。

关于c - array 要么不打印出计数,要么打印出多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43315511/

相关文章:

c - 如何从文件中读取数字并将它们分配给多个数组? - C

Java读取学生记录并计算每次测验的高低和平均值

javascript - 将对象的特定属性转换为对象数组

c++ - 如何从正在运行的 VC++ 项目生成 DLL?

关于C中union的代码片段问题

c - 如何创建通用的 C 自由函数

arrays - 在 Swift 中,有没有办法将数组元素分配给多个变量?

php - 如何组合多维数组的值和键?

c - Linux 中如何解决库间依赖关系?

c - 为什么“while(!feof(file))”总是错误的?