C语言循环结构程序的设计实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

甘肃政法学院

本科生实验报告

( 五)

姓名:赵明翔

学院:公安技术学院

专业:安全防范工程

班级: 2015级安全防范工程班

实验课程名称:程序设计

实验日期:2016年月日

开课时间:2015学年第二学期

(2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。例如,153是水仙花数,因为153=1²+53+33程序如下:

#include

int main()

{

int i,j,k,n;

printf("paicissus numbers are");

for (n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(n==i*i*i+j*j*j+k*k*k)

printf("%d",n);

}

printf("\n");

return 0;

}

运行结果:

(3)猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又

多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下了1个桃子了。求第一天共摘了多少桃子。

程序如下:

#include

int main()

{

int day,x1,x2;

day=9;

x2=1;

while(day>0)

{x1=(x2+1)*2;

x2=x1;

day--;

}

printf("total=%d\n",x1);

return 0;

}

运行结果:

(4)①用牛顿迭代法求方程0634223=-+-x x x 在1.5附近的根. #include

#include

int main()

{double x1,x0,f,f1;

x1=1.5;

do

{x0=x1;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x1=x0-f/f1;

}

while(fabs(x1-x0)>=1e-5);

printf("The root of equation is%5.2f\n",x1);

return 0;

}

运行结果:

②修改程序使所设的x初值由1.5改变为100,1000,10000。

(1)#include

#include

int main()

{double x1,x0,f,f1;

x1=100;

do

{x0=x1;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x1=x0-f/f1;

}

while(fabs(x1-x0)>=1e-5);

printf("The root of equation is%5.2f\n",x1);

return 0;

}

运行结果:

(2)#include

#include

int main()

{double x1,x0,f,f1;

x1=1000;

do

{x0=x1;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x1=x0-f/f1;

}

while(fabs(x1-x0)>=1e-5);

printf("The root of equation is%5.2f\n",x1); return 0;

}

运行结果:

(3)#include

#include

int main()

{double x1,x0,f,f1;

x1=10000;

do

{x0=x1;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x1=x0-f/f1;

}

while(fabs(x1-x0)>=1e-5);

printf("The root of equation is%5.2f\n",x1); return 0;

}

运行结果:

分析:

不同的x初值对结果没有影响。因为牛顿迭代法是利用近似方法求根的计算方法,当后一个近似根减前一个近似根的绝对值小于5

10 时,视后一个近似根为该方程的根,方程的根是唯一的,x的初始赋值对此没有影响。

③修改程序,使之能输出迭代的次数和每次迭代的结果。

#include

#include

int main()

{double x1,x0,f,f1;

int i=0;

printf("请输入x的初始赋值:");

scanf("%d",&x1);

do

{x0=x1;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x1=x0-f/f1;

i++;

printf("第%d次迭代的结果为: %5.2f\n",i,x1);

}while(fabs(x1-x0)>=1e-5);

printf("迭代次数为%d\n",i);

return 0;

}

运行结果:

分析:

相关文档
最新文档