请大家帮我看看哪错了(c语言)

来源:百度知道 编辑:UC知道 时间:2024/06/05 16:58:41
#include <stdio.h>
#include <stdlib.h>

void orderSreach(int *arr,int num,int key)
{
int i;
for(i=0;i<num;i++)
{
if(key==arr[i])
{
printf("%d",++i);
//continue;
}
}
}

void main()
{
int ch,i=0,keyWord;
int a[10]={0};
printf("please input numbers:\n");
while(a[i-1]!=-1 || i<=10)
{
printf("%d",i);
scanf("%d",a+i);

i++;
}
printf("please input keyword:\n");
scanf("%d",&keyWord);
orderSreach(a,i,keyWord);
}
我每次做输入一串数字存数组的时候,都觉得很蹩脚,能给个例子吗?
我想以结束符来结束数组,不想用规定好的长度

#include <stdio.h>
void orderSreach(int *arr,int num,int key)
{
int i;
for(i=0;i<num;i++)
{
if(key==arr[i])
{
printf("%d",++i);
//continue;
}
}
}

void main()
{
int i=0,keyWord;
int a[10]={0};
printf("please input numbers:\n");
while( i<10)//要比10小 要不然等于10 又循环一遍 会出错
{
printf("%d",i+1);
scanf("%d",a+i);
if (a[i]==-1) //放在里面
break;
i++;
}
printf("please input keyword:\n");
scanf("%d",&keyWord);
orderSreach(a,i,keyWord);
}
这个就可以满足你的要求 你可以试试用-1结束数组的输入

for(i=0;i<num;i++)
{
if(key==arr[i])
{
printf("%d",++i); //??你是想输出key在数组中的序号,但++i和for中的 i++把挨着的下一个数漏掉了。你可以另外定义k=i+1
//continue;
}
}

其他的不想看了

程序可以编译通过.
逻辑错误只有LZ自己找了.

WHILE 循环里面