同学写的代码:
#includeint main() { int i,j,t,a[11]; printf("请输入10个数:n"); for(i=1;i<11;i++) scanf("%d",&a[i]); //从键盘中输入要排序的10个数字 for(i=1;i<=9;i++) for (j=i+1;j<=10;j++) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } printf("排序后的顺序是:n"); for(i=1;i<=10;i++) printf("%5d", a[i]); printf("n"); return 0; }
运行结果:没有问题!!!
但是数组0号元素去哪了呢?
将他的代码段稍作修改
#includeint main() { int i,j,t,a[11]; printf("请输入10个数:n"); for(i=1;i<11;i++) //此处输入了10个数,我运行的时候写了11个数 scanf("%d",&a[i]); //从键盘中输入要排序的10个数字 for(i=0;i<=9;i++) //此处从0号元素遍历,遍历10次 for (j=i+1;j<=10;j++) //此处从1号元素遍历,遍历10次 if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } printf("排序后的顺序是:n"); for(i=0;i<10;i++) //输出10个数 printf("%5d", a[i]); printf("n"); return 0; }
运行结果:(0号元素打印的结果是-1) 此处将有疑问??? 不应是0吗?
再去思考 到底是哪里出了问题呢?



