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

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

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

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

这几个代码都是等效的

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值