【项目3-编制三角函数表】
要求在main()函数中调用show_sin_table(min_angle, max_angle),显示角度值为min_angle到max_angle之间的所有角度(间隔为1度)的正弦值。要求不能用数学库函数,可以将项目“太乐了”中的mysin函数拷贝到这个程序中,用于计算sin值。例如show_sin_table(0, 90)可以显示出所有0到90度的正弦值。可以考虑以速查表格的形式(例,单位转换对照表)给出结果。
#include <stdio.h> //下面加入常变量和自定义函数的声明 int main( ) { show_sin_table(0, 90); show_sin_table(135, 180); return 0; } //下面定义show_sin_table()函数 //下面定义mysin函数
[参考解答]
#include<stdio.h> double mysin(double); double myabs(double); void show_sin_table(int, int); const double pi=3.1415926; int main( ) { show_sin_table(0, 90); show_sin_table(135, 180); //程序在显示这部分时进入了死循环,原因待查 return 0; } //下面定义show_sin_table()函数 void show_sin_table(int iFromAngle, int iToAngle) { int x,count=0; printf("由 %d °到 %d°的三角函数表(分三列显示):\n", iFromAngle, iToAngle); for(x=0; x<3; x++) printf("角度x\tsin(x)\t\t"); printf("\n"); //逐个地转换并输出 for(x=iFromAngle; x<=iToAngle; x++) { printf("%d\t", x); printf("%.3f\t\t", mysin(x*pi/180)); if (count%3==2) printf("\n"); ++count; } printf("\n"); return; } //下面定义mysin函数 double mysin(double x) { double sum=x,x_pow=x,item,fact=1; int n=1,sign=1; do { fact*=((n+1)*(n+2)); x_pow*=(x*x); 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); }
时间: 2024-09-17 15:59:22