1.有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。 #include<stdio.h> int f(int *); int main() { int *p,a[10]; for(p=a;p<a+10;p++) scanf("%d",p); f(a); for(p=a;p<a+10;p++) printf("%d ",*p); return 0; } int f(int *a) { int i,*p,b[10]; for(p=a;p<a+10;p++) { if(p-a<10-3) b[p-a+3]=*p; else b[p-a-10+3]=*p; } for(i=0,p=b;p<b+10;i++,p++) a[i]=*p; return 0; } 2.有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 #include<stdio.h> int main() { int *p,*q,r=1,i,t=0,n,a[100]; for(i=0;i<100;i++) a[i]=i+1; p=a; printf("input the number of people:"); scanf("%d",&n); while(t!=n-1) { if(p-a==n) p=q; if(r==3&&*p!=0) { *p=0; r=1; t++; } if(*p!=0) r++; for(i=0;i<n;i++) { if(a[i]!=0) { q=&a[i]; break; } } p++; } printf("the final one is No.%d/n",*q); return 0; }