我们新手写题时总能看到题目中类似这样的输入
没有给固定多少个数据,我们没有办法直接设置数组的元素个数,很纠结,下面我来提供一下本人的方法(新手,看到有错误或者不好的地方欢迎大佬指出,纠正,谢谢)
#include<stdio.h>
int main()
{
int arr[100];
int i=0;
while(arr[i]!=-1)//当数组元素不为-1
{
i++;
scanf("%d",&arr[i]);
}
for(int k=1;k<i;k++)
{
printf("arr[%d]=%d ",k,arr[k]);
}
return 0;
}
可以看到,当我们在-1后面继续输入元素,程序不会打印出来,这时候你们可能好奇这不是for循环限制了它输出个数了吗,那么我们把for循环改一下,改成i+5,我们再试一次
这是我们改成i+5后的输出结果,在-1后面的数字都没有被正常输出,全是乱码值,因为在while循环中,我们在结尾输入arr【i】,假如rr【i】等于-1,那么这个循环就不会继续进行,数组中也就不会保存你输入-1之后输出的值,当然-1还是被保存到数组中,不想在结果中有-1我们只需要让k在循环中不等于i值就好。
上面用的while循环,同理,你懂用for,或者 do while也一样可以实现
#include<stdio.h>
int main()
{
int arr[100];
int i=0;
do
{
i++;
scanf("%d",&arr[i]);
}while(arr[i]!=-1);
for(int k=1;k<i;k++)
{
printf("arr[%d]=%d ",k,arr[k]);
}
return 0;
}
#include<stdio.h>
int main()
{
int arr[10];
int i=0;
while(1)
{
i++;
scanf("%d",&arr[i]);
if(arr[i]==-1)
break;
}
for(int k=1;k<i;k++)
{
printf("arr[%d]=%d ",k,arr[k]);
}
return 0;
}
这几个代码都是等效的