c語言程式實驗————實驗報告十

HX66666666666666發表於2024-05-26

c語言程式實驗————實驗報告十

  • 實驗專案名稱: 實驗報告10 函式的呼叫
  • 實驗專案型別:驗證性
  • 實驗日期:2024 年 5 月 20 日

一、實驗目的

1.掌握定義函式的方法
2.掌握函式呼叫、實參與形參的對應關係、引數的傳遞方式
3.掌握函式的巢狀呼叫和遞迴呼叫的方法
4.掌握全域性變數和區域性變數、動態變數和靜態變數的概念和使用方法
5.學習多檔案程式的編譯和執行

二、實驗硬、軟體環境

Windows計算機、Dev c 6.0

實驗內容:

(1)用遞迴方法求fac(n)=n!
(2)輸入長方形的長寬高a,w,h,求體積及3個側面的面積(用呼叫自定義函式的方法實現)。
(3)請用自定義函式的形式程式設計實現求10個同學C語言成績的平均分,輸出平均分及低於平均分的同學成績。。
(4)請編寫兩個自定義函式,分別實現求兩個整數的最大公約數和最小公倍數,並用主函式呼叫這兩個函式,輸出結果(兩個整數由鍵盤輸入得到)。

三、實驗步驟:

專案一

解題思路
自定義整形函式int fac(int n),if函式定義(n1||n0),return 返回1,else否則返回nfac(n-1);輸入主函式int main(),int定義n,m;scanf函式定義n;m=fac(n);其中呼叫自定義函式fac並將結果賦值給m。printf輸出n,m。
核心程式碼
#include<stdio.h>
int fac(int n)
{
if(n1||n0)
return 1;
else
return n
fac(n-1);
}
int main()
{
int n,m;
printf("請輸入一個正整數:");
scanf("%d",&n);
m=fac(n);
printf("%d!=%d\n",n,m);
printf("31韓翔-專案1");
}
實驗截圖

專案二

解題思路
int定義s1, s2, s3; 自定義函式vs (int a, int b, int c) , int定義v,輸入表示式v=abc; s1=ab; s2=bc; s3=ac; return返回v;輸入主函式int main (),int定義v1, a,w,h; scanf 定義 a,w,h;v1=vs (a,w,h); 其中呼叫函式vs並將結果賦值給v1, printf 輸出體積和三個面面積 v1,s1,s2,s3。
核心程式碼
#include<stdio.h>
int s1, s2, s3;
int vs (int a, int b, int c)
{
int v;
v=a
bc;
s1=a
b;
s2=bc;
s3=a
c;
return v;
}
int main ()
{
int v1, a,w,h;
printf ("請輸入長、寬、高:\n");
scanf ("%d%d%d", &a,&w,&h);
v1=vs (a,w,h);
printf ("體積為:%d, s1=%d,s2=%d, s3=%d\n",v1,s1,s2,s3);
printf("31韓翔-專案2");
}
實驗截圖

專案三

解題思路
自定義函式float avg(float a[10]),int定義i;float定義avg,sum且給sum賦值0;for函式定義(i=0;i<10;i++),輸入定義式sum=sum+a[i];avg=sum/10.0;return返回avg;輸入主函式int main()float定義score[10],avg1;int i;for函式再次定義(i=0;i<10;i++),scanf呼叫&score[i];avg1=avg(score);其中呼叫函式avg並將結果賦值給avg1;printf輸出平均成績,avg1;for函式再定義(i=0;i<10;i++),if函式定義(score[i]<avg1),printf輸出低於平均分的成績score[i]。
核心程式碼
#include<stdio.h>
float avg(float a[10])
{
int i;
float avg,sum=0;
for(i=0;i<10;i++)
sum=sum+a[i];
avg=sum/10.0;
return avg;
}
int main()
{
float score[10],avg1;
int i;
printf("請輸入10個學生的成績:\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
printf("\n");
avg1=avg(score);
printf("平均成績為:%.2f\n",avg1);
for(i=0;i<10;i++)
{
if(score[i]<avg1)
printf("低於平均分的成績:%.2f\n",score[i]);
}
printf("31韓翔-專案3");
}
實驗截圖

專案四

解題思路
自定義函式int x(int a,int b), int定義r,t;if函式定義(b>a)如果b>a那麼t=a;a=b;b=t;while函式定義((r=a%b)!=0) 當(r=a%b)!=0,那麼a=b; b=r; return返回b; 自定義函式int y(int a,int b) ,int d;輸入定義式d=x(a,b);return返回ab/d;輸入主函式int main(),int定義a,b,c,d;scanf呼叫&a,&b;c=x(a,b); d=y(a,b);其中呼叫函式x,y並將結果分別賦值給c,d; printf輸出最大公因數和最小公倍數,c,d。
核心程式碼
#include<stdio.h>
int x(int a,int b)
{
int r,t;
if(b>a)
{
t=a;
a=b;
b=t;
}
while((r=a%b)!=0)
{
a=b; b=r;
}
return b;
}
int y(int a,int b)
{
int d;
d=x(a,b);
return a
b/d;
}
int main()
{
int a,b,c,d;
printf("請輸入兩個整數a,b: ");
scanf("%d,%d",&a,&b);
c=x(a,b); d=y(a,b);
printf("最大公因數為:%d\n最小公倍數為:%d\n",c,d);
printf("31韓翔-專案4");
}
實驗截圖

四、實驗結果及分析

在專案一中scanf中沒加逗號導致程式碼執行不了,後改正。
在專案三中int定義i後沒加分號導致執行不了,後檢查出並改正。
在專案四中scanf處少加一個%d,後改正。

相關文章