fun:把形参s所知字符串中最右边的n个字符复制到形参t所指字符数组中,形,成一个新串。若所指字符串的长度小于n,则将整个字符串复制到形参t所指的字符数组中。
例s:abcdefgh,n为5,则t=defgh。
错误代码及其修正:
void fun(char *s, int n, char *t)
{ int len,i,j=0;
len=strlen(s);
/**********found**********/
if(n>=len) strcpy(s,t);//strcpy(字符数组1,字符串2)作用把2复制到1.//正确:strcpy(t,s);
else {
/**********found**********/
for(i=len-n; i<=len-1; i++) t[j++]=s[i] ;//s[i]正确。
/**********found**********/
t[j]= s[i--] ;//字符串操作结束,应当在t结束加入字符串结束符//正确:t[j]='\0'或者0
}
}
程序设计题
问题:功能:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
错误代码:
void fun (int x, int pp[], int *n)
{
int i,j=0;
int t;
for(i=1;i<x;i++)//太繁琐
if(x%i==0)
if(i%2!=0)
pp[j++]=i;
{if(pp[j]>pp[j+1])
t=pp[j+1];
pp[j+1]=pp[j];
pp[j]=t;
}*n=j;
}正确:
void fun (int x, int pp[], int *n)
{
int i,j=0;
for(i=1;i<=x;i+=2)//步长为2,确保每个i都是奇数
if(x%i==0)
pp[j++]=i;
*n=j;
}