帮我看下这程序哪里出错了?

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:44:31
运行下就知道我想问什么了
下面我调用涵数时,第一次调用成功,第二次数据不对,这程序可以运行!

#include<stdio.h>
void smallTobig(int a[])
{
for(int i=0;i<4;i++)
{
if(i==3)
{
printf("请输入最后一个数:");
scanf("%d",&a[i]);
}
else
{
printf("请输入第%d个数:",i+1);
scanf("%d",&a[i]);
}
}
printf("排序前的数是:");
for(i=0;i<4;i++)
printf("%d ",a[i]);
printf("\n");
int t;
for( i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(a[j+1]<a[j])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}

}
printf("排序后的数是:");
for(i=0;i<4;i++)
printf("%d ",a[i]);
printf("\n");
}

void main()
{
int a[4],b[4];
smallTobig(a);
smallTobig(b);
}

修改如下:

//---------------------------------------------------------------------------

#include<stdio.h>
void smallTobig(int a[])
{
int i,j,t;/*建议将变量定义放在此处*/

for(i=0;i<4;i++)
{
if(i==3)
{
printf("请输入最后一个数:");
scanf("%d",&a[i]);
}
else
{
printf("请输入第%d个数:",i+1);
scanf("%d",&a[i]);
}
}
printf("排序前的数是:");
for(i=0;i<4;i++)
printf("%d ",a[i]);
printf("\n");

for( i=0;i<4;i++)
{
for(j=0;j<3;j++)/*******************注意这里!!*****************/
{
if(a[j+1]<a[j])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}

}
printf("排序后的数是:");
for(i=0;i<4;i++)
printf("%d ",a[i]);
printf("\n");
}

void main()
{
int a[4],b[4];
smallTobig(a);
sma