甘肃政法学院本科生实验报告(五)姓名:赵明翔学院:公安技术学院专业:安全防范工程班级:2015级安全防范工程班实验课程名称:程序设计实验日期:2016年月日开课时间:2015学年第二学期实验题目实验5循环结构程序设计小组合作姓名赵明翔班级安全防范工程学号201583130145一、实验目的1.熟悉掌握用while语句,do...while语句和for语句实现循环的方法。2.掌握在程序设计中用循环的方法实现一些常用的算法(如穷举,代,递推等)。3.进一步学习调试程序。二.实验环境MiscroftVisualC++6.0环境。三、实验内容与步骤编程序并上机调试程序。(1)输入一行字符,分别统计出其中的英文字母,空格,数字和其他字符的个数。程序如下:#includestdio.hintmain(){charc;intletters=0,space=0,digit=0,other=0;printf(请输入一行字符:\n);while((c=getchar())!='\n'){if(c='a'&&c='z'||c='A'&&c='Z')letters++;elseif(c=='')space++;elseif(c='0'&&c='9')digit++;elseother++;}printf(字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n,letters,space,digit,other);return0;}运行结果:(2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。例如,153是水仙花数,因为153=1²+53+33程序如下:#includestdio.hintmain(){inti,j,k,n;printf(paicissusnumbersare);for(n=100;n1000;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);return0;}运行结果:(3)猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下了1个桃子了。求第一天共摘了多少桃子。程序如下:#includestdio.hintmain(){intday,x1,x2;day=9;x2=1;while(day0){x1=(x2+1)*2;x2=x1;day--;}printf(total=%d\n,x1);return0;}运行结果:(4)①用牛顿迭代法求方程0634223xxx在1.5附近的根.#includestdio.h#includemath.hintmain(){doublex1,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(Therootofequationis%5.2f\n,x1);return0;}运行结果:②修改程序使所设的x初值由1.5改变为100,1000,10000。(1)#includestdio.h#includemath.hintmain(){doublex1,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(Therootofequationis%5.2f\n,x1);return0;}运行结果:(2)#includestdio.h#includemath.hintmain(){doublex1,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(Therootofequationis%5.2f\n,x1);return0;}运行结果:(3)#includestdio.h#includemath.hintmain(){doublex1,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(Therootofequationis%5.2f\n,x1);return0;}运行结果:分析:不同的x初值对结果没有影响。因为牛顿迭代法是利用近似方法求根的计算方法,当后一个近似根减前一个近似根的绝对值小于510时,视后一个近似根为该方程的根,方程的根是唯一的,x的初始赋值对此没有影响。③修改程序,使之能输出迭代的次数和每次迭代的结果。#includestdio.h#includemath.hintmain(){doublex1,x0,f,f1;inti=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);return0;}运行结果:分析:不同的x初始值对迭代的次数和结果并无影响。五、实验总结C语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。通过本次实验,让我学会了很多东西,但是,由于自己对课本上的知识掌握不清楚,所以在分析和编写代码时混淆了一些知识点,导致在程序运行的时候错误百出。所以在以后的学习中,需要好好看书,尽量多掌握课本上的基础知识,还有,就是多做练习,做到熟能生巧。