1.下列程序的功能是:利用以下所示的简单迭代方法求方程:
cos (x) -x=0的一个实根。
xn+1=cos(xn )
迭代步骤如下:
(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的一个实根,作为函数值返回。
请编写函数countValue ( )实现程序要求,最后调用函数writeDAT( )把结果输出到文件out9.dat中。
注意:部分源程序已给出。
请勿改动主函数main()和写函数writeDAT()的内容。
#include
#include
#include
void writeDAT();
float countValue( )
{
float x0,x1=0.0; /*定义两个浮点型变量进行迭代*/
while(1) /*无条件循环*/
{
x0=x1; /*将x1赋值给x0*/
x1=cos(x0); /*求出新的x1*/
if(fabs(x0-x1)<1e-6) break; /*若x0-x1的绝对值小于0.000001,则结束循环*/
}
return x1; /*返回 x1的值*/
}
void main( )
{
system("CLS");
printf("实根=%f\n",countValue( ));
printf("%f\n",cos(countValue( ))-countValue( ));
writeDAT( );
}
void writeDAT( )
{
FILE *wf;
wf=fopen("out9.dat","w");
fprintf(wf,"%f\n",countValue( ));
fclose(wf);
}
2.请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。
注意:部分源程序已给出。
请勿改动主函数main()和写函数writeDAT()的内容。
#include
#include
void writeDAT();
void countValue(int *a,int *n)
{
int i; /*定义循环控制变量*/
*n=0 ; /*初始化计数器变量*/
for(i=1;i<=1000;i++) /*在这个范围内寻找符合条件的数*/
if((i%7==0 && i%11!=0)||(i%7!=0 && i%11==0))
/*如果当前的数可以被7整除而不可以被11整除,或者可以被11整除而不可以被7整除*/
{
*a=i; /*保存符合条件的数*/
*n=*n+1; /*统计个数*/
a++;
}
}
void main()
{
int aa[1000],n,k;
system("CLS");
countValue(aa,&n);
for(k=0;k
if((k+1) %10 ==0)
{
printf("%5d",aa[k]);
printf("\n");
}
else printf("%5d",aa[k]);
writeDAT();
}
void writeDAT()
{
int aa[1000],n,k;
FILE *fp;
fp=fopen("out10.dat","w");
countValue(aa,&n);
for(k=0;k
if((k+1)%10==0)
{
fprintf(fp,"%5d",aa[k]);
fprintf(fp,"\n");
}
else fprintf(fp,"%5d",aa[k]);
fclose(fp);
}
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |