将不多于10个的正整数输入到数组a[ ]中,以-1作为结束符, 要求数组的值按逆序重新存放并输出

将不多于10个的正整数输入到数组a[ ]中,以-1作为结束符, 要求数组的值按逆序重新存放并输出(不包含-1)。
输出语句必须是:
for(i=0;i<n;i++) printf("%d ",a[i]);
例如,输入: 8 6 5 4 1 -1
输出 1 4 5 6 8。
注意输入数据和输出数据的格式,且注意-1并不在逆序存放的范围内。#include <stdio.h>
int main()
{ int a[10],i=0,k,j,t;
while(a[i]!=-1)
scanf("%d",&a[++i]);
k++;
for(i=0;i<k-1;i++)
{for(j=0;j<k-i-1;j++)
{if(a[j]>a[j+1])
{t=a[j+1];
a[j+1]=a[j];
a[j]=t; }
}
}
for(i=0;i<k-1;i++)
printf("%d ",a[i]);
}

这是我写的出不来,我很菜,求高手解答

根据你的C语言程序改写的逆序输出数组元素的C语言程序如下,你看看吧

#include <stdio.h>

int main()

{

 int a[10],n=0,i=0,t;

 scanf("%d",&a[n]);

  while(a[n]!=-1)

  scanf("%d",&a[++n]);

 //把0和n-1交换,1和n-2交换,以此类推,直到中间的数组元素交换,完成数组逆序排列

 for(i=0;i<n/2;i++)

 {

  t=a[i]; 

  a[i]=a[n-i-1]; 

  a[n-i-1]=t; 

 } 

 for(i=0;i<n;i++) printf("%d ",a[i]);

 return 0;

}

运行结果

追问

为什么开始要两次scanf,这样为什么就可行,使其结束于-1

温馨提示:答案为网友推荐,仅供参考