#include<stdio. h> define 20 void sort(int *x, int n) I int i, j,k, t: for(i=0;i<n-1;i++) [k=i for (j=i+l; j<n: j++) if(*(x+j)<*(x+k)) t=*(x+ *(x+i)=*(x+k) *(x+k)=t; i,a[N]={23,12,33,56,17,8,25} sort(a, 7) printf( After Sorted: \n") for(i=0;i<7;i++) printf(%d"*p++) printf(" \n 7.13用指针操作实现将整形数组元素循环右移m位的程序 解:关键是移动位置的计算,下标i的前一元素位置应为:(N+i-m)%N,其中,N是循 环右移的元素个数, count是移动元素的个数。如果N是m的倍数,外循环只有一次。参 考程序如下: #include<stdio. h #definen 20 void move (int *x, int n, int m) I int i, j,k for (j=0; j<m: j++) i k=lIl: t=j i=(n+t-m)%n while (il=j)#include<stdio.h> #define N 20 void sort(int *x,int n) { int i,j,k,t; for (i=0;i<n-1;i++) { k=i; for (j=i+1;j<n;j++) if (*(x+j)<*(x+k)) k=j; if (k!=i) { t=*(x+i); *(x+i)=*(x+k); *(x+k)=t; } } } main() { int i,a[N]={23,12,33,56,17,8,25}; int *p=a; sort(a,7); printf("After Sorted: \n"); for (i=0;i<7;i++) printf("%d ",*p++); printf("\n"); } 7.13 用指针操作实现将整形数组元素循环右移 m 位的程序。 解:关键是移动位置的计算,下标 i 的前一元素位置应为:(N+i-m)%N,其中,N 是循 环右移的元素个数,count 是移动元素的个数。如果 N 是 m 的倍数,外循环只有一次。参 考程序如下: #include<stdio.h> #define N 20 void move(int *x,int n,int m) { int i,j,k,t,count=0; for (j=0;j<m;j++) { k=x[j]; t=j; i=(n+t-m)%n; while (i!=j)