C语言程序设计实验报告选择与循环结构程序设计.doc
学 生 实 验 报 告 学 院 软件与通信工程学院 课程名称 C与程序设计 专业班级 通信121 姓 名 学 号 - 17 -学生实验报告(2)学生姓名学号0124036同组人实验项目选择与循环结构程序设计必修 选修演示性实验 验证性实验 操作性实验 综合性实验实验地点M102实验仪器台号指导教师实验日期及节次周一56节课一、实验综述1、实验目的及要求1单分支程序设计 2多分支程序设计 (1)if else的多分支程序结构 (2)switch case的多分支程序结构 3for 循环程序设计 4While循环程序设计 5. 循环的嵌套 6循环控制 2、实验仪器、设备或软件 计算机、VC6.0、office、相关的操作系统等。二、实验过程(实验步骤、记录、数据、分析)实验题目(一)输出以上三角矩阵的形式输出9-9乘法表。程序如下includestdio.hvoid mainint x,y,z;forx1;x9;x printf ; /*输出空格使其九九乘法表居中*/fory1;y3*x-1;yputchar ;forzx;z9;zprintf3d,x*z;putcharn;一, 在VC中输入程序并编译它。如图程序没有错误三、结论1、实验结果 2、分析讨论在控制输出的行和列时,如果实在想不出怎样给循环变量赋初始值及修改循环变量以控制循环次数,可以先在草稿纸上写出输出图形的规律,这样便于直观地发现我们要找的变量的初始值及其变化规律。四、指导教师评语及成绩(二). .一个整数等于该数所有因子之和,则称该数是一个完数。例如6和28都是完数。因为6123,28124714.输出三位数中的所有完数。要求用while语句实现。 程序如下includestdio.hvoid mainint x,y,s,m1;x101;whilex1000s1;y2;whileyxifxy0 sy;y;ifxsprintf4d,x;m;ifm100 putcharn;x;putcharn;在VC中输入程序并编译它。如图结论1、实验结果2、分析讨论当用while语句执行循环结构时,碰到外层循环嵌套了内循环,内循环的控制变量的赋值不仅要在内层循环外,还要在该循环紧接上一层的外层循环外面赋值,切勿在最初时给所有变量赋值。此实验的s和y均在外层循环里面进行赋值,尤其是s,应特别注意。指导教师评语及成绩 三.编程用牛顿迭代法求2x3-4x23x-60在1.5附近的根。要求误差小于1e-5。该方法又称牛顿切线法,其思想是先任意假定一个与真实的根接近的值xk求出fxk,再过xk, fxk点作fx的切线,交x轴于xk1,它作为第二次近似根;再由xk1求出fxk1,再过xk1, fxk1点作fx的切线,交x轴于xk2,再求出fxk2,再作切线如此进行下去,直到足够接近真正的根为止。下面是用N-S图表示的算法 输入x(如输入1.5)x0xf2*x-4*x3*x-6f16x-8*x3求下一个根xx0-f/f1当fabsx-x01e-5输出x提示牛顿迭代法的公式为 ,初始化x0为1.5。 程序如下includestdio.hincludemath.hvoid mainfloat fx,x,k,x0;printfPlease a numeric valuen;scanff,x;dox0x;fx2*x*x*x-4*x*x3*x-6;kx*6*x-83;xx0-fx/k;whilefabsx-x01e-5;printffn,x;在VC中输入程序并编译它。如图三、结论1、实验结果2、分析讨论 若开始定义的变量类型是float类型,则最后输出的对应的变量的格式控制中也相应的是f而非d,否则可能导致输出结果与我们想要的结果又很大的相差。再者,相应的取绝对值的表达式也应是数学函数中的fabs而非abs,否则在编译时将会报错。指导教师评语及成绩教材101页4.3(3)(5)(7)。(四). (3)猴子吃桃子问题。猴子第一天摘下若干个桃子,当即吃了一半, 还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃掉了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子。程序如下includestdio.hvoid mainint sum1,x;forx9;x1;xsum2*sum1;printfdn,sum;在VC中输入程序并编译它。如图实验结果如果每逢奇数天都吃剩下的一半,又多吃一个;每逢偶数天都吃剩下的一半,又多吃二个。到第10天早上想再吃时,见只剩下一个,再求第一天共摘多少个桃子。 程序如下includestdio.hvoid mainint x1,y;fory9;y1;yify20x2*x1;else x2*x2;printfdn,x;在VC中输入程序并编译它。如图实验结果分析讨论 此道题的第二个问题应学会使用单条件判断式,如ify20(5).求12320的和。程序如下includestdio.hvoid mainint x,y;double t,sum0;forx1;x20;xt1;fory1;yx;ytt*y; sumt;printfSum.0fn,sum;在VC中输入程序并编译它。如图结论1、实验结果2、分析讨论值得注意的是,此处20是一个很大的数了,所以应该给sum定义double类型二非int或float,否则结果可能有错。指导教师评语及成绩(7).输出2至1000之间所有同构数,所谓同构数是指它出现在它的平方数的右端。例如,5,6,25的平方分别等于25,36,625,所以5,6,和25都是同构数。 程序如下includestdio.hvoid mainint x,y,k,s1;forx2;x1000;xyx*x;ifx10 ky10;ifkxprintf4d,x;s;else ifx100 ky100;ifkxs;printf4d,x;else ifx1000 ky1000;ifkxs;printf4d,x;ifs110 putcharn;putcharn;在VC中输入程序并编译它。如图三、结论1、实验结果2、分析讨论通过这个实验,我们应学会从一个整数中分离中其中各个位数的方法。指导教师评语及你成绩