版权声明:本文由 Micheal 超 博客 创作,转载请附带链接,有问题欢迎交流。 https://blog.csdn.net/qq_42887760/article/details/84800420
题目(总):
解答(答案为博主自已所写,并非最优代码,仅供参考)
第一题
- 题目
定义一个函数,计算并返回如下算式的值:函数式见上,在主函数中输入10组实数a、b、c的值。。。。。。
- 参考代码(答案并非最优代码,仅供参考)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define n 10
double T(double a,double b,double c);
int main(){
FILE *fp;
if((fp=fopen("data.txt","w"))==NULL){
printf("文件不存在或者文件无法打开!!!");
exit(0);
}
double a,b,c,result;
printf("请输入%d组参数\n",n);
for(int i=0;i<n;i++){
printf("第 %d 组数据: ",i);
scanf("%lf %lf %lf",&a,&b,&c);
result=T(a,b,c);
printf("T(%5.2lf,%5.2lf,%5.2lf)=%8.3lf \n\n",a,b,c,result);
fprintf(fp," %5.2lf \t %5.2lf \t %5.2lf %8.3lf \n",a,b,c,result);
}
return 0;
}
double T(double a,double b,double c){
double part1,part2;
part1=4.25*(a+b)+log(a+b+sqrt(a+b)+1/(a+b));
part2=4.25*c+log(c+sqrt(c)+1/c);
return part1/part2;
}
- 代码说明
考察内容主要是:
①文件的输出
②math.h头文件中的函数的使用
函数原型 | 函数功能 |
---|---|
表示 | |
表示 | |
表示 的绝对值 | |
表示 (不大于x的最大整数) | |
表示 | |
表示 |
- 运行结果
第二题
- 题目
判断一个自然数是否是降序数
- 参考代码(答案并非最优代码,仅供参考)
#include<stdio.h>
int main(){
long int number,num;
int t1,t2;
printf("请输入一个自然数: ");
scanf("%ld",&number);
num=number;
t1=num%10;//拿到末位数
do{
num/=10;
t2=num%10;//拿到倒数第二位数
if(t1<=t2)
t1=t2;
else
break;
}while(num);
if(num){//num!=0; 即提前退出了循环
printf("%ld不是降序数\n",number);
}else{
printf("%ld是降序数\n",number);
}
return 0;
}
- 代码说明
降序数可以逆过来思考,即从右往左看是一个升序数 - 运行结果
第三题
- 题目
牛顿迭代法求方程的解
- 参考代码(答案并非最优代码,仅供参考)
#include<stdio.h>
#include<math.h>
double func(double x);
int main(){
double x=-1,result;
result= func(x);
printf("函数在x=%5.2lf附近的近似根为%lf \n",x,result);
return 0;
}
double func(double x){
double x0,x1=x;
double f,f1;
do{
x0=x1;
f=pow(x0,41)+pow(x0,3)+1;
f1=41*pow(x0,40)+3*pow(x0,2);
x1=x0-f/f1;
}while(fabs(x1-x0)>1E-6);
return x0;
}
- 代码说明
推荐参考:
- 运行结果
- 参考代码2(答案并非最优代码,仅供参考)
#include<stdio.h>
#include<math.h>
float Function(float x){//原函数的值
return pow(x,41)+x*x*x+1;
}
float Differential(float x){//一阶导函数的值
return 41*pow(x,40)+3*x*x+1;
}
void main(){
float result=-1,a;
int i=0;
for(;;)
{
a=result;
result=result-Function(result)/Differential(result); //牛顿计算法。
printf("%f\n",result);//将每个结果都输出来
//判断小数点后6位的值是否相等,当出现4次都相等时输出该值。
if(fabs(a)==fabs(result))
{
i++;
if(i>2) break;
}
}
printf("最后的结果为%f\n",result);
}
- 代码说明
推荐参考:
https://blog.csdn.net/weixin_41789607/article/details/79694492
- 运行结果