标题:求助好奇怪的错误???
只看楼主
不知所云
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-3-27
 问题点数:0 回复次数:10 
求助好奇怪的错误???

我调了好久,都没有错在哪里?程序如下:
#include<stdio.h>
#include<conio.h>
void main()
{long int a[4];
long int m;
int i,j;
scanf("%ld,%ld,%ld,%ld",&a[1],&a[2],&a[3],&a[4]);
for(i=1;i=<4;i++)
{for(j=i+1;j<=4;j++)
{ if (a[i]>a[j])
{m=a[i],a[i]=a[j],a[j]=m;}
}
printf("%ld,",a[i]);
}
printf("\n");
getch();
}
可是我输入四个数
发现输什么数字
第四个数都没有参与比较,即第四个数是一个无效数
你如我输
12,32,21,1
它输出
12,21,32,32,
怎会这样?帮帮我,我调了好几个小时了,不知道错在哪里?

搜索更多相关主题的帖子: include 数字 void 
2006-04-05 13:43
ヤ順祺冄繎ヤ
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:3032
专家分:0
注 册:2005-11-9
得分:0 
以下是引用不知所云在2006-4-5 13:43:00的发言:

我调了好久,都没有错在哪里?程序如下:
#include<stdio.h>
#include<conio.h>
void main()
{long int a[4];
long int m;
int i,j;
scanf("%ld,%ld,%ld,%ld",&a[1],&a[2],&a[3],&a[4]);
for(i=1;i=<4;i++) /*什麽符號,我沒用過*/
{for(j=i+1;j<=4;j++) /*當i=3時,j=i+1,試問a[4]等於多少*/
{ if (a[i]>a[j])
{m=a[i],a[i]=a[j],a[j]=m;}
}
printf("%ld,",a[i]);
}
printf("\n");
getch();
}
可是我输入四个数
发现输什么数字
第四个数都没有参与比较,即第四个数是一个无效数
你如我输
12,32,21,1
它输出
12,21,32,32,
怎会这样?帮帮我,我调了好几个小时了,不知道错在哪里?

你可以把你的數組變成a[5]試一下!

2006-04-05 13:55
不知所云
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-3-27
得分:0 
我早用a[5]弄出来了啊
但我要问的是这个程序错在哪里?楼上所说的问题
当i=3时,j=4,
a[3]与a[4]比较啊,有错吗?
2006-04-05 13:59
ヤ順祺冄繎ヤ
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:3032
专家分:0
注 册:2005-11-9
得分:0 
我是就你的題而言。
你定義的數組爲a[4]
你認爲還有a[4]這個值嗎?
數組下標是以什麽開頭呢。
我看程序思路應該沒錯,改成a[5]不行嗎?
2006-04-05 14:09
不知所云
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-3-27
得分:0 
哦,我知道了原来数组的下标不能与与数组的个数相同啊
谢谢。
2006-04-05 14:15
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
得分:0 

你这个程序能运行????????


2006-04-05 14:29
wzl520
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-3-30
得分:0 
#include <conio.h> /* 此头函数请不要删除 */
#include <stdio.h>
main()
{ long int a[4];
long int m;
int i,j;
scanf("%ld%ld%ld%ld",&a[0],&a[1],&a[2],&a[3]);
for(i=0;i<4;i++)
{for(j=i+1;j<=4;j++)
{ if (a[i]>a[j])
{m=a[i],a[i]=a[j],a[j]=m;}
}
printf("%ld,",a[i]);
}
printf("\n");
getch(); /* 此语句请不要删除*/
}

No pain No gain
2006-04-05 15:03
wzl520
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2006-3-30
得分:0 

上面的程序应该会实现你要的功能


No pain No gain
2006-04-05 15:04
ヤ順祺冄繎ヤ
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:3032
专家分:0
注 册:2005-11-9
得分:0 
以下是引用wzl520在2006-4-5 15:03:00的发言:
#include <conio.h> /* 此头函数请不要删除 */
#include <stdio.h>
main()
{ long int a[4]; /*你定义的才是a[4]*/
long int m;
int i,j;
scanf("%ld%ld%ld%ld",&a[0],&a[1],&a[2],&a[3]);
for(i=0;i<4;i++)
{for(j=i+1;j<=4;j++) /*a[4]等于多少?*/
{ if (a[i]>a[j])
{m=a[i],a[i]=a[j],a[j]=m;}
}
printf("%ld,",a[i]);
}
printf("\n");
getch(); /* 此语句请不要删除*/
}

你运行过的吗?
我刚才试运行一下,不能完成啊!~

2006-04-05 15:16
不知所云
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-3-27
得分:0 
我就是把a[1],a[2],a[3],a[4],改为a[0],a[1],a[2],a[3]
因为不能够出现a[4].
2006-04-05 15:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-55243-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058339 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved