我編寫了下面的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