《C语言及程序设计》实践项目——发现Bug
来源:互联网 发布:mac 鼠标右键不能用 编辑:程序博客网 时间:2024/05/22 15:07
返回:贺老师课程教学链接
【项目1-sin泰勒展式中的错误】
下面是sin函数的泰勒展式:
(注:x取弧度值,而非角度值)
编写了double mysin(double x)用于求sin值,却“死”在了123°上。剧透一下,循环没有问题(当然问题会表现在循环中)。试着用调试工具找出问题出现在哪里,然后给出解决问题的方案。
#include<stdio.h>#define pi 3.1415926double mysin(double x);double myabs(double x);int main( ){ double angle; for(angle=0; angle<=180; angle++) printf("sin(%.0f°) = %.3f\n", angle, mysin((angle/180)*pi)); return 0;}//下面定义mysin函数,求sin值double mysin(double x){ double sum=x,x_pow=x,item; int n=1,fact=1, sign=1; //定义变量时赋初值,已经将第一项考虑到累加和sum中 do { fact=fact*(n+1)*(n+2); //fact用于表示阶乘,在公式中作分母 x_pow*=x*x; //x_pow是分子中用于表示阶乘,在公式中作分母 sign=-sign; //确定即将要累加的这一项的符号 item =x_pow/fact*sign; //计算出要累加的项 sum+=item; //将该项累加上去 n+=2; }while(myabs(item)>1e-5); return sum;}//下面定义myabs函数double myabs(double x){ return ((x>=0)?x:-x);}提示:请进入到mysin中后,注意各变量的变化,看通项是否会收敛,从而使循环能够结束。
[参考解答]
【项目2-总是多一次?】
先阅读下面的程序。这样的结构,经常用于重复性工作。执行一次程序要完成的工作后,由操作人员选择,决定是否还来一遍。
#include<stdio.h>void dosomething(int *p);int main( ){ char choice='y'; int n=0; while(choice!='N' && choice!='n') { dosomething(&n); printf("按 N 退出,其他键继续...."); scanf("%c", &choice); //用choice=getchar();也一样 } return 0;}void dosomething(int *p) //完成特定的业务{ *p+=1; //本例中传地址, *p即n printf("第%d次完成业务!\n", *p);}阅读程序,发现在不退出时,想继续一次业务,却……,如图:
通过单步的方式,找出问题的原因,并自行查找资料,找出解决的办法。
[参考解答]
0 0
- 《C语言及程序设计》实践项目——发现Bug
- 《C语言及程序设计》实践项目——使用变量
- 《C语言及程序设计》实践项目——字符数据类型
- 《C语言及程序设计》实践项目——输出小星星
- 《C语言及程序设计》实践项目——迭代法解题
- 《C语言及程序设计》实践项目——循环嵌套
- 《C语言及程序设计》实践项目——数字游戏
- 《C语言及程序设计》实践项目——函数起步
- 《C语言及程序设计》实践项目——函数应用
- 《C语言及程序设计》实践项目——二维数组
- 《C语言及程序设计》实践项目——字符串数组
- 《C语言及程序设计》实践项目——动态数组
- 《C语言及程序设计》实践项目——递归函数
- 《C语言及程序设计》实践项目——枚举应用
- 《C语言及程序设计》实践项目——文件操作
- 《C语言及程序设计》实践项目——分支结构程序设计体验
- 《C语言及程序设计》实践项目——C语言程序初体验
- 《C语言及程序设计》实践项目——动态数组 ->【项目2-动态数组排序】
- UNIX基础--权限
- 第六题
- 开机动画 看图学Android---Android 开发实例教程五
- Windows环境制作黑苹果U盘图文教程
- 【POJ】3225 线段树 + 离散化 + 区间交并
- 《C语言及程序设计》实践项目——发现Bug
- UNIX基础--磁盘组织
- 蓝桥杯 错误票据
- 2015年大一下第6周项目1-实现复数类中的运算符重载
- ZOJ3875:Lunch Time(浙江省赛2015)
- 第五题
- 最近点对问题
- [LeetCode]Longest Common Prefix
- Facebook的开源动画库popAnimation