




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
一、實驗?zāi)康暮鸵?掌握C語言中定義函數(shù)的方法。2掌握函數(shù)傳值調(diào)用的方法。3掌握遞歸函數(shù)的設(shè)計方法。4掌握幾個函數(shù)放在一個文件中以及分別放在幾個文件中的編譯、連接方法。二、實驗內(nèi)容1上機調(diào)試下面的程序。#includeint sum(int a,int b)/*定義一個求和函數(shù)*/ return(a+b);/*返回a+b的值*/void main()int x,y;printf(%dn,sum(x,y);/*調(diào)用sum函數(shù)并顯示結(jié)果*/程序運行過程:37814751。2編寫程序,在主函數(shù)中輸出1!2!3!.10!的值。要求將計算階乘的運算寫成函數(shù)。#include void main()int i,sum=0; long fac(int i);for(i=1;i=10;i+)sum+=fac(i);printf(sum=%ldn,sum);long fac(int i)int r;if(i=1) r=1;else r=i*fac(i-1);return r;程序運行過程:sun=4037913.3編寫函數(shù),將輸入的十進制正整數(shù)n轉(zhuǎn)換為二進制數(shù),并將轉(zhuǎn)換結(jié)果輸出。#include void main()int n;void Dec2Bin(int m); /*自定義函數(shù)的函數(shù)聲明*/ printf(Input decimal number:n);scanf(%d,&n); Dec2Bin(n);void Dec2Bin(int m) int bin32,j; for(j=0;m!=0;j+) binj= m%2; /*除2取余,余數(shù)放入到數(shù)組中*/ m=m/2; printf(Output binary number:n); for(;j!=0;j-) /*數(shù)組內(nèi)的值反序輸出*/ printf(%d, binj-1 );程序運行過程:Input decimal number:8Output binary number:1000。4求方程的根,用3個函數(shù)分別求當大于0、等于0和小于0時的根,并輸出結(jié)果。從主函數(shù)輸入a、b、c的值。#include #include double x1,x2;void root1(double a,double b,double d)x1=(-b+sqrt(d)/2/a;x2=(-b-sqrt(d)/2/a;printf(x1=%.2lf,x2=%.2lfn,x1,x2);void root2(double a,double b)x1=x2=-b/2/a;printf(x1=%.2lf,x2=%.2lfn,x1,x2);void root3(double a,double b,double d)x1=-b/2/a; x2=sqrt(-d)/2/a;printf(x1=%.2lf+%.2lfinx2=%.2lf-%.2lfi,x1,x2,x1,x2);void main ()double a,b,c,d;printf(please input a,b,c:n);scanf(%lf,%lf,%lf,&a,&b,&c);d=b*b-4*a*c;if(d0)root1(a,b,d); else if(d=0) root2(a,b);elseroot3(a,b,d);程序運行結(jié)果:please input a,b,c:2,3,4x1=-0.75+1.20ix2=-0.75-1.20i 5.寫一函數(shù),使給定的一個二維數(shù)組(3 3)轉(zhuǎn)置,即行列互換。#include#define N 3int arrayNN;void convert(int array33) /*定義轉(zhuǎn)置數(shù)組的函數(shù)*/int i,j,t;for (i=0;iN;i+) /*對所有的行*/for (j=i+1;jN;j+) /*對主對角線以上的元素*/t=arrayij; /*與對應(yīng)位置元素相交換*/arrayij=arrayji;arrayji=t;void main( )int i,j;printf(Input array:n);for (i=0;iN;i+) /*此雙重循環(huán)讀入數(shù)組元素*/for(j=0;jN;j+)scanf(%d,&arrayij);printf(noriginal array :n);for (i=0;iN;i+) /*此雙重循環(huán)以矩陣形式輸出數(shù)組元素*/ for (j=0;jN;j+)printf(%5d,arrayij);printf(n);convert(array); /*調(diào)用函數(shù),對實參數(shù)組array轉(zhuǎn)置*/printf(convert array:n);for (i=0;iN;i+) /*輸出轉(zhuǎn)置后的結(jié)果*/ for(j=0;jN;j+)printf(%5d,arrayij);printf(n);程序運行過程:Input array:1 2 34 5 67 8 9Original array:123456789Convert array:1472583696.寫一函數(shù),輸入一行字符,將此字符串中最長的單詞輸出。#include#includeint alphabetic(char c) /* 判斷當前字符是否字母,是返回1,否則返回0 */if (c=a& c=A&c=Z)return(1);elsereturn(0);int longest(char string) /* 尋找最長單詞的起始位置 */ int len=0,i,length=0,flag=1,place=0,point;for(i=0;i=length) /*以point位置開始的詞如為當前最長的,記住其位置*/ length=len; place=point; len=0;return(place); /*返回最長單詞的起始位置*/void main( )int i;char line100;printf(Input one line:n);gets(line); /*讀入一行文本*/printf(nThe longest word is :);for(i=longest(line);alphabetic(linei);i+) /*輸出最長的單詞*/printf(%c,linei);printf(n);運行情況:Input one line:I am a teacherThe longest word is:teacher7.m個人的成績存放在整型數(shù)組score中,請編寫函數(shù)fun,它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回主函數(shù),并將低于平均分的分數(shù)存放在主函數(shù)定義的數(shù)組below中。#include stdio.hint fun(int score,int m,int below)/*計算score數(shù)組中m個元素的均值,并把小于平均值的元素逐個存放在below數(shù)組中*/int i,k=0,aver=0;for(i=0;im;i+)aver+=scorei; /* 計算總分 */aver/=m; /* 計算平均分 */for(i=0;im;i+) /* 逐個判斷分數(shù)值 */if(scoreiaver) /* 如低于平均分 */belowk=scorei; /* 存放到以below為首地址的數(shù)組中 */k+; /* 統(tǒng)計低于平均分的人數(shù) */return k; /* 返回人數(shù) */void main( )int i,n,below9;int score9=10,20,30,40,50,60,70,80,90;n=fun(score,9,below); /* 調(diào)用函數(shù),低于平均分的人數(shù)賦給n */printf(nbelow the average are:);for(i=0;in;i+) printf(%4d,belowi); /* 輸出below數(shù)組中n個值 */程序運行結(jié)果:Below the average are:10203040。8.編寫函數(shù)fun,功能是計算下列級數(shù)的和,返回值為計算結(jié)果。在主函數(shù)中作相應(yīng)調(diào)用并輸出結(jié)果。#include stdio.h#include math.hdouble fun(double x,int n) /* 計算級數(shù)的和并返回計算結(jié)果 */ double s=1,p=1,t=1;int i;for(i=1;i=n;i+) t*=i; /* 求分母 */ p*=x; /* 求分子 */s+=p/t; /* 本項累加到和變量 */return s;void main( ) printf(n%fn,fun(0.3,10); /* 將函數(shù)的返回值輸出 */ 程序運行結(jié)果: 1.349859三、討論、心得思考:主函數(shù)中sum(x,y)是如何得到實參?答:通過return語句返回的。思考:如果函數(shù)fac()寫成非遞歸形式,應(yīng)如何修改源程序?答:將long fac(int i)int r;if(i=1) r=1;else r=i*fac(i-1);return r;改為long fac(int i)int r,s;for(r=1;0i;i-)r=r*i;return r;思考:如何修改算法將十進制正整數(shù)轉(zhuǎn)換成k進制數(shù),并按位輸出?答:將for(j=0;m!=0;j+) binj= m%2; /*除2取余,余數(shù)放入到數(shù)組中*/ m=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)墊資居間合同范例
- 1996聘用合同范例
- 公司糾紛合同范例
- 初級護師考試疾病管理方法試題及答案
- 買賣賒銷合同范例
- 公廁長期維修合同范例
- 專業(yè)承包倉庫合同范例
- 供貨承攬合同范例
- 2025年四川省峨眉山市中考二模語文試題(原卷版+解析版)
- 產(chǎn)品網(wǎng)絡(luò)代理合同范例
- 帶式輸送機畢業(yè)設(shè)計論文
- 基礎(chǔ)工程之地基處理培訓講義
- 區(qū)域經(jīng)濟一體化理論課件
- 中級技工防水工考核試題及答案
- 高水平環(huán)境藝術(shù)設(shè)計專業(yè)群自評報告
- 新店特大橋45#墩水渠改移施工方案打印版
- 急重癥膿毒癥及膿毒性休克患者液體治療
- 山東省鉛酸蓄電池收集和轉(zhuǎn)移管理制度試點工作方案
- 2022年12月大學英語四級考試真題及答案(第2套)
- 新型功能材料-漂珠
- GB/T 21632-2008危險品噴霧劑泡沫可燃性試驗方法
評論
0/150
提交評論