一个C语言排序的小程序
#include<stdio.h>main(){inta[4],i,j,x;printf("input4data:");for(i=0;i<4;i++)scanf("%d...
#include<stdio.h>
main()
{
int a[4],i,j,x;
printf("input 4 data:");
for(i=0;i<4;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
{
for(j=i;i<4;j++)
{
if(a[i]<a[j+1])
{
x=a[i];
a[i]=a[j+1];
a[j+1]=x;
}
}printf("%d",a[i]);
}
}
这个是我才写的一个 排序的小程序..但是编译连接以后 运行不起....我实在没看出来哪里有错误..达人们 帮我瞧瞧啊... 展开
main()
{
int a[4],i,j,x;
printf("input 4 data:");
for(i=0;i<4;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
{
for(j=i;i<4;j++)
{
if(a[i]<a[j+1])
{
x=a[i];
a[i]=a[j+1];
a[j+1]=x;
}
}printf("%d",a[i]);
}
}
这个是我才写的一个 排序的小程序..但是编译连接以后 运行不起....我实在没看出来哪里有错误..达人们 帮我瞧瞧啊... 展开
3个回答
展开全部
数组越界了
比如说在子句当中的j等于3的时候a[j+1]就是越界了
还有最后的a[i]语句也是越界了
推荐程序为
main()
{
int a[10];
int i,j,temp;
printf("input:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
比如说在子句当中的j等于3的时候a[j+1]就是越界了
还有最后的a[i]语句也是越界了
推荐程序为
main()
{
int a[10];
int i,j,temp;
printf("input:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=1;i<10;i++)
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
内层循环写的有问题。 for(j=i;i<4;j++) 中间这个i, 这死循环了
注意里面你写的都是 a[j+1] 改的时候注意别让j+1越界了
注意里面你写的都是 a[j+1] 改的时候注意别让j+1越界了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(j=i;i<4;j++) 这里怎么是 i?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询