c语言sinx实验报告
实验题目
C语言基本控制结构
实验时间
2014 年 3月 27日
实验地点
DZ1402
实验成绩
实验性质
□验证性 √设计性 □综合性
教师评价:
□算法/实验过程正确; □源程序/实验内容提交 □程序结构/实验步骤合理;
□实验结果正确; □语法、语义正确; □报告规范;
其他:
评价教师签名:
一、实验目的
1.熟练掌握使用if语句进行单、双分支结构程序设计的基本方法
2.熟练掌握条件运算符的使用方法
3.熟练掌握使用switch语句进行多分支结构程序设计的基本方法
4.熟练掌握使用if语句的嵌套进行多分支结构程序设计的基本方法
5.掌握程序设计中循环的基本概念,能正确掌握while、do-while和for三种语句组成循环结构的基本方法
6.掌握使用多重循环控制结构
二、实验项目内容(实验题目)
编程序实现功能:按照下面的通项公式计算,直到最后一项的绝对值小于10-7为止。
⑴ 输入数据以度数为单位,转换为弧度进行计算;
⑵ 分别输入30度、390度、1110度和1830度进行验证,并记录输出结果;
⑶ 分析输出结果,判定程序是否存在问题。如程序存在问题,给出修改意见(或修改程序满足要求)。
三、源程序(实验过程或算法)
#include
#include
#define PI 3.1415926
void main()
{ double x,sinv,f;
int n;
printf("请输入度数:");
scanf("%lf",&x);
while(x>360)
{x=x-360;}
x=x*PI/180;
n=1;
sinv=f=x;
while(1)
{ if (fabs(f)<1e-7)
break;
f=-f*x*x/(2*n*(2*n+1));
n++;
sinv+=f;
}
printf("sinv=%lf\n",sinv);
}
四、源程序调试过程和(或)实验分析
1. 输入数据以度数为单位,转换为弧度进行计算:
X=x*3.1415925/180
2. 经过调试,源程序无问题。
在第一次实验时发现输入不同数据,部分所得值sinv
更正后,发现所得值不准确,且误差较大。检查后发现n++;位置摆放错误,我将该步骤放在了f=-f*x*x/(2*n*(2*n+1));前面,应在其之后。
之后验证要求验证的四个数据中1830°误差大于1e-7,如图得到sin1830°=0.499617
后我验证更大度数时,程序出错。
验证7230°时得到如上图数据,多次检查,没发现错误。我便怀疑是否是数据过大,不准确。后添加了【while(x>360){x=x-360;}】,验证正确,此乃问题一。
检查无误后,验证过程及正确结果见下图:
sin30°=0.500000
Sin390°=0.500000
Sin1110°=0.500000
Sin1830°=0.500000
通过这次试验,我较好的掌握了if语句单分支结构程序设计的基本方法,掌握了循环语句的使用。也增加了我对程序设计技术的兴趣与热情。