20071123一、.编程实现将一个整数数组循环右移m位,m由用户输入。(其中对数组元素操作的部分用指针完成)例如设m为3,原来的数组元素的排列为12345678910操作后的数组的排列为89101234567voidf1(){inta[10],i,m,t,*p;coutpleaseinputthe10dataseperatedbyspaceorreturnendl;for(p=a;pa+10;p++)cin*p;coutHowmanybitsdoyouwanttoshift?endl;cinm;for(i=0;im;i++){p=a+10-1;t=*p;for(p=a+10-1;pa;p--)*p=*(p-1);*p=t;}for(p=a;pa+10;p++)cout*p;}二、编写一个函数,函数的参数是一个字符串指针,函数的功能完成在字符串中每隔一个字符插入一个空格。在主函数打印变化前后的字符串.例如输入的字符串为abcdefg’\0’变化后的字符串为abcdefg’\0’,a是第一个字符,a前面不要插入空格。注意:要在同一个字符串中操作,不要再定义一个字符串voidintsert(char*p){for(inti=strlen(p);i0;i--){*(p+2*i)=*(p+i);*(p+2*i-1)='';}}/*三、在主函数中定义一个5*5的二维整型数组a[5][5],和两个指针变量p1,p2,由函数返回数组中最大值的地址。编写两个函数,主函数的调用语句分别是:p1=f1(a,5,5);p2=f2(*a,25).int*f1(int(*q)[5],intn);int*f1(int*p,intn);intmain(){inta[5][5],i,j,*p1,*p2;coutInput5*5Array:\n;for(i=0;i5;i++)for(j=0;j5;j++)cin*(*(a+i)+j);p1=f1(a,4,5);p2=f2(*a,25).cout*p1“”*p2endl;reutrn0;}int*f1(int*p,intn){inti,j,*max=p;for(i=0;in;i++)if(*max*++p)//pickupthemaximummax=p;returnmax;}int*f2(int(*p)[5],intn,intm){inti,j,*max=p;for(i=0;in;i++)for(j=0;jm;j++)if(*max*(*(p+i)+j))max=*(p+i)+j;returnmax;}