输入一组数据,以-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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!