if(n==1)①;
else②;
returnr;
}
解:
该递归函数对应的递归式f(n)如下:
f(n)=
所以本题答案为:
1r=1
2r=n+sum(n-1)
三、编程题:
1、编程实现字符串拷贝,即编写一个strcpy1()函数:
strcpy1(s1,s2,m,n)
功能要求:
将s2串中从第m个字符位置开始共n个字符拷贝到s1串中。
在主程序中设置s1=”hello”,s2=”happynewyear!
”,若调用strcpy1(s1,s2,7,3),则结果s1的值为”new”.
解:
在strcpy1(0函数中,先求s2串的长度len,判断m、n参数是否有效,有效时返回1,否则返回0。
在参数有效时,将s2[m-1]~s2[m+n-2]复制到s1中。
程序如下:
#include
#defineM100
intstrcpy1(chars1[],chars2[],intm,intn)
{
intlen=0,i,j=0;
while(s2[len++]!
='\0');
len--;
if(m+n>=len)
return0;
else
{
for(i=m-1;is1[j++]=s2[i];
s1[j]='\0';
return1;
}
}
voidmain()
{
chars1[M]="hello";
chars2[M]="happynewyear!
";
if(strcpy1(s1,s2,7,6)==1)
cout<else
cout<<"参数不正确"<}