#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;
}