哪位帮忙说下,这段程序怎样插入排序
#include <stdio.h>#define N 20main(){int a[10],s; int i,j,temp; printf("请输入学生成绩\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=1;j<10;j++) /*冒泡法排序: 如果有n个数,则需要进行n-1趟比较; 第j趟比较中要进行n-j 次两两比较 */ for(i=0;i<10-j;i++) if(a[i]<a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } for(i=0;i<10;i++) printf("%d\n",a[i]);printf("请输入另外一个数\n");scanf("%d\n",&s); for(i=0;i<N;i++) { if( s>a[i]&& s<a[i+1]) { for(j=N-2;j>=i+1;j--) a[j+1]=a[j]; } a[i+1]=s; } for(i=0;i<N;i++) printf("%d\n",a[i]);}
scanf("%d\n",&s);j=10;while(j > 0 && s > a[j]){ a[j]=a[j-1]; j--;} a[j]=s; for(i=0;i<11;i++) printf("%d\n",a[i]);
[解决办法]
#include <stdio.h>#define N 20main(){ int a[N]={0},s=0; int i,j,temp; printf("请输入学生成绩\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(j=1;j<10;j++) /*冒泡法排序: 如果有n个数,则需要进行n-1趟比较; 第j趟比较中要进行n-j 次两两比较 */ for(i=0;i<10-j;i++) if(a[i]<a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } for(i=0;i<10;i++) printf("%d\n",a[i]); printf("请输入另外一个数\n"); fflush(stdin); scanf("%d",&s); j=10; while(j > 0 && s > a[j]) { a[j]=a[j-1]; j--; } a[j]=s; for(i=0;i<11;i++) printf("%d\n",a[i]); return 0;}