1.设计一个函数,使用以下无穷极数计算sinx的值,sinx=x/1!-(x^3)/3!+(x^5)/5!-(x^7)/7!+....。舍去的绝对值应小于m,m的值由用户指定。
#include<stdio.h>
#include<math.h>
double computeSin(double x, double m) {
double term = x; // 第一项为x
double sinx = term; // 初始值为第一项
int n = 1; // 项数
while (fabs(term) > m) {
term = term * (-1) * x * x / ((2 * n) * (2 * n + 1)); // 计算下一项
sinx = sinx + term; // 加上下一项
n++; // 项数加1
}
return sinx;
}
int main() {
double x, m;
printf("请输入角度值x:");
scanf("%lf", &x);
printf("请输入精度m:");
scanf("%lf", &m);
double radian = x * 3.14159265 / 180; // 将角度转换为弧度
double sinValue = computeSin(radian, m); // 计算sin值
printf("sin(%.2lf) = %.6lf", x, sinValue);
return 0;
}
2.设计一个函数,输出小于n的所有的Fibonacci(斐波那契数列)数。
#include <stdio.h>
int showFibonacci(int n){
int t1 = 1, t2 = 1, nextTerm = 0;
// 显示前两项
printf("%d以内的斐波那契数列: %d, %d, ",n, t1, t2);
nextTerm = t1 + t2;
while(nextTerm <= n)
{
printf("%d, ",nextTerm);
t1 = t2;
t2 = nextTerm;
nextTerm = t1 + t2;
}
}
int main()
{
int n;
printf("请输入一个正整数: ");
scanf("%d", &n);
showFibonacci(n);
return 0;
}
3.设计一个将英寸转换为厘米的函数(1英寸等于2.54厘米)
#include <stdio.h>
double show(double n){
double m;
m=2.54*n;
printf("%lf英寸等于%lf厘米。\n",n,m);
}
int main()
{
double n;
printf("请输入英寸大小: ");
scanf("%lf", &n);
show(n);
return 0;
}
4.写3个函数,分别实现对一个双精度向上取整、向下取整和四舍五入的操作。
#include<stdio.h>
#include<math.h>
//向上取整
double ceilNumber(double number)
{
double number1;
number1 = ceil(number); //求出给定数的最小整数
return number1;
}
//向下取整
double floorNumber(double number) {
double number2;
number2=floor(number);
return number2;
}
//四舍五入
int sw(int number) {
int number3;
number3=(int)number;
return number3;
}
int main(){
double number,c,f;
int s;
printf("Please input number:");
scanf("%lf",&number);
c=ceilNumber(number);
f=floorNumber(number);
s=sw(number);
printf("%lf的向上取整:%lf;向下取整:%lf;四舍五入:%d。",number,c,f,s);
return 0;
}
5.编写一个递归函数reverse,它有一个整型参数和一个整型的返回值。reverse函数返回参数值如,参数值为12345时,函数打印出54321。
#include <stdio.h>
int reverse( int number )
{
int sum=0;
while(number)
{
sum=sum*10+number%10;
number/=10;
}
return sum;
}
int main()
{
int n,result;
scanf("%d", &n);
result=reverse(n);
printf("%d\n", result);
return 0;
}
这道题的算法运用得很巧妙啊!值得细细品味。