C程式設計--案例(2018年江蘇大學程式設計考研試題 -- 程式設計題)
阿新 • • 發佈:2018-12-05
題目(總):
解答(答案為博主自已所寫,並非最優程式碼,僅供參考)
第一題
- 題目
定義一個函式,計算並返回如下算式的值:函式式見上,在主函式中輸入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
- 執行結果