freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

[計算機軟件及應用]c語言程序設計第5章(編輯修改稿)

2024-11-12 23:11 本頁面
 

【文章內容簡介】 } 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ?????? int c(int x,int y) { int z。 if (y==1||y==x) return 1。 else { z=c(x1,y1)+c(x1,y)。 return z。 } } 32 【 例四 】 Fibonacci數列問題。 1 (n=1) 遞歸函數: fib(n)= 1 (n=2) fib(n1)+fib(n2) (n1) 程序如下: fib (int n) { int f。 if (n==1||n==2) f=1。 else f=fib(n1)+fib(n2)。 return (f)。 } main() { int i,s=0。 clrscr( )。 for (i=1。i=12。i++) s=s+fib(i)。 printf(n=12,s=%d,s)。 } 結果: n=12,s=376 33 【 例五 】 運行下列程序,當輸入字符序列AB$CDE并回車時,程序的輸出結果是什么? include rev() { char c。 c=getchar()。 if (c==39。$39。) printf(%c,c)。 else { rev()。 printf(%c,c)。 } } main() { rev()。 } 結果: $BA rev() c=?A‘ rev( ) 輸出’ A‘ rev() c=?B‘ rev( ) 輸出’ B‘ rev() c=?$‘ 輸出’ $‘ 34 【 例六 】 反向輸出一個整數(非數值問題) 非數值問題的分析無法象數值問題那樣能得出一個初值和遞歸函數式,但思路是相同的。 分析方法: ①簡化問題:設要輸出的正整數只有一位,則“反向輸出”問題可簡化為輸出一位整數。 ②對大于 10的正整數,邏輯上可分為兩部分:個位上的數字和個位以前的全部數字。將個位以前的全部數字看成一個整體,則為了反向輸出這個大于 10的正整數,可按以下步驟: a、輸出個位上的數字; b、將個位除外的其他數字作為一個新的整數 ,重復 a步驟的操作。 其中 b問題只是對原問題在規(guī)模上進行了縮小 ——遞歸。 所以,可將反向輸出一個正整數 x的算法歸納為: if ( x為一位整數) 輸出 x; else { 輸出 x的個位數字; 對剩余數字組成的新整數重復“反向輸出”操作; } 35 程序如下: include void main() { void printn(int x)。 int n。 printf(Input n=)。 scanf(%d,amp。n)。 if (n0) {n=n。putchar(39。39。)。} printn(n)。 } 【 例六 】 反向輸出一個整數(非數值問題) /*反向輸出整數 x*/ void printn(int x) { /*若 x為一位整數 */ if (x=0amp。amp。x=9) printf(%d,x)。 /*若 x為多位整數 */ else { /*輸出其個位,并形成新的 x*/ printf(%d,x%10)。 printn(x/10)。 } } 36 【 例七 】 漢諾塔( Tower of Hanoi)問題。 也是一個非數值問題。 P113例 分析方法: ①簡化問題:設盤子只有一個,則本問題可簡化為 a→b 。 ②對于大于一個盤子的情況,邏輯上可分為兩部分:第 n個盤子和除 n以外的 n1個盤子。如果將除 n以外的 n1個盤子看成一個整體,則要解決本問題,可按以下步驟: a、將 a桿上 n1個盤子借助于 b先移到 c桿; a→c (n 1,a,c,b) b、將 a桿上第 n個盤子從 a移到 b桿; a→b c、將 c桿上 n2個盤子借助 a移到 b桿。 c→b ( n2,c,b,a) 37 五 、數組作為函數參數 用數組元素作函數實參 P164 此時可把數組元素看作普通變量 (單向的值傳送 )。 ? 特點: 主調函數中的實參 ——數組元素 (帶下標) 被調函數中的形參 ——普通變量 ? 調用結果:形參值的變化對實參值無影響 (二者分占不同內存)。 38 【 例一 】 以下程序的功能是什么? include main() { int i。 float sum=0,x[10]。 float mean(float,int)。 clrscr()。 for(i=0。i10。i++) { printf(請輸入 x[%d]=,i)。 scanf(%f,amp。x[i])。 sum+=mean(x[i],i)。 } printf(結果是 :%f\n,sum)。 } float mean(float a, int i) { if (a0) { printf(%f的平方根是 :%f\n,a,sqrt(a))。 return sqrt(a)。 } else printf(x[%d]=%f\n,i,a)。 return 。 } 在主函數中輸入 10個數值 ,并調用功能函數求其正數的算術平方根之和。 39 什么是單向 “ 值傳送 ” 方式? 40 五 、數組作為函數參數 用數組名作函數實參 P165 若 int a[6]; 則數組名 a表示數組的起始地址。 所以用數組名,實際上是把實參數組的起始地址“傳給”形參數組。 ? 本質:對應的數組元素(不是形參與實參) 共享 同一段內存單元(所謂“雙向的地址傳送”)。 ? 特點: 主調函數中的實參 ——數組名(不帶下標) 被調函數中的形參 ——數組名或數組定義式 ? 調用結果:兩數組同下標者為同值。 41 【 例二 】 以下程序的運行結果是什么? f(int b[ ],int n) { int i,t。 t=0。 for (i=1。i=n。i++) t=t+b[i]。 return t。 } main() { int x,a[ ]={1,2,3,4,6}。 x=f(a,a[3])。 printf(%d\n,x)。 } 注意 形參數組和實參數組應分別在各自函數中定義; 形參數組可不定義大?。ㄓ每辗礁瘢?; 二者大小可一致或不一致( C編譯程序不檢查形參), 但注意引用形參時不要超過實參界。 結果: 15 42 什么是雙向的 “ 地址傳送 ” 方式? f(int b[ ],int n) { int i,t。 t=0。 for (i=1。i=n。i++) t=t+b[i]。 return t。 } main() { int x,a[ ]={1,2,3,4,6}。 x=f(a,a[3])。 printf(%d\n,x)。 } 實質是共享同一段內存單元 43 【 例三 】 分析以下程序的運行結果。 main() { int a[5]={ 5,10,7,3,7 },i。 sort(a,5)。 for (i=0。i5。i++) printf(%d ,a[i])。 } sort(int x[ ],int n) { int j,t。 for (j=0。jn1。j++) if(x[j]x[j+1] ) { t=x[j]。x[j]=x[j+1]。 x[j+1]=t。 } } 結果: 5 –7 3 7 10 【 討論 】 如何通過數組技術將一列數據中最大或最小的數移前或移后? 44 六 、變量的存儲類型 ? 模塊化設計要求研究不同模塊(函數、源文件)間變量的關系。 ? 變量兩大屬性: 〃 數據類型 〃 存儲類別 數據類型(復習) 通過變量說明(定義)來規(guī)定其數據類型:
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1