输入一组数据,以-1结束输入[c]

2023-12-14 03:15:37

我们新手写题时总能看到题目中类似这样的输入

没有给固定多少个数据,我们没有办法直接设置数组的元素个数,很纠结,下面我来提供一下本人的方法(新手,看到有错误或者不好的地方欢迎大佬指出,纠正,谢谢)

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

这几个代码都是等效的

文章来源:https://blog.csdn.net/2301_80108815/article/details/134911907
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。