代码只相差了一个数组
#include
int main()
{
int a[10];
int b[10];
int i,j;
int temp;
printf("请输入10个数字:");
for (i = 0;i < 10;i++)
{
scanf("%d",&a[i]);
b[i] = a[i] % 10;
}
for (i = 0;i < 9;i++)
{
for (j = 0;j < 9 - i;j++)
{
if (b[j] > b[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0;i < 10;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
结果是:
正确答案是:
#include
int main()
{
int a[10];
int i,j,t;
printf("请输入十个两位正整数:\n");
for (i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for (i=0;i<9;i++)
{
for (j=0;j<9-i;j++)
{
if (a[j]%10>a[j+1]%10) //利用冒泡排序,并改变if条件即可实现
{
t=a[j]; a[j]=a[j+1]; a[j+1]=t; //若不熟悉多去看冒泡排序
}
}
}
for (i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
结果是:
数组b贮存个位的数字,用冒泡排序法后结果和答案不同,为什么添加了一个数组结果就不同。
if (b[j] > b[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
这里你在交换a数组的同时,还要交换b数组的值才行啊
if (b[j] > b[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
temp = b[j];
b[j] = b[j+1];
b[j+1] = temp;
}