/********found********/
void?fun(char??*s,?*t1,?*t2,?*w)
{
int??i;
char??*p,?*r,?*a;
strcpy(w,?s);
while?(*w)
{
p?=?w;
r?=?t1;
/********found********/
while?(r)
if?(*r?==?*p)
{
r++;
p++;
}
else
{
break;
}
if?(*r?==?’\0’)
{
a?=?w;
r?=?t2;
while?(*r)
{
*a?=?*r;
a++;
r++;
}
w?+=?strlen(t2);
}
else
{
w++;
}
}
}
main()
{
char??s[100],?t1[100],?t2[100],?w[100];
printf("\nPlease?enter?string?s:");
scanf("%s",?s);
printf("\nPlease?enter?substring?t1:");
scanf("%s",?t1);
printf("\nPlease?enter?substring?t2:");
scanf("%s",?t2);
if?(strlen(t1)?==?strlen(t2))
{
fun(s,?t1,?t2,?w);
printf("\nThe?result?is?:%s\n",?w);
}
else
{
printf("Error?:strlen(t1)!=strlen(t2)\n");
}
}
第1處:void?fun(char?*s,*t1,*t2,*w)應改為void?fun(char?*s,char?*t1,char?*t2,char?*w)
第2處:while(r)應改為while(*r)
編程題
編寫函數fun,它的功能是:利用以下所示的簡單迭代方法求方程式cos(x)-x=0的一個實根。
迭代步驟如下:
(1)取x1初值為0.0;
(2)x0=x1,把x1的值賦給x0;
(3)x1=cos(x0),求出一個新的x1;
(4)若x0-x1,的絕對值小于0.000001,則執行步驟(5),否則執行步驟(2);
(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數值返回。
程序將輸出結果Root=0.739085。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:#include?#include?#include?float?fun()
{
}
main()
{
FILE?*out;
float?f?=?fun();
printf("Root=%f\n",?f);
out?=?fopen("out.dat",?"w");
fprintf(out,?"%f",?f);
fclose(out);
}
答案是:
float?fun()
{
float?x1=0.0,x0;
do
{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)>=le-6);
return?x1;
}