C程序設(shè)計(jì)2010作業(yè)參考答案 - 復(fù)制.ppt_第1頁(yè)
C程序設(shè)計(jì)2010作業(yè)參考答案 - 復(fù)制.ppt_第2頁(yè)
C程序設(shè)計(jì)2010作業(yè)參考答案 - 復(fù)制.ppt_第3頁(yè)
C程序設(shè)計(jì)2010作業(yè)參考答案 - 復(fù)制.ppt_第4頁(yè)
C程序設(shè)計(jì)2010作業(yè)參考答案 - 復(fù)制.ppt_第5頁(yè)
已閱讀5頁(yè),還剩122頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C程序設(shè)計(jì)習(xí)題解(參考),第1章作業(yè) P13,C程序設(shè)計(jì) 第一章 緒論,顯示用星號(hào)組成的你的姓的第一個(gè)字母。 自己想象和設(shè)計(jì)一個(gè)小圖形輸出(或者從網(wǎng)上找一個(gè)圖形)。 3 令變量 float a=14,b=3,求a/b并輸出。 輸入矩形的寬和高,輸出矩形的面積。 提示:輸入2個(gè)數(shù)據(jù):scanf(%d%d,5 計(jì)算當(dāng)x=60時(shí)的y值.其中:,1 顯示用星號(hào)組成的你的姓的第一個(gè)字母。,#include void main() printf( * *n); printf( * *n); printf( * * * * *n); printf( * *n); printf( * *n); ,C程序設(shè)計(jì)

2、第一章 緒論,2 圖形欣賞,#include void main() printf( / - / n); printf( ( = T =) n); printf( ( o ) n); ,注意:其中的反斜杠之前要再加一個(gè)反斜杠。,C程序設(shè)計(jì) 第一章 緒論,3 令變量a=14,b=3,求a/b并輸出,#include void main() float a, b, s; a=14; b=3; s=a/b; printf( a/b= %fn, s); ,C程序設(shè)計(jì) 第一章 緒論,4 輸入矩形的寬和高,輸出矩形的面積。,#include void main() int a, b, s; printf(

3、請(qǐng)輸入矩形的寬和高:n); scanf(%d%d, ,C程序設(shè)計(jì) 第一章 緒論,#include #include void main() float x, y; x=3.14/3; /x=60*3.14/180; y=sqrt(1-cos(x)*cos(x)/2); printf(y= %fn, y); ,C程序設(shè)計(jì) 第一章 緒論,5 計(jì)算當(dāng)x=60時(shí)的y值.其中:,第2章作業(yè),C程序設(shè)計(jì) 第二章 程序的靈魂 算法,寫出編寫簡(jiǎn)單C程序的一般框架的固定格式. 編程的三大基本結(jié)構(gòu)是什么?分別畫出相應(yīng)的傳統(tǒng)流程圖和N-S流程圖。 輸入圓的半徑,求出圓的周長(zhǎng)和面積并輸出.畫出相應(yīng)算法的傳統(tǒng)流程圖和N

4、-S流程圖,并編出相應(yīng)C程序。 輸入x求下面分段函數(shù)y的值.畫出相應(yīng)算法的傳統(tǒng)流程圖和N-S流程圖,并編出相應(yīng)C程序。 5 計(jì)算級(jí)數(shù)12+22+32+1002的值.畫出相應(yīng)算法的傳統(tǒng)流程圖和N-S流程圖,并編出相應(yīng)C程序。 示例:1+2+100 N-S流程圖。,1 寫出編寫簡(jiǎn)單C程序的一般框架的固定格式.,C程序設(shè)計(jì) 第二章 程序的靈魂 算法,編寫簡(jiǎn)單C程序的一般框架的固定格式: (牢記?。?#include void main() / 1 說明部分:變量定義 / 2 執(zhí)行部分: / 輸入數(shù)據(jù) / 計(jì)算處理(*!) / 輸出結(jié)果 ,2 編程的三大基本結(jié)構(gòu)是什么?分別畫出相應(yīng)的傳統(tǒng)流程圖和N-S

5、流程圖。,C程序設(shè)計(jì) 第二章程序的靈魂 算法,1) 順序結(jié)構(gòu):,2) 選擇結(jié)構(gòu):,3) 循環(huán)結(jié)構(gòu):,3輸入圓的半徑,求出圓的周長(zhǎng)和面積并輸出.畫出相應(yīng)算法的傳統(tǒng)流程圖和N-S流程圖,并編出相應(yīng)C程序。,C程序設(shè)計(jì) 第二章程序的靈魂 算法,程序: #include void main() float r,l,s; /說明部分:變量定義 scanf(%f, / 3)輸出結(jié)果 ,4輸入x求下面分段函數(shù)y的值.畫出相應(yīng)算法的傳統(tǒng)流程圖和N-S流程圖,并編出相應(yīng)C程序。,C程序設(shè)計(jì) 第二章程序的靈魂 算法,程序: #include #include void main() float x,y; /說明部

6、分:變量定義 scanf(%f, / 3)輸出結(jié)果 ,4 計(jì)算級(jí)數(shù)12+22+32+1002的值.畫出相應(yīng)算法的傳統(tǒng)流程圖和N-S流程圖,并編出相應(yīng)C程序。,C程序設(shè)計(jì) 第二章程序的靈魂 算法,程序: #include void main() int sum,i; /說明部分:變量定義 sum=0;i=1; /執(zhí)行部分:1)輸入數(shù)據(jù) while(i=100) / 2)計(jì)算處理 sum=sum+i*i; i=i+1; printf(sum=%dn,sum); / 3)輸出結(jié)果 ,第3章作業(yè)P66,Ex3.6, 3.7, 3.9(其中一個(gè)編程計(jì)算), 3.10,C程序設(shè)計(jì) 第三章 數(shù)據(jù)類型與運(yùn)算符

7、,#include void main() char c1=C,c2=h,c3=i,c4=n,c5=a; c1=c1+4; c2=c2+4; c3=c3+4; c4=c4+4; c5=c5+4; printf(密碼是: %c%c%c%c%cn,c1,c2,c3,c4,c5); ,Ex3.7 譯密碼,C程序設(shè)計(jì) 第三章 數(shù)據(jù)類型與運(yùn)算符,#include void main() float x=2.5,y=4.7,z; int a=7; z=x+a%3*(int)(x+y)%2/4; printf(表達(dá)式的值是: %.1fn,z); 1: 2.5 2: 3.5,Ex3.9 計(jì)算表達(dá)式 (其中一個(gè)

8、編程計(jì)算),C程序設(shè)計(jì) 第三章 數(shù)據(jù)類型與運(yùn)算符,9,11,9,10 注意輸出形式,而不僅僅給出值.,Ex3.10 運(yùn)行結(jié)果,C程序設(shè)計(jì) 第三章 數(shù)據(jù)類型與運(yùn)算符,第4章作業(yè) P88,Ex4.5, 4.8, 4.9, 4.10,C程序設(shè)計(jì) 第四章 順序結(jié)構(gòu)編程,#include #define PI 3.1415926 void main() float r,h,l,s,ss,v,vv; scanf(%f%f, ,Ex4.8 計(jì)算圓周等,C程序設(shè)計(jì) 第四章 順序結(jié)構(gòu)編程,#include void main() float c,f; printf(請(qǐng)輸入華氏溫度 f:n); scanf(%f,

9、 ,Ex4.9 溫度轉(zhuǎn)換,C程序設(shè)計(jì) 第四章 順序結(jié)構(gòu)編程,#include void main() char c1,c2; printf(請(qǐng)輸入兩個(gè)字符:n); c1=getchar(); c2=getchar(); printf(用putchar()輸出n); putchar(c1); putchar(c2); putchar(n); printf(用printf()輸出n); printf(%c %cn,c1,c2); ,Ex4.10 輸出字符,C程序設(shè)計(jì) 第四章 順序結(jié)構(gòu)編程,第5章作業(yè)P111,Ex5.2(其中一個(gè)編程計(jì)算), 5.3, 5.4, 5.5 , 5.6, 5.7 , 5

10、.8, 5.9 , 5.10,C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,Ex5.3 計(jì)算邏輯值(其中一個(gè)編程計(jì)算),C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main() int a=3,b=4,c=5,d; d=(a+bb=c); printf(邏輯表達(dá)式 a+bb=c 的值是: %dn,d); 1) a+bc scanf(%d%d%d, ,1)用if語(yǔ)句: #include void main() int a,b,c,max; scanf(%d%d%d, ,Ex5.5 計(jì)算分段函數(shù),C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main() float x,y;

11、 scanf(%f, ,Ex5.6 百分制轉(zhuǎn)化等級(jí)分,C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,1)用if語(yǔ)句: #include void main() int score;char grade; scanf(%d, ,2)用switch語(yǔ)句: #include void main() int score,n;char grade; scanf(%d, ,Ex5.7 分解五位數(shù),C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main() long n,a,b,c,d,e,length; printf(Enter n (0-99999):); scanf(%ld, ,Ex5.7 分解五

12、位數(shù),C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main() long n,a,b,c,d,e,length; printf(Enter n (0-99999):); scanf(%ld, ,Ex5.8 利潤(rùn)提成,C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main() float i,prize,rest,p1,p2,p3,p4,p5; printf(請(qǐng)輸入利潤(rùn)(萬(wàn)元):); scanf(%f, ,Ex5.8 利潤(rùn)提成(方法2),C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main() float i,prize,rest,p1,p2,

13、p3,p4,p5; int c; printf(請(qǐng)輸入利潤(rùn)(萬(wàn)元):); scanf(%f, ,Ex5.9 排序4個(gè)數(shù),C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main() int a,b,c,d,t; scanf(%d%d%d%d, ,Ex5.10 求地點(diǎn)高度,C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main() int x,y,r; int p1,p2,p3,p4,p; printf(Enter x,y:); scanf(%d,%d, ,Ex 已知銀行整存整取存款不同期限的月息利率分別為:0.315% 期限一年,0.330% 期限二年,月息利率

14、0.345% 期限三年,0.375% 期限五年,0.420% 期限八年,要求輸入存錢的本金和期限,求到期時(shí)能從銀行得到的利息與本金的合計(jì)。,C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main( ) int year; float money,rate,total; /* money:本金 rate:月利率 total:本利合計(jì)*/ printf(Input money and year =?); scanf(%f%d, ,Ex編寫一個(gè)簡(jiǎn)單計(jì)算器程序,輸入格式為:data1 op data2。其中data1和data2是參加運(yùn)算的兩個(gè)數(shù),op為運(yùn)算符,它的取值只能是+、-、*

15、、/。,C程序設(shè)計(jì) 第五章 選擇結(jié)構(gòu)編程,#include void main() int a,b,result,err = 0; char opr; printf(請(qǐng)輸入四則運(yùn)算式:如,5*6n); scanf(%d%c%d, ,第6章作業(yè) P129,Ex6.2, 6.3, 6.5 , 6.6, 6.8, 6.10, 6.14, 6.15,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,Ex6.2 輸入一行字符,統(tǒng)計(jì)出其中的英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include void main() char c; int n1,n2,n3,n4; n1=n2=n3=

16、n4=0; while(c=getchar()!=n) if(c=a ,while(c=getchar()!=n) 按要求處理c中的字符 ,Ex6.3 計(jì)算級(jí)數(shù)s=a+aa+aaa(n個(gè)a)的值。n由鍵盤輸入。如, s=2+22+222+2222+22222 (n=5),C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include void main() int i,a,n,sum,t; printf(請(qǐng)輸入a(0=a=9)和n:n); scanf(%d%d, ,Ex6.5 計(jì)算三個(gè)級(jí)數(shù)之和:(k=1,100)k, (k=1,50)k2 , (k=1,10)1/k,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#i

17、nclude void main() float k,sum=0; k=1; do sum+=k; k+;while(k=100); k=1; while(k=50) sum+=k*k; k+; for(k=1;k=10;k+)sum+=1.0/k; printf(sum=%fn,sum); ,Ex6.6 輸出所有水仙花數(shù):三位數(shù),且各數(shù)位上的數(shù)字的立方和等于自身。,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include void main() int m,a,b,c; printf(100999中的水仙花數(shù)為:n); for(m=100;m=999;m+) a=m/100; b=m%100/10

18、; c=m%10; if(m=a*a*a+b*b*b+c*c*c) printf(%5d,m); ,一個(gè)常用的格式是: for(n=N0;nN1;n+) 驗(yàn)證n是否滿足指定性質(zhì),滿足則輸出此n. ,Ex6.6 輸出水仙花數(shù)(方法2:構(gòu)造法),C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include void main() int m,a,b,c; printf(100999中的水仙花數(shù)為:n); for(a=1;a=9;a+) for(b=0;b=9;b+) for(c=0;c=9;c+) m=a*100+b*10+c; if(m=a*a*a+b*b*b+c*c*c) printf(%5d,m);

19、,Ex6.7 一個(gè)數(shù)恰好等于它的因子和,則稱它為完數(shù): 如,6=1+2+3。求1-1000之間的完數(shù)。輸出格式為: 6 的因子是: 1, 2, 3,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include void main() int m,s,i; for(m=1;m=1000;m+) s=0; for(i=1;im;i+) if(m%i=0) s=s+i; if(m=s) printf(%d的因子是: ,m); for(i=1;im;i+) if(m%i=0) printf( %d,i); printf(b n); ,一個(gè)常用的格式是: for(n=N0;nN1;n+) 驗(yàn)證n是否滿足指定性質(zhì),

20、滿足則輸出此n. ,Ex6.8 求分?jǐn)?shù)序列:2/1,3/2,5/3,8/5/13/8,21/13,的前20項(xiàng)之和。,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include void main() float i,m,n,s,t; m=2.0;n=1.0;s=0; for(i=1;i=20;i+) s=s+m/n; t=m;/保留前項(xiàng)的分子 m=m+n; /后項(xiàng)的分子是前項(xiàng)分子、分母之和 n=t; /后項(xiàng)的分母是前項(xiàng)的分子 printf(sum=%.2fn,s); ,Ex6.9 求球落地經(jīng)過距離:每次反彈時(shí)原有高度的一半。落地10次。,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include void m

21、ain() float s=100.0,h; int i; h=s/2;/球的初始高度 for(i=2;i=10;i+) s=s+2*h;/累加每次上升下落的距離和 h=h/2; printf(“10th: s=%.2fn”,s); / 第10次落地時(shí)經(jīng)過的距離 printf(“10th: h=%.2fn”,h); / 第10次反彈的高度 ,Ex6.10 猴子吃桃: 每天吃一半后,再多吃1個(gè)。第10天僅剩1個(gè)。,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include void main() int n,t; / n:天數(shù), t:桃子個(gè)數(shù) t=1; / 第10天是1個(gè)桃子 for(n=9;n=1;n

22、-) t=2*(t+1); / (t+1)第10天是1個(gè)桃子 printf(第一天有%d個(gè)桃子.n,t); ,Ex6.11 用迭代法求x= .求平方根的迭代公式為: xn+1=1/2(xn+a/xn)要求前后兩次求出的x的差的絕對(duì)值小于10-5。,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include #include void main() float a=24,x,x0; x=a/2; /用算術(shù)平均值代替幾何平均值 do x0=x; /保留前一項(xiàng) x=(x0+a/x0)/2.0; /用迭代公式求下一項(xiàng) while(fabs(x-x0)=1e-5); printf(近似根為:%fn,x); pr

23、intf(精確值為:%fn, sqrt(a); ,Ex6.12 用牛頓迭代法求下面方程在1.5附近的根。 2x3-4x2+3x-6=0 ( 牛頓迭代公式:xn+1=xn+f(xn)/f(xn ) ),C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include #include void main() float x0,x=1.5,f,df; do x0=x; f=2.0*x0*x0*x0-4.0*x0*x0+3.0*x0-6.0; df= 6.0*x0*x0-8.0*x0+3.0; /導(dǎo)數(shù) x=x0-f/df; /牛頓迭代公式 while(fabs(f)=1e-6); printf(近似根為:%.2f

24、n,x0); ,Ex6.13 用二分法求下面方程在(-10,10)附近的根。 2x3-4x2+3x-6=0,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include #include void main() /x1=0,x2=10 近似根=2.00 float x1=-10,x2=10,x,y1,y; y1=2.0*x1*x1*x1-4.0*x1*x1+3.0*x1-6.0; do x=(x1+x2)/2.0; /取中點(diǎn)為近似根 y=2.0*x*x*x-4.0*x*x+3.0*x-6.0; /求其函數(shù)值 if(y*y10)x1=x;y1=y;/取端點(diǎn)函數(shù)值異號(hào)的小區(qū)間 else x2=x; whil

25、e(fabs(y)=0.00001); printf(方程的近似根:%fn,x); ,算法分析: 1)取中點(diǎn) x=(x1+x2)/2 2) 若f(x)* f(x1)0,以x代x1,否則以x代x2.(選取有根區(qū)間) 3)重復(fù) 1)-2)直到 | f(x)|10-6為止。 此時(shí)的x作為函數(shù)y= f(x) 的最終的近似根。,Ex6.13 用二分法求下面方程在(-10,10)附近的根。 2x3-4x2+3x-6=0,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,#include #include #include void main() /x1=0,x2=10 近似根=2.00 float x1,x2,x,y1,

26、y2,y; int n=1; do printf(input x1,x2: n);scanf(%f,%f, ,Ex6.14:寫一個(gè)程序打印下列圖形,#include #define N0 4 /*上三角的排數(shù)*/ #define D0 30 /*第一個(gè)星的位置*/ void main() int i,j,p; p=D0; for(i=1;i=1;i-) /*打印N0-1排(外循環(huán))*/ p=p+1; for(j=1;j=p;j+)printf( ); for(j=1;j=2*i-1;j+)printf(*); printf(n); ,* * * * * *,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,E

27、x6.14:寫一個(gè)程序打印下列圖形,#includeint main(void) int line;/*用戶輸入 需要打印行數(shù)*/ int i;/*行數(shù)循環(huán)計(jì)數(shù)*/ int j;/*空格計(jì)數(shù)*/ int h;/*星號(hào)計(jì)數(shù)*/ printf(Enter the number of line: ); scanf(%d, ,* * *,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,Ex6.15 乒乓球比賽選手匹配:A不和X比,C不和X,Z比。,#include void main() char x,y,z; for(x=A;x%cn,x); printf(Y-%cn,y); printf(Z-%cnn,z);

28、,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,例 (棋盤上的小麥)相傳古代印度國(guó)王舍罕要褒賞他的聰明能干的宰相達(dá)依爾(國(guó)際象棋的發(fā)明者),問他需要什么,達(dá)依爾回答說:“國(guó)王只要在國(guó)際象棋的棋盤第一格放1粒麥子,第二格放2粒麥子,第三格放4粒麥子,以后按此比例每一格加一倍,一直放到第64格(國(guó)際象棋棋盤是8*8=64格),我就感恩不盡,其他我什么也不要了。”,國(guó)王想:“這有多少!還不容易!”,于是讓人扛來(lái)一袋小麥,但是不到一會(huì)就全用完了,再來(lái)一袋很快又沒有了,結(jié)果全印度的糧食全部用完還是不夠。國(guó)王非常奇怪,到底需要多少呢?請(qǐng)你編程計(jì)算需要多少體積的小麥? s=1+21+22+23+263 (1m31.42

29、*108粒),#include void main() double sum=1,t=1,i,v; for(i=1;i64;i+) t=t*2; /利用前項(xiàng)求后項(xiàng) sum+=t; /累加一項(xiàng) v=sum/1.42e8; printf(v=%.2en,v); ,C程序設(shè)計(jì) 第六章 循環(huán)結(jié)構(gòu)編程,例 (換零鈔票)要將100元的大鈔票,換成等值的10元、5元、2元、1元一張的小鈔票,要求每次換成40張小鈔票,每種至少一張。輸出所有換法。(窮舉法),#include void main() int a,b,c,d; printf(10元 5元 2元 1元 n); for(a=1;a0 ,C程序設(shè)計(jì) 第

30、六章 循環(huán)結(jié)構(gòu)編程,例 部分驗(yàn)證歌德巴赫猜想(任何充分大的偶數(shù)可以由兩個(gè)素?cái)?shù)之和表示),將6100中所有偶數(shù)分別用兩個(gè)素?cái)?shù)之和表示。輸出為:6=3+3 8=3+5 10=3+7 12=5+7 100=3+97,一個(gè)式子一排。,#include #include void main() int m,p,q,i, k; printf( 部分驗(yàn)證歌德巴赫猜想: n); for(m=6;m=100;m=m+2) for(p=3;p=m/3;p=p+2) /分解m為p+q: p可以取3m-1,q=m-p k=sqrt(p); /首先驗(yàn)證p是否為素?cái)?shù) for(i=2;i=k;i+) if(p%i=0) b

31、reak; if( i=k+1) /當(dāng)p是素?cái)?shù)時(shí),再驗(yàn)證q=m-p是否為素?cái)?shù) q=m-p; k=sqrt(q); for(i=2;i=k;i+) if(q%i=0)break; if( i=k+1) /當(dāng)q也是素?cái)?shù)時(shí),輸出m的素分解p+q. printf( %d=%d+%dn,m,p,q); break; /跳出p的for循環(huán) /去掉這個(gè)break,可以輸出當(dāng)前偶數(shù)的所有素分解 printf(n); ,問題分析:窮舉法 對(duì)6100中所有偶數(shù)m進(jìn)行分解為p和q(第一循環(huán)), p從3 到 m/3(第二循環(huán)) q=m-p 如果p,q都是素?cái)?shù),輸出其分解, 中斷,考慮下一個(gè)m.直到m值為100為止。,

32、例 鍵盤輸入一個(gè)正整數(shù)m,分解其為素因子,輸出格式如:540=2*2*3*3*3*5,#include void main() int m, i,flag=1; scanf(%d, / 注意到,這樣求得的因子一定是素因子. ,問題分析: 對(duì)m除以2,除以2,(每次除完將剩余因子放到m中,并輸出相應(yīng)因子)一直到除2除不盡, 再對(duì)m除以3,除以3,一直到除3除不盡, 如此下去,一直到m中的剩余因子為1時(shí),就找出了m的所有素因子。 顯然,這是一個(gè)2重循環(huán)。,第7章作業(yè) P152,Ex7.2, 7. 4, 7.3, 7.5 , 7.6, 7.10, 7.11, 7.13, 7.14,7.15,C程序設(shè)

33、計(jì) 第七章 數(shù)組,Ex7.2 第五章的排序方法,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() int t,i,j,k,a10=2,4,6,8,4,7,-4,13,6,9; printf(排序前:n); for(i=0;iai) t=aj;aj=ai;ai=t; printf(排序后:n); for(i=0;i10;i+)printf(%4d ,ai); printf(n); ,Ex7.2 選擇法排序,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() int t,i,j,k,a10=2,4,6,8,4,7,-4,13,6,9; printf(排序前:n);

34、 for(i=0;iaj)k=j; if(k!=i)t=ak;ak=ai;ai=t; printf(排序后:n); for(i=0;i10;i+)printf(%4d ,ai); printf(n); ,注意,這種方法是在一趟比較中找到最小數(shù)的位置,交換一次,將最小數(shù)交換到前面!,Ex7.3 求對(duì)角線之和,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() int i,sum=0,a33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) sum+=aii; printf(sum=%d.n,sum); ,#include void main() int i,j,

35、sum=0,a33=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) for(j=0;j3;i+) if(i=j) sum+=aij; else if(i+j=2) sum+=aij; printf(sum=%d.n,sum); ,例 計(jì)算兩個(gè)長(zhǎng)度為5的一維數(shù)組的點(diǎn)積。,#include void main() int sum=0,i, a5=2,4,6,8,4, b5=3,5,7,9,5; /=計(jì)算數(shù)組點(diǎn)積 for(i=0;i5;i+) sum+=ai*bi; /=輸出點(diǎn)積結(jié)果 printf(a.b=%dn,sum); ,例 求一維數(shù)組中數(shù)據(jù)的最大值及位置。,a0 a1 a

36、2 a9,max=a0 p=0,#include void main() int i,max,p, a10=2,4,6,18,4,67,-14,13,6,9; printf(數(shù)組a:n); for(i=0;imax)max=ai;p=i; printf(max=a%d=%dn,p,max); ,思路: 1 max=a0作為初始最大值 p=0為初始最大值的位置 2 用max依次與每個(gè)ai比較,當(dāng)aimax時(shí),max=ai作為新的最大值,p=i作為新的最大值的位置,遍歷比較所有ai后就找到了所有數(shù)據(jù)的最大值及其位置。,例 在一維數(shù)組中查詢數(shù)據(jù)x。,#include void main() int

37、i,x,a10=2,5,7,1,7,4,3,8,9,7; printf(數(shù)組a:n); for(i=0;i10;i+)printf(%5d,ai); printf(n); printf(請(qǐng)輸入查詢的數(shù)據(jù) x:); scanf(%d, ,算法分析: a0 a1 a2 a9 x 思路: 用x依次與a0 a1 a2等等每個(gè)ai比較,當(dāng)x=ai時(shí),中斷比較,此時(shí)的i就是查詢數(shù)據(jù)x的位置。,例 在一維數(shù)組中刪除數(shù)據(jù)x。,#include void main() int i,k,x,a10=2,5,7,1,7,4,3,8,9,7; printf(刪除前的數(shù)組a:n); for(i=0;i10;i+)pri

38、ntf(%5d,ai); printf(n請(qǐng)輸入要?jiǎng)h除的數(shù)據(jù) x:); scanf(%d, ,算法分析: 1 定位:x的位置. 2 刪除:從數(shù)組中刪除x a0 a1 ai a9 | x,思考: 保序插入的算法. 與刪除類似: 1 定位第一個(gè)不小于x的數(shù)據(jù)的位置i 2 依次將a9ai后移,再將x賦給ai.(是由a9到ai后移?。?思路: 1 定x的位置與前面的“查詢”相同。 2 當(dāng)x=ai,刪除x:是把a(bǔ)i+1a9依次前移,覆蓋ai ,總的數(shù)據(jù)個(gè)數(shù)減1。,Ex7.4 保序插入: a0 a1 ai ai+1 a8 a9,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() int a

39、11=10,12,13,15,23,34,45,67,67,92,i,j,x; printf(插入前的數(shù)組:n); for(i=0;i=x)break; /定位 for(j=9;j=i;j-)aj+1=aj; /插入 ai=x; printf(插入后的數(shù)組:n); for(i=0;i11;i+) printf(%5d,ai); printf(n); ,思考: 保序插入的算法. 與刪除類似: 1 定位第一個(gè)不小于x的數(shù)據(jù)的位置i 2 依次將a9ai后移,再將x賦給ai.(是由a9到ai后移?。?Ex7.5 逆序,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() int a10=

40、1,2,3,4,5,6,7,8,9,10,i,j,t; printf(逆序前的數(shù)組:n); for(i=0;i10;i+)printf(%5d,ai); printf(n); for(i=0,j=9;ij;i+,j-) t=ai;ai=aj;aj=t; printf(逆序后的數(shù)組:n); for(i=0;i10;i+) printf(%5d,ai); printf(n); ,另方法: i=0;j=9; while(ij) t=ai; ai=aj; aj=t; i+;j-; ,a0 a1 a2 a7 a8 a9 i=0 j=9,Ex7.6 楊輝三角,C程序設(shè)計(jì) 第七章 數(shù)組,#include #

41、define N0 10 void main() int aN0N0+1=0,1,i,j; for(i=1;iN0;i+) for(j=1;j=i+1;j+) aij=ai-1j-1+ai-1j; printf(楊輝三角:n); for(i=0; iN0;i+) for(j=1;j=i+1;j+) printf(%5d,aij); printf(n); ,Ex7.6 楊輝三角,C程序設(shè)計(jì) 第七章 數(shù)組,#include #define N0 10 void main() int aN0N0+1=0,1,i,j; for(i=1;iN0;i+) for(j=1;j=i+1;j+) aij=ai-

42、1j-1+ai-1j; printf(楊輝三角:n); for(i=0; iN0;i+) for(j=1;j=i+1;j+) printf(%5d,aij); printf(n); ,Ex7.6 楊輝三角,C程序設(shè)計(jì) 第七章 數(shù)組,#include #define N0 10 int main() int i,j; int aN0N0; for(i = 0; i N0; i+) ai0 = 1; aii = 1; for(i = 2; i N0; i+) for(j = 1; j i; j+) aij = ai - 1j - 1 + ai - 1j; for(i = 0; i 10; i+)

43、for(j = 0; j = i; j+) printf(%5d,aij); printf(n); return(0); ,Ex7.6 楊輝三角 用一維數(shù)組,C程序設(shè)計(jì) 第七章 數(shù)組,編程論壇中的原始程序: - 只有一行 int i=1,j,f99=0,1;main(n)for(scanf(%d,/修改過后的程序 #include #define N0 10 void main() int i=1,j,f99=0,1; for( ; i+=N0 ; puts() ) for( j=i ; -j ; printf(%4d ,fj+=fj-1) ) ; ,/再修改,提高可讀性 #include #

44、define N0 10 void main() int i,j,fN0=0,1; for(i=1; i=N0 ; i+, puts() ) for( j=i ; -j ; printf(%4d ,fj+=fj-1) ) ; /是把數(shù)據(jù)逆序放到數(shù)組中,且求一個(gè)輸出一個(gè) ,Ex7.6 楊輝三角 用滾動(dòng)數(shù)組,C程序設(shè)計(jì) 第七章 數(shù)組,編程論壇中的原始程序: 公式: cij = ci-1j+ci-1j-1滾動(dòng)數(shù)組: ai%2j = a(i-1)%2j + a(i-1)%2(j-1);,/再修改,提高可讀性 ? #include #define N0 10 void main() int i,j,fN

45、0=0,1; for(i=1; i=N0 ; i+, puts() ) for( j=i ; -j ; printf(%4d ,fj+=fj-1) ) ; /是把數(shù)據(jù)逆序放到數(shù)組中,且求一個(gè)輸出一個(gè) ,編程論壇中的原始程序: 一維數(shù)組:一維數(shù)組:a2*Na(i%2)*N+j = a(i-1)%2)*N+j + a(i-1)%2)*N+j-1;,Ex7.10 統(tǒng)計(jì)字符,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() char s80,ch; int i,j,n1,n2,n3,n4,n5; printf(Enter 3 line word:n); n1=n2=n3=n4=n5=

46、0; for(i=0;i=A ,Ex7.10 統(tǒng)計(jì)字符 (用二維數(shù)組),C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() char s380,ch; int i,j,n1,n2,n3,n4,n5; n1=n2=n3=n4=n5=0; printf(Enter 3 line word:n); for(i=0;i=A ,Ex7.12 譯密碼,C程序設(shè)計(jì) 第七章 數(shù)組,#include #define N0 80 void main() char textfN0,codefN0,ch; int i=0; printf(enter text:n);gets(textf); print

47、f(n); printf( text file:n); puts(textf); for(i=0;textfi!=0;i+) ch=textfi; if(A=ch ,Ex7.13 串連接,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() char a80=How are ,b80=you.; int i,j; printf(連接之前:n); printf(串a(chǎn)為:n); puts(a); printf(串b為:n); puts(b); for(i=0;ai;i+); /定位 for(j=0;ai=bj;i+,j+); /復(fù)制 printf(連接之后:n); printf(串a(chǎn)

48、為:n); puts(a); printf(串b為:n); puts(b); ,Ex7.14 串比較,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() char a80,b80; int i,r; printf(請(qǐng)輸入串a(chǎn):n);gets(a); printf(請(qǐng)輸入串b:n); gets(b); for(i=0;ai=bi ,Ex7.15 串復(fù)制,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() char a80,b80; int i; gets(a); gets(b); for(i=0;ai=bi;i+); /復(fù)制 /處理串通常的做法是 :不考慮數(shù)組長(zhǎng)度

49、,只考慮串哪時(shí)候到了串結(jié)束符 puts(a); puts(b); ,#include void main() char a80,b80; int i; gets(a); gets(b); for(i=0;bi!=0;i+)ai=bi; /復(fù)制 ai=0; puts(a); puts(b); ,Ex7.15 串復(fù)制,C程序設(shè)計(jì) 第七章 數(shù)組,#include void main() char a80=How are you.,b80=Best wishes.; int i; printf(復(fù)制之前:n); printf(串a(chǎn)為:n); puts(a); printf(串b為:n); puts(b

50、); for(i=0;ai=bi;i+); /復(fù)制 printf(復(fù)制之后:n); printf(串a(chǎn)為:n); puts(a); printf(串b為:n); puts(b); ,第8章作業(yè) P202,Ex8.1, 8.2, 8.3, 8. 4, 8.5 , 8.6, 8.9, 8.13, 8.16, 8.18,C程序設(shè)計(jì) 第八章 函數(shù),例 寫出C函數(shù)定義的一般格式,并注明各部分的功用。,函數(shù)定義的一般格式 函數(shù)類型 函數(shù)名(形式參數(shù)列表) 說明部分 執(zhí)行部分 return 表達(dá)式; ,1 函數(shù)類型:指出函數(shù)返回值的類型 2 函數(shù)名:這段代碼的名字 3 形式參數(shù):為函數(shù)傳遞計(jì)算時(shí)所需的數(shù)據(jù)

51、。對(duì)于函數(shù)來(lái)說,參數(shù)是已知的數(shù)據(jù) 4 說明部分:為實(shí)現(xiàn)函數(shù)功能,定義的內(nèi)部變量 5 執(zhí)行部分:實(shí)現(xiàn)函數(shù)功能的代碼段 6 return :返回函數(shù)的計(jì)算結(jié)果,例 寫出C函數(shù)調(diào)用的一般格式,并說明C函數(shù)調(diào)用的兩種方式.,C函數(shù)調(diào)用的兩種方式: 1) 函數(shù)表達(dá)式方式: 對(duì)于函數(shù)有返回值的,函數(shù)在調(diào)用時(shí),返回的函數(shù)值 往往是參與運(yùn)算的。 如,m=max(x,y); printf(max=%dn,max(x,y); m=3*max(x,y); 2)函數(shù)語(yǔ)句方式: 對(duì)于函數(shù)沒有返回值的,函數(shù)調(diào)用只能是一個(gè)單獨(dú)的語(yǔ)句。 如,mycat();,函數(shù)的調(diào)用的一般格式: 函數(shù)名(實(shí)參列表) 如,m=max(x,y

52、); 和 mycat();,例 重做ex4.9: 寫一個(gè)C函數(shù),函數(shù)功能是:將華氏溫度轉(zhuǎn)化為攝氏溫度。并寫出主函數(shù)在主函數(shù)中輸入華氏溫度數(shù)據(jù),并輸出轉(zhuǎn)化結(jié)果。(要求利用如下類似的格式。實(shí)現(xiàn)多組數(shù)據(jù)的運(yùn)行調(diào)試 : while( scanf(“%lf”, /-主函數(shù) void main() double f,c; while( scanf(%lf, /輸出結(jié)果 ,例 重做ex5.6: 寫一個(gè)C函數(shù),函數(shù)功能是:將百分制成績(jī)轉(zhuǎn)化為等級(jí)分(分別用if和switch語(yǔ)句來(lái)編寫函數(shù))。并寫出相關(guān)主函數(shù)。,#include /*- 函數(shù)功能: 將百分制成績(jī)轉(zhuǎn)化為等級(jí)分(用if) 入口參數(shù):百分制成績(jī) sco

53、re 返回值:等級(jí)分成績(jī) grade - */ char scoretograde(int score) char grade; if(score=90) grade=A; else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; else grade=E; return grade ; ,/函數(shù)功能: 將百分制成績(jī)轉(zhuǎn)化為等級(jí)分(用switch) char scoretograde1 (int score) char grade; switch(score/10) case 10: case

54、 9: grade=A; break; case 8: grade=B; break; case 7: grade= C; break; case 6: grade= D; break; default: grade=E; return grade ; /-主函數(shù) void main() int score;char c; while( scanf(%d, /輸出結(jié)果 ,例重做ex6.4(課件中講過的例子): 寫一個(gè)C函數(shù),函數(shù)功能是:求級(jí)數(shù)S=1!+2!+n!的部分和,其中n作為函數(shù)參數(shù)。并寫出相關(guān)主函數(shù)。,#include /*- 函數(shù)功能: 求級(jí)數(shù)S=1!+2!+n!的部分和 入口參數(shù):

55、n 返回值:級(jí)數(shù)S=1!+2!+n!的部分和的值 - */ double jiechengjishu (int n) double s=0,t=1; int i; for(i=1;i=n;i+) t=t*i; s+=t; return s ; /-主函數(shù) void main() int n; while( scanf(%d, /輸出結(jié)果 ,例 編寫C函數(shù)求1+2+3+n的值,n作為函數(shù)的參數(shù)。在主函數(shù)中輸入n并調(diào)用函數(shù)計(jì)算1+2+3+n的值,最終輸出計(jì)算結(jié)果。,#include /*- 函數(shù)功能:求1+2+3+n的值 入口參數(shù): int n 返回值:所求和式的值 - */ int aad(in

56、t n) int sum=0,i; for(i=1;i=n;i+) sum+=i; return sum; /-主函數(shù) void main() int n,sum; while( scanf(%d, /輸出結(jié)果 ,Ex8.1 求最大公約數(shù),C程序設(shè)計(jì) 第八章 函數(shù),#include /*= 函數(shù)功能:求m,n的最大公約數(shù) 入口參數(shù): m,n 返回值: m,n的最大公約數(shù) =*/ int gy( int m,int n) int r; if(nm)r=m;m=n;n=r; while(n!=0)r=m%n;m=n;n=r; return m; /*= 函數(shù)功能:求m,n的最小公倍數(shù) 入口參數(shù): m,n 返回值: m,n的最小公倍數(shù) =*/ int gb( int m,int n) return m*n/gy(m,n); ,/=主函數(shù) void main() int m,n; s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論