一、前言
提示:以下是博主自己写的代码,仅供参考,欢迎有兴趣的朋友们留言讨论呀
二、正文
1.第一题
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 10
// 函数计算
double FT(double a, double b, double c);
void main()
{
double a[N], b[N], c[N];
int i;
FILE* fp;
// 打开或创建文件
if (!(fp = fopen("data.txt", "a+")))
{
printf("cannot open the file!\n");
exit(0);
}
// 输入数据
for (i = 0; i < N; i++)
{
printf("请输入第%d组a,b,c:", i + 1);
scanf("%lf%lf%lf", &a[i], &b[i], &c[i]);
printf("\n");
}
// 计算,保存和显示结果
for (i = 0; i < N; i++)
{
printf("a=%.2lf,b=%.2lf,c=%.2lf,T=%lf\n", a[i], b[i], c[i], FT(a[i], b[i], c[i]));
fprintf(fp,"a=%.2lf,b=%.2lf,c=%.2lf,T=%lf\n", a[i], b[i], c[i], FT(a[i], b[i], c[i]));
}
// 关闭文件
if (fclose(fp))
{
printf("cannot close the file!\n");
}
}
double FT(double a, double b, double c)
{
double up, down;
up = 4.25 * (a + b) + log(a + b + sqrt(a + b) + 1 / (a + b));
down = 4.25 * c + log(c + sqrt(c) + 1 / c);
return up / down;
}
运行结果示例:
验算结果:
时间问题,只验算了一组数据(3,4,5)
手写版:
2. 第二题
#include<stdio.h>
// 判断一个自然数是否是降序数,是则返回1,否则返回0
int judge(long int num);
void main()
{
long int num;
while (1)
{
printf("请输入一个自然数:\n");
scanf("%d", &num);
if (num >= 0) {
break;
}
}
if (judge(num))
{
printf("%ld是降序数\n", num);
}
else
{
printf("%ld不是降序数\n", num);
}
}
int judge(long int num)
{
int l, r = 0;
if (num < 10)
{
return 1;
}
else
{
while (num)
{
l = num % 10;
if (l < r)
{
return 0;
}
r = l;
num /= 10;
}
}
return 1;
}
运行结果示例:
手写版:
3.第三题
#include<stdio.h>
#include<math.h>
// 原函数
double F(double x);
// 导数
double G(double x);
void main()
{
double x = -1, y;
do {
y = x;
x = y - F(y) / G(y);
} while (fabs(x - y) > 1e-6);
printf("方程的近似根为:%lf\n", x);
}
double F(double x)
{
return pow(x, 41) + x * x * x + 1;
}
double G(double x)
{
return 41 * pow(x, 40) + 3 * x * x;
}
运行结果示例:
手写版: