为什么第三个scanf 不执行(求大佬帮助)

#include
#define MAX 1000

int main() {
int n;
int b;
int a[MAX];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &n);
a[i] = n;
}
printf("请输入所查找的值\n");
scanf("%d",&b);
for (int i = 0; i < n; i++)
{
if (a[i] == b) {
printf("第%d给元素为所找元素", i);
break;
}
printf("未找到此元素");
}

样例输入4
1 2 3 4 
3
样例输出2

图片说明

for (int i = 0; i < n; i++) {
        scanf("%d", &n);
        a[i] = n;
}

这部分程序出现问题,for循环里面使用scanf语句输出n后,将n值改变了也就是
for循环的次数变了。会造成输出错误。应改为:

for(i = 0; i < n; i ++) {
        scanf("%d",&a[i]);
    }

scanf("%d", &n);
a[i] = n;
->
scanf("%d", &a[i]);

scanf("%d",&b);
前面加上
fflush(stdin);

for (int i = 0; i < n; i++) {
scanf("%d", &n);
a[i] = n;
}

手动输入n后,for循环的中止条件也在不断变化,循环次数未知。
应该使用另一个变量来接收输入的数值。
后面,找到指定的数后,也会走到printf("未找到此元素");需要改改,推荐goto
另外,printf最好都加上\n

不知道有没有理解错,可供参考

#include <stdio.h>
#include <windows.h>
#define MAX 100
int main()
{

    int n=0, b=0, a[MAX];
    memset(a, 0, sizeof(a) );
    BOOL flag = FALSE;
    printf("请输入一个小于100的数:");
    scanf_s("%d", &n);
    while (n > 100 || n < 0)
    {
        printf("请重新输入一个数:");
        scanf_s("%d", &n);
    }
    for (int i = 0; i < n; i++)
    {
        a[i] = i;
    }
    printf("请输入所查找的值:");
    scanf_s("%d", &b);
    for (int i = 0; i < n; i++)
    {
        if (a[i] == b) {
            printf("第%d个元素为所找元素\n", i);
            flag = TRUE;
            break;
        }

    }
    if (!flag)
    {
        printf("未找到元素\n");
    }
    system("pause");
    return 0;
}