我编写了下面的C代码来检查一个数组是否存在于其元素由用户输入的数组中。但奇怪的是,它跳过了第三条printf
声明,在输入后直接输入并打印Enter the number you wish to look for
。这是什么造成的?包含代码下方的输入和输出框。程序检查数组是否出现在数组中[解决]
CODE:
#include <stdio.h>
#include <stdlib.h>
void main() {
int arr[30], size, i, num, flag=0;
printf("Enter size of array. \n");
scanf("%d",&size);
printf("Enter %d array elements one by one. \n",size);
for (i=0; i<size; i++) {
scanf("%d \n",&arr[i]);
}
printf("Enter the number you wish to look for. \n");
scanf("%d",&num);
for(i=0;i<size;i++) {
if (num == arr[i]) {
flag++;
}
}
if (flag>0) {
printf("The number %d is present in the array.",num);
} else {
printf("The number %d is not present in the array.",num);
}
}
输入/输出:
Enter size of array.
5
Enter 5 array elements one by one.
1
2
3
4
5
5
Enter the number you wish to look for.
The number 5 is present in the array.
你可以看到,Enter the number you wish to look for.
应该5
前到来,但它并非如此。我相信这只是我失踪的一些愚蠢的事情。
对不起,任何错误,这是我第一次在这里问一个问题。
编辑:
如果里面的语句如下循环使用固定它。谢谢大家!
printf("Enter %d array elements one by one. \n",size);
for (i=0; i<size; i++) {
if(arr[i] == arr[size-1]) {
scanf("%d",&arr[i]);
break;
}
scanf("%d\n",&arr[i]);
}
编辑2:
阿呆我。只需通过删除\n
进行修复。不需要if语句。再次感谢你!
您正在使用的scanf ()而不检查。更偏执。阅读规范并寻找你没有想到的事情。如果你找到一些,证明它们不会在你的情况下发生。 – Yunnosch
对不起,我没有收到你的评论。该程序起作用,唯一的是它首先输入输入,然后打印该行。你能指出为什么会发生这种情况吗?再次抱歉。 –
这两个upvoted答案都谈论你使用scanf()。问题是你没有想到的行为。我建议阅读规范并寻找你没有想到的东西。您可能会发现这对未来的应用程序很有趣:http://sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html – Yunnosch