更新时间2020-12-24 15:59:30
#include <stdio.h>int main(){ int a,b,c,d,e,f,g,h,i,j,x,m,n,q; int arr[10]={a,b,c,d,e,f,g,h,i,j}; printf("请输入数字:"); scanf("%d %d %d %d %d %d %d %d %d %d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); for (m=0;m<10;m++) { for(n=0;n<10-1-i;n++) { if (arr[n]>arr[n+1]) { x=arr[n]; arr[n]=arr[n+1]; arr[n+1]=x; } } } for (q=0;q<10;q++) { printf("%d ",arr[q]); } return 0;}
程序有多个错,关键的是你对C数组及变量的理解有大问题
你的变量定义
int arr[10]={a,b,c,d,e,f,g,h,i,j};
定义完成后,无论a,b,c...有任何变化,不会改变a[0]...a[9]值 的
所以你的输入
scanf("%d %d %d %d %d %d %d %d %d %d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);
不会对a[]有任何影响,结果当然不对了
另外你的
for(n=0;n<10-1-i;n++)
循环变量也错了(应该是m)
以下是改好的及测试结果