1、右下角
1 #include <stdio.h> 2 #include <malloc.h> 3 int main() 4 { 5 int n; 6 scanf("%d",&n); 7 8 int *arr = (int*)malloc(sizeof(int)*n*n); //一维模拟二维数组 9 10 for(int a=0; a<n*n; ++a) 11 { 12 scanf("%d",&arr[a]); 13 } 14 15 for(int i=0; i<n; ++i) 16 { 17 for(int j=0; j<n-i-1; ++j)//左上角输出空格 18 { 19 printf(" "); 20 } 21 for(int k=n-i-1; k<n; ++k)//右下角输出数组元素 22 { 23 printf("%d ",arr[i*n+k]);//模拟 24 } 25 printf("\n"); 26 } 27 28 return 0; 29 }
2、插入排序
1 #include <stdio.h> 2 #include <malloc.h> 3 4 void InsertSort(int *arr, int m) 5 { 6 int i; 7 for(i=1; i<m; ++i){/*第0个元素有序,从第1个元素向右无序*/ 8 int j=i-1,key=arr[i];/*保存第i个元素,左边的元素i-1*/ 9 while(j>=0 && key>arr[j]){/*保存的元素key与之前的元素从右向左逐个比较*/ 10 arr[j+1]=arr[j];/*移动(向后赋值)*/ 11 j--; 12 } 13 arr[j+1]=key;/*j--退出,恢复正确值j+1*/ 14 } 15 } 16 17 int main() 18 { 19 int n; 20 scanf("%d",&n); 21 22 int *arr = (int*)malloc(sizeof(int)*n); 23 24 for(int i=0; i<n; ++i) 25 { 26 scanf("%d",&arr[i]); 27 } 28 29 int s,m; 30 scanf("%d%d",&s,&m); 31 32 InsertSort(&arr[s],m); 33 34 for(int j=0; j<n; ++j) 35 { 36 printf("%d ",arr[j]); 37 } 38 39 return 0; 40 }
3、边缘与内心的差