欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    实验三-循环结构程序设计.doc

    • 资源ID:24074995       资源大小:153.50KB        全文页数:36页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验三-循环结构程序设计.doc

    Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date实验三-循环结构程序设计实验一 Visual C+6实验三 循环结构程序设计一、实验学时4学时。二、实验目的1熟练掌握用while、do-while以及for语句实现循环程序设计的方法。2理解循环条件和循环体的含义。理解循环结构中语句的执行过程。3熟练掌握break和continue语句的功能及应用。4掌握应用嵌套循环结构进行程序设计的方法。5掌握应用循环结构及穷举算法解决有关问题。6掌握运行到光标位置、使用断点等程序调试方法。三、实验内容1程序调试【例1】改正下列程序中的错误,求S=1!+2!+3!+n!的值,n的值通过键盘输入(n10)。输入样例:请通过键盘输入具体数据给变量n赋值:5输出样例: 1!+2!+3!+5!=153程序:#include <stdio.h>void main()int n,i;long int s,sum;printf("请通过键盘输入具体数据给变量n赋值:");scanf("%d",&n);for(i=1;i<=n;i+)s=s*isum+=s;printf("1!+2!+3!+.+%d!=%ldn",n,sum);(1)按照前面章节实验中介绍的步骤,保存源程序代码。(2)单击编译按钮(Compile),出现第一条编译错误信息是:missing '' before identifier 'sum',改正后,重新编译和连接,都正确。(3)开始调试程序,鼠标单击第11行,光标在第11行闪烁,这就是当前光标的位置,单击,程序运行到光标位置。在变量窗口中,第一次循环时i的值为 1 ,n的值为 5 ,正确;而s的值为-858993460,不正确。请分析错误原因:s示未赋初值,long int s,sum;改为long int s=1,sum;,改正后,重新编译和连接,继续进行上述操作,这时s的值为1正确。(4)鼠标单击第12行,光标在第12行闪烁,这就是当前光标的位置,单击,程序运行到光标位置。在变量窗口中,第一次循环时i的值为 1 ,s的值为 1 ,正确;而sum的值为-858993460,不正确。请分析错误原因:sum示未赋初值,long int s,sum;改为long int s=1,sum=0;,改正后,重新编译和连接,继续进行上述操作,这时sum的值为0正确。(5)把光标定位到倒数第3行,单击(Run to Cursor)按钮,程序运行到光标位置。在变量窗口中,s的值为 1 ,sum的值为 1 ,显示信息正确。(6)单击(Stop Debugging)按钮,程序调试结束。在程序调试的过程中,应用了“运行到光标位置”的程序调试方法:即单击按钮,程序运行到光标位置,观察变量窗口中所显示的变量信息内容,分析此时变量的值是否正确。同时,结合断点的使用,断点的使用就是让程序运行到断点处暂停,让用户可以观察当前变量或表达式的值。设置断点时,先将光标定位到要设置断点的位置,然后单击编译微型工具条的按钮,断点设置完毕。如果要取消已经设置的断点,只需要将光标移到要取消的断点处,再次单击按钮,该断点取消。在循环结构的程序设计中,这种程序调试的方法经常使用,在具体进行程序调试时,设置程序运行断点处位置,注意变量窗口中显示变量的具体值信息(如果变量较多时,可以输入变量名查看),这些变量的值是否与循环第一次运行时一致。2.编程练习(1)读入一个正整数n,计算并输出前n项之和s的值(保留6位小数)。S=1+1/4+1/7+1/10+1/13+1/16+程序运行结果输入/输出示例:输入样例:请输入n的值:3输出样例: S=1.392857参考程序如下:#include "stdio.h"void main() int i, k, n; double sum; printf("请输入n的值:"); scanf("%d", &n); sum = 0; k = 1; for(i = 1; i <= n; +i) sum += 1/(double)k; k += 3; printf("S=%lfn", sum); 思考题1:读入一个正实数n,计算并s的值(保留6位小数),要求精确到最后一项的绝对值小于n(保留6位小数)。S=1-1/4+1/7-1/10+1/13-1/16+输入样例:请输入n的值:1E-4输出样例:S=0.835699参考程序如下:#include "stdio.h"#include "math.h"void main() int i, k, t; double n;double sum;printf("请输入n的值:");scanf("%lf", &n); sum = 0;t = 1; k = 1; while(fabs(t/(double)k)>n)sum += t /(double)k; k += 3; t *= -1; printf("S=%lfn", sum); 思考题2:读入一个正整数n,计算并输出前n项之和s的值(保留6位小数)。S=1-1/2+3/7-2/5+5/13-3/8+输入样例:请输入n的值:18输出样例:S=0.551分析1:对于S,可以对n进行分析,当n为偶数时,正项个数与负项的个数相等;当n为偶数,正项个数比负项的个数多一项,可以将正项与负项分别进行计算。参考程序:#include "stdio.h"void main() int i, k, n; double sum; printf("请输入n的值:"); scanf("%d", &n); sum = 0; k = 1; for(i = 1; i <= (n+1)/2; +i) /计算正数项的和:1+3/7+5/13+ sum += (2*i-1)/(double)k; k += 6; /正数项和分别与各个负数项求和(1+3/7+5/13+-1/2-2/5-3/8-if(n%2=0) /区分n为偶数时,负数项的个数为n的一半 k=2;for(i = 1; i <= n/2; +i) sum -= i/(double)k; k += 3; else /区分n为奇数时,负数项的个数为n-1的一半,比正数项少一个k=2;for(i = 1; i <= (n-1)/2; +i) sum -= i/(double)k; k += 3; printf("S=%.3lfn", sum); 分析2:即对S中负数项的分子与分母分别乘以2,会发现相邻的两项的分子部分为相邻的整数,而相邻两项的分母间为前项的分母+3=后项的分母。参考程序:#include <stdio.h> void main()int n,i,k,sign; float s=0;sign=1;k=1;scanf("%d",&n);for(i=1;i<=n;i+)s=s+sign*(float)i/k;k=k+3;sign=sign*(-1);printf("S=%.3fn",s);(2)输入一个正整数data,请编写程序,实现下列功能:求它的位数;求各位数字之和;从高位开始逐位分割并输出它的各位数字。输入样例:请输入一个整数:12345输出样例:12345是一个5位整数,各位数字之和为15各位数字分别为:1 2 3 4 5参考程序如下:#include <stdio.h>#include <math.h>void main( ) int count, in, sum, temp,t; printf("请输入一个正整数:"); scanf("%d", &in); temp=in; count=sum=0; while(temp!=0) /求正整数的位数,及各位数之和 sum=sum+temp%10; count+; temp=temp/10; printf("%d是一个%d位整数,各位数字之和为%dn", in, count, sum);temp=in;printf("各位数字分别为:");while(temp!=0)t=temp/pow(10,count-1);printf("%d ",t);temp=temp-t*pow(10,count-1);count-;(3)输入2个正整数m和n(m1,n500),输出m和n之间的所有素数,每行输出6个。输入样例:请输入两个整数:m=1,n=35输出样例:2 3 5 7 11 1317 19 23 29 31参考程序如下:#include <stdio.h>#include <math.h>void main()int i,j,p,m,n,count;count=0; /统计素数的个数printf("请输入两个整数:");scanf("m=%d,n=%d",&m,&n);for(i=m;i<=n;i+)for(j=2;j<=(int)sqrt(i);j+)if(i%j=0) break;if(j>(int)sqrt(i) && i!=1)printf("%d ",i);count+;if(count%6=0)printf("n");3.程序改错输入2个正整数m和n,求这两个正整数的最大公约数和最小公倍数。输入样例(改正后程序的运行结果):请输入两个整数:m=6,n=9输出样例:6,9的最大公约数是:36,9的最小公倍数是:18程序(有错误的程序,红色的部分即为改正的部分):#include <stdio.h>#include <math.h>void main()int m,n,max,min,data1,data2,r;printf("请输入两个正整数:");scanf("m=%d,n=%d",&m,&n);data1=m; data2=n;if(m<n) r=m; m=n; n=r; r=m%n;while(r!=0) /辗转相除法,求最大公约数 m=n; n=r; r=m%n; max=n; /循环结束后,最大公约数即为nmin=data1*data2/max; /两个原数相乘,再除以最大公约数,即为最小公倍数printf("%d,%d的最大公约数:%dn",data1,data2,max);printf("%d,%d的最小公倍数:%dn",data1,data2,min);思考题3:求两个正整数的最大公约数和最小公倍数,采用辗转相乘法是求解问题的方法之一,也可以采用for循环结构,结合break语句进行求解,不需要判断两个正整数的大小,请读者根据这种算法思想,编程求解两个正整数的最大公约数和最小公倍数。参考程序如下:#include <stdio.h>#include <math.h>void main()int m,n,max,min,i;printf("请输入两个正整数:");scanf("m=%d,n=%d",&m,&n);for(i=1;i<=m*n;i+) /m和n的最小公倍数在1m*n之间if(i%m=0 && i%n=0) min=i; break; max=m*n/min; /由m、n和最小公倍数min,即可求出最大公约数printf("%d,%d的最大公约数:%dn",m,n,max);printf("%d,%d的最小公倍数:%dn",m,n,min);-

    注意事项

    本文(实验三-循环结构程序设计.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开