#include<stdio.h>
int a[10];
int i,j,t;
printf("input 10 numbers :\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
}
}
printf("the sorted numbers :\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
return 0;
}
printf("\n");
#include<stdio.h>
int main()
{
int a[10];
int i,j,t;
printf("input 10 numbers :\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if (a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
}
}
printf("the sorted numbers :\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
除了改错,我还想问一下怎么改成大到小的排列,谢谢
【以下回答由 GPT 生成】
问题的错误在于将 return 0;
放在了循环结束后的语句之后,导致程序无法正常输出结果。此外,题目要求是将随机整数由大到小排序,但是代码中使用的排序逻辑是由小到大排序,需要进行修改。
以下是修改后的代码:
#include<stdio.h>
int main() {
int a[10];
int i, j, t;
printf("input 10 numbers:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
printf("\n");
for (j = 0; j < 9; j++) {
for (i = 0; i < 9 - j; i++) {
if (a[i] < a[i + 1]) {
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
}
}
printf("the sorted numbers:\n");
for (i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
修改的部分包括: 1. 将主函数的声明改为 int main() {}
,并将所有代码放到该函数中。 2. 将 return 0;
语句放到循环结束后的语句之前。 3. 将排序逻辑从 if (a[i] > a[i + 1])
改为 if (a[i] < a[i + 1])
,以实现由大到小的排序。
修改后的代码可以正确地将随机整数由大到小排序,并按照要求输出排序后的结果。
【相关推荐】