这个小程序基本上应该获取用户输入,读取它是否有任何 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/