大家帮我看下我的程序错在哪里了啊!!!谢谢!!!

2025-05-19 04:57:17
推荐回答(3个)
回答(1):

按照你这种方法改下去,但是把排序的方法改为冒泡法。然后同样去除y=aa[j]/1000;再让a[j]-y的复杂步骤,改为求模(不知道你用的什么方法排序,觉得很乱)

#include
#include

using namespace std;
const int length = 20;
int aa[length];

//要求按每个数的后三位的大小进行升序排列,
//如果后三位的数值相等,则按原先的数值进行降序排列.
void jsSort()
{
int i,j,k,x,y;
for(i=0;i {
for(j=0;j {
x=aa[j]%1000;//求出aa[i]的千位数
y=aa[j+1]%1000;//求出aa[j]的千位数
if(x>y)//减去千位数后对剩余的百位数进行比较
{
k=aa[j];
aa[j]=aa[j+1];
aa[j+1]=k;
}
if(x==y)
{
if(aa[j] {
k=aa[j];
aa[j]=aa[j+1];
aa[j+1]=k;
}
}
}
}
}
int main(int argc, char *argv[])
{
int i;
for ( i=0; i {
aa[length-i-1] = 1000+i*2;
}
aa[5]=2008;
aa[6]=3008;
for ( i=0; i {
printf("aa[%d]=%d\n",i,aa[i]);
}
jsSort();
for ( i=0; i {
printf("aa[%d]=%d\n",i,aa[i]);
}
system("PAUSE");
return 0;
}

回答(2):

我觉得你这个程序的思路有点问题,
x=aa[i]/1000;//求出aa[i]的千位数
如果aa[i]=18000,求得的x=18,而不是8
你可以试一下,从倒数三位开始取余,例如x=aa[i]%1000,然后直接比较大小就行了

回答(3):

这个简练些!

void jsSort()
{
int i,j,data;
for(i=0;i<199;i++)
for(j=i+1;j<200;j++)
if(aa[i]%1000aa[j])
{data=aa[i];aa[i]=aa[j];aa[j]=data;}
for(i=0;i<10;i++)
bb[i]=aa[i];
}