求c语言大神帮忙看看这个程序的问题,小弟初学c语言,看不懂报错说的是什么……

这是我写的程序,想要输入10个数字,每输入一个将输入的数字就从小到大排一下序,如果输入了0就提前结束。
报错的提示语复制在程序底下了,求大神们指导指导~
#include<stdio.h>
void main()
{
printf("input numbers\n");
int i,t,j,temp,k;
int a[10];
for(i=0;i<=9;i++)
{
scanf("%d",&t);
if(t!=0)
{
for(j=0;j<=i;j++)
{
if(t<a[j])
{
temp=a[j];
a[j]=t;
t=temp;
}
}
if(j==9)
{
for(k=0;k<=9;k++)
{
printf("%d\t",a[k]);
}
}
}
else
{
for(k=0;k<=9;k++)
{
printf("%d\t",a[k]);
}
}
}
}

第1个回答  2014-12-04
首先,把主函数第一行放到第三行

其次,
数组a没有初始化,最开始的时候整个数组是没有任何值的
for(j=0;j<=i;j++)
{
if(t<a[j])
{
temp=a[j]; //这里写的没有意义,a没有任何值
a[j]=t;
t=temp;
}
}追问

不是啊,这个循环是把新加入的数t和之前的每一个数做比较

追答

但是在你加入t之前,你的数组a里边是没有任何东西的,a里边的所有东西都是随机值,也就是说你没有给a里边存任何东西,你那句 t<a[j] 是没有任何意义的,就像一个房间里边本来就没有人,你还要信誓旦旦的说你要把里边的人怎么怎么样

第2个回答  2014-12-04
常识性错误呀你,定义变量一定要在所有的函数或者语句前面。
printf("input numbers\n");
int i,t,j,temp,k;
int a[10];
改成:
int i,t,j,temp,k;
int a[10];
printf("input numbers\n");
或者在main(){} 前面定义
int i,t,j,temp,k;
int a[10];
这是全局变量了追问

可是记得教材上说只要在变量前定义就可以啊

追答

编译器顺序编译,肯定要先定义数据呀。你那本书看到的?你说说看

第3个回答  2014-12-04
这是编译平台的问题吗,我是用VC++6.0运行上面的代码并没有报错呀追问

神马,我用的也是VC++6.0啊~
可是我用我的电脑运行以前写的代码都没问题啊

追答

但是我在编译这段代码的时候没有问题,只能代表在语法上没有问题,而算法上的问题就不清楚了。看你这个程序应该是没办法完成你想要的效果,至少需要初始化a[10],或者在输入时将值赋给数组a中的元素。

相似回答