}
void main() {char a[100]; gets(a); fun(a); puts(a); }
17. n个整数,前面各数循环顺序后移m个位置,最后m个数变成最前面m个数。写函
数void fun(int *p,int n,int m),实现上述功能。在main()中输入与输出。如下面程序输出 7 8 9 10 1 2 3 4 5 6 。注意,m可能大于n。 #include \
void fun(int *p,int n,int m) { int i,j;
for(i=1;i<=m;i++) {for(j=n-1;j>=0;j--) *(p+j+1)=*(p+j); *(p+0)=*(p+n); } }
void main()
{void fun(int *,int ,int );
int x[10]={1,2,3,4,5,6,7,8,9,10},i; fun(x,10,14);
for(i=0;i<10;i++)
printf(\ printf(\ }
18. 编写函数void fun(char *s1,char *s2),实现字符串s1与s2的交叉连接,连接
后得到的新字符串放在s1中。如输入abc
void fun(char *s1,char *s2) { int i,j,k;
for(j=0,i=1;s2[j]!='\\0';) {for(k=strlen(s1);k>=i;k--) s1[k+1]=s1[k]; s1[i]=s2[j]; j++;i++;
11
if(s1[i]) i++; } }
void main()
{char a[100],b[100];
void fun(char *,char *); gets(a); gets(b); fun(a,b); puts(a); }
19. 传说可以根据两个人的生日来计算其缘分.方法:将两个人的生日各位相加,将得
到的数再一次各位相加,直到其值为一个一位数,此数即代表两个人的缘分.例如,两个生日为:19820523,19841111,则各位相加:1+9+8+2+5+2+3+1+9+8+4+1+1+1+1得:56;再5+6得11;再 1+1得2,即为两人的缘分.编写计算缘分程序,两个生日由键盘输入.
#include \
int fun(long x,long y) { long sum=0,m;
for(m=x+y;m>0||sum>=10;) { sum+=m; m/=10;
if(m==0&&sum>=10) {m=sum; sum=0; } }
return(sum); }
void main() {long x,y; int k;
scanf(\k=fun(x,y);
printf(\}
20. m个人围成一圈,1,2,3循环报数,报到3的人退出,并将退出的序号依次存到数
组p中,包括最后一个人的序号。到最后只余1人,输出最后留下的是第几号(最初的序号,以1起始)。若m=6,则输出n=1
12
出n=4
int fun(int n ,int *p) { int arr1[10000]={0}; int i,j; int t1,t2;
for(i=0;i arr1[i]=i+1; } *p=arr1[2]; p++; for(j=0;j t1=arr1[0]; t2=arr1[1]; for(i=0;i arr1[i]=arr1[i+3]; } arr1[n-3-j]=t1; arr1[n-2-j]=t2; *p=arr1[2]; p++; } *p=arr1[0]; p++; *p=arr1[1]; return *p; } void main() {int m,a[10000],i,num; scanf(\ num= fun(m,a); printf(\ for(i=0;i 13 printf(\ printf(\} 14