#include<stdio.h>
int main()
{
int i=0,a;
int b[10000000];
while(scanf("%d",&a)!=0)
{
b[i]=a;
i++;
}
int j=0;
for(j=i-1;j>=0;j--)
{
printf("%d ",b[j]);
}
return 0;
}
是你数组开大了吗?但不应该不运行就退出了啊,我修改了一下可以运行,如下:
#include<stdio.h>
int main()
{
int i=0,a;
int b[256];
while(scanf("%d",&a)!=0&&a!=0)
{
b[i]=a;
i++;
}
int j=0;
for(j=i-1;j>=0;j--)
{
printf("%d ",b[j]);
}
return 0;
}
在函数内部不能分配过大的数组,栈会放不下,把数组放在全局区
#include<stdio.h>
int b[10000000];
int main()
{
int i=0,a;
while(1)
{
scanf("%d", &a);
if (a != 0)
{
b[i] = a;
i++;
}
else
{
break;
}
}
int j=0;
for(j=i-1;j>=0;j--)
{
printf("%d ",b[j]);
}
return 0;
}
修改处见注释,供参考:
#include<stdio.h>
int main()
{
int i = 0, a;
int b[100000] = { 0 }; //int b[10000000];
while (scanf("%d", &a) == 1 && a != 0)//while (scanf("%d", &a) != 0)
{
b[i] = a;
i++;
}
int j = 0;
for (j = i - 1; j >= 0; j--)
{
printf("%d ", b[j]);
}
return 0;
}