火炬之光2电球:C语言数组问题,我这个错了。请帮我改正!谢谢。

来源:百度文库 编辑:高校问答 时间:2024/04/28 04:03:23
main()
{
int a[4];
int b,c;
int d;
for(b=0;b<=3;b++) scanf("%d",&a[b]);
putchar('\n');
for(b=0;b<=2;b++)
for(c=b+1;c<=4;c++)
{ if(a[b]>a[c]) d=a[c];a[b]=a[c];a[c]=d;}
for(b=0;b<=3;b++) printf("%d\t",a[b]);getch();
}
输入三个数,从小到大输出,这里怎么会不对的呢?请问我那里错了呢?请大家帮我改正。
谢谢各位热情的帮忙!!!我是初学没多久的,对某些问题不太了解,所以这样。

明明是4个数嘛
但即使是四个数
游标也就到3啊
for(c=b+1;c<=4;c++)
你这里显然超了
另外你变量定义得太混乱
要养成良好的编程习惯
选择法排序一般用i 和 j
for(i = 0;i < n - 1;i++)
for(j = i + 1;j < n;j++)
另外if需要块操作

{ if(a[b]>a[c]) d=a[c];a[b]=a[c];a[c]=d;}
此句改为 if(a[b]>a[c]) { d=a[b];a[b]=a[c];a[c]=d;}
不这样改的话 if只能管到d=a[b]这一句 并且d=a[c]是错的,要改为d=a[b]

main()
{
int a[4];
int b,c;
int d;
for(b=0;b<=3;b++) scanf("%d",&a[b]);
putchar('\n');
for(b=0;b<=2;b++)
for(c=b+1;c<=4;c++)
if(a[b]>a[c]) { d=a[b];a[b]=a[c];a[c]=d;}
for(b=0;b<=3;b++) printf("%d\t",a[b]);getch();
}

你是刚学编程吧,你还是多看看书吧,做的太乱了