版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、程序設(shè)計基礎(chǔ)(C語言),學(xué)生函數(shù)庫 2010.1.15 初稿 2010.1.20二稿,函數(shù)名與函數(shù)功能,isprime:素數(shù)判斷 swap:交換 sca:輸入 prt:輸出 sum:累加和 max:最大值 min:最小值 find:查找,count:計數(shù) sort:排序 select:篩選/選擇 copy:復(fù)制 shift:移位 issym:對稱判斷 reverse:逆序 split:分解 merge:合并,學(xué)生學(xué)習(xí)、編程、考試時常用的函數(shù)庫,函數(shù)名的前綴與后綴,前綴用于說明類型 正常:int 前綴“l(fā)”:long 前綴“f”:float 前綴“p”:指針 前綴“str_”:字符串 前綴“st
2、rs_”:多字串 前綴“stu_”:學(xué)生,后綴用于說明額外條件 后綴“_p”:素數(shù) 后綴“_a”:大于 后綴“_ae”:大于等于 后綴“_b”:小于 后綴“_be”:小于等于 后綴“_n”:n個 后綴“_0”:直到0,函數(shù)列表(1),int isprime(int n); void sca(int a,int n); void prt(int a,int n); void prt_p(int a,int n); void prt_m(int a,int n,int m); int sca_n(int a); int sca_0(int a); long sum(int a,int n); in
3、t max(int a,int n); int min(int a,int n);,判斷素數(shù) 輸入函數(shù) 輸出函數(shù) 條件輸出 按行輸出 輸入n個 輸入至0 累加和 最大值 最小值,練習(xí)1,2 練習(xí)3 練習(xí)4 練習(xí)3a 練習(xí)5 練習(xí)6 練習(xí)7 練習(xí)8 練習(xí)9,1.素數(shù)函數(shù),isprime,int isprime(int n) int i; if (n2) return 0; for (i=2;in;i+) if (n%i=0) return 0; return 1; ,判斷整數(shù)n是否為素數(shù),是則返回1,否則返回0。 熟練,調(diào)用模板 int n; if (isprime(n),練習(xí)1,輸入整數(shù)n,如
4、果n是素數(shù),則輸出Yes,否則輸出No。 如輸入:5 則輸出:Yes 如輸入:6 則輸出:No,程序1:輸入整數(shù)n,若n為素數(shù)則輸出Yes,否則輸出No,#include int isprime(int n) main() int n; scanf(%d, ,每個程序都應(yīng)該具備,不再重復(fù) 被調(diào)用子函數(shù)放在主函數(shù)之前 不再重復(fù)說明 代碼見前 主函數(shù)一般放在最后,自底向上 整數(shù)n定義 輸入整數(shù)n 調(diào)用并判斷n是否素數(shù) 是則輸出Yes 否則 輸出No,練習(xí)2:將4到100的所有偶數(shù)分解為兩個素數(shù)之和,main() int n, i; for ( n=4; n=100; n+=2 ) for ( i=
5、2; in; i+ ) if ( isprime(i) ,#include等略 n分解i與n-i和 i與n-i均為素數(shù) 只需一個公式,2.輸入函數(shù),sca,void sca(int a,int n) int i; for (i=0;in;i+) scanf(%d, ,從鍵盤上輸入n個整數(shù)到數(shù)組a中 熟練,調(diào)用模板 int a10; sca(a,10);,練習(xí)3,輸入10個整數(shù),輸出其中素數(shù)。 如輸入: 2 6 9 91 101 81 71 61 51 41 則輸出: 2 101 71 61 41,程序3:輸入10個整數(shù),輸出其中素數(shù)。,main() int a10, i; sca(a,10);
6、 for (i=0;i10;i+) if (isprime(ai) printf(%d ,ai); printf(n); ,3.輸出函數(shù),prt,void prt(int a,int n) int i; for (i=0;in;i+) printf(%d , ai); printf(n); ,輸出a數(shù)組的n個整數(shù),并換行。 熟練,調(diào)用模板 int a10; prt(a,10);,有%d 或%dt或8d 等不同格式,練習(xí)4,先輸入10個整數(shù),再輸出這10個整數(shù)。 如輸入:(10個整數(shù)可分多行輸入) 2 6 9 91 101 81 71 61 51 41 則輸出:(10個整數(shù)在一行內(nèi)輸出) 2 6
7、 9 91 101 81 71 61 51 41,程序4,main() int a10; sca(a,10); prt(a,10); ,4.條件輸出函數(shù),prt_p,void prt_p(int a,int n) int i; for (i=0;in;i+) if (isprime(ai) printf(%d , ai); printf(n); ,輸出數(shù)組中的所有素數(shù)。 掌握,調(diào)用模板 int a10; prt_p(a,10);,有%d 或%dt或8d 等不同格式,程序3a:輸入10個整數(shù),輸出其中素數(shù)。,main() int a10; sca(a,10); prt_p(a,10); ,調(diào)用模
8、板 int a10; prt_m(a,10,?);,5.按行輸出函數(shù),prt_m,void prt_m(int a,int n,int m) int i; for (i=0;in;i+) if (i%m=m-1|i=n-1) printf(%dn,ai); else printf(%dt,ai); ,按每行m個數(shù)的形式輸出數(shù)組中的所有數(shù)。 掌握 每行最后一數(shù) 或最后一數(shù) 輸出后換行 否則 輸出后跳格,練習(xí)5:輸入10數(shù),按每行3數(shù)輸出,main() int a10; sca(a,10); prt_m(a,10,3); ,6.輸入函數(shù),sca_n,int sca_n(int a) int n,
9、i; scanf(%d, ,從鍵盤上輸入整數(shù)n,再輸入n個整數(shù)到數(shù)組a中,然后返回n。 掌握,調(diào)用模板 int a100,n; n=sca_n(a);,練習(xí)6,輸入n和n個整數(shù),輸出n個整數(shù)中的素數(shù)。 如輸入:(n和n個整數(shù)可分多行輸入) 7 2 6 9 91 101 81 71 則輸出:(在一行內(nèi)輸出) 2 101 71,程序6,main() int a100, n; n=sca_n(a); prt_p(a,n); ,合理假設(shè): 設(shè)n不超過100 定義a數(shù)組的元素個數(shù)為該假設(shè)的上限 驗證n是否超界的代碼可以省略,7.輸入函數(shù),sca_0,int sca_0(int a) int n; for
10、 (n=0;1;n+) scanf(%d, ,從鍵盤上輸入整數(shù)到數(shù)組a中,直到輸入0時終止,返回0之前整數(shù)個數(shù)。 掌握,調(diào)用模板 int a100,n; n=sca_0(a);,練習(xí)7,輸入連續(xù)一批整數(shù),直至輸入0時終止,按每行5數(shù)形式輸出0之前的所有整數(shù)。 如輸入:(所有數(shù)據(jù)可分多行輸入) 7 2 6 9 91 101 81 71 0 則輸出:(8個整數(shù)在分2行輸出) 7 2 6 9 91 101 81 71,程序7,main() int a100, n; n=sca_0(a); prt_m(a,n,5); ,合理假設(shè): 設(shè)n不超過100 定義a數(shù)組的元素個數(shù)為該假設(shè)的上限 驗證n是否超界的
11、代碼可以省略,8.累加和函數(shù),sum,long sum(int a,int n) long s=0; int i; for (i=0;in;i+) s += ai; return s; ,計算a數(shù)組中n個整數(shù)的累加和并返回。 熟練,調(diào)用模板 int a10;long s; s=sum(a,10);,練習(xí)8,輸入n和n個整數(shù),計算并輸出累加和和平均值(保留一位小數(shù))。 如輸入: 5 20 10 40 50 30 則輸出: Sum=150 Average=30.0,程序8,main() int a100, n; long s; n=sca_n(a); s=sum(a,n); printf(Sum=
12、%ldn,s); printf(Average=%.1fn,(float)s/n); ,9.最大值函數(shù),max,int max(int a,int n) int x, i; x=a0; for (i=0;in;i+) if (xai) x=ai; return x; ,計算并返回a數(shù)組中n個整數(shù)的最大值。 熟練,調(diào)用模板 int a10,x; x=max(a,10);,10.最小值函數(shù),min,int min(int a,int n) int x, i; x=a0; for (i=0;iai) x=ai; return x; ,計算并返回a數(shù)組中n個整數(shù)的最小值。 熟練,調(diào)用模板 int a1
13、0,x; x=min(a,10);,練習(xí)9,輸入10個整數(shù),輸出10個整數(shù)的最大值和最小值 如輸入: 6 9 91 101 81 71 2 61 51 41 則輸出: Max=101, Min=2,程序9,main() int a10, mx, mn; sca(a,10); mx=max(a,10); mn=min(a,10); printf(Max=%d, Min=%dn,mx,mn); ,函數(shù)列表(2),int find(int a,int n,int x) int count(int a,int n,int x); void swap(int *p,int *q); void sort(
14、int a,int n); int select_a(int b,int a,int n); int select_p(int b,int a,int n,int x); void copy(int b,int a,int n); void shift(int b,int a,int n,int m); int issym(int a,int n); void reverse(int a,int n);,順序查找 統(tǒng)計次數(shù) 交換數(shù)據(jù) 冒泡排序 篩選 條件 復(fù)制 移位 對稱 逆序,練習(xí)10 練習(xí)11,12 練習(xí)13 練習(xí)14 練習(xí)15,16 練習(xí)17 練習(xí)18 練習(xí)19 練習(xí)20 練習(xí)21,11
15、.順序查找函數(shù),find,int find(int a,int n,int x) int i; for (i=0;in;i+) if (ai=x) return i; return -1; ,查找n個整數(shù)的數(shù)組a中值為x的元素并返回其下標(biāo),如果沒找到則返回-1。 熟練,調(diào)用模板 int a10,x,k; k=find(a,10,x);,練習(xí)10:輸入10個整數(shù),輸出最大值及其下標(biāo),main() int a10, mx, k; sca(a,10); mx=max(a,10); k=find(a,10,mx); printf(Max: a%d=%dn,k,mx); ,12.統(tǒng)計函數(shù),count,i
16、nt count(int a,int n,int x) int ct=0, i; for (i=0;in;i+) if (ai=x) ct+; return ct; ,統(tǒng)計n個整數(shù)的數(shù)組a中值為x的元素并返回其個數(shù)。 熟練,調(diào)用模板 int a10,x,m; m=count(a,10,x);,練習(xí)11:輸入10個整數(shù),輸出其中只出現(xiàn)一次的數(shù),main() int a10, i; sca(a,10); for (i=0;i10;i+) if (count(a,10,ai)=1) printf(%d ,ai); printf(n); ,輸入 遍歷 統(tǒng)計ai 出現(xiàn)次數(shù) 并輸出,練習(xí)12:輸入10個整
17、數(shù),輸出其中正好出現(xiàn)2次的數(shù)(僅第一次出現(xiàn)時輸出),main() int a10, i; sca(a,10); for (i=0;i10;i+) if (count(a,i,ai)=0 ,輸入 遍歷 之前次數(shù)=0 本身與之后出現(xiàn)2次 輸出,13.交換函數(shù),swap,void swap(int *p,int *q) int t; t=*p; *p=*q; *q=t; ,交換指針p和q所指變量的值。 可用于重寫reverse 與sort函數(shù) 掌握,調(diào)用模板 int x,y; swap(,練習(xí)13:輸入整數(shù)x和y,交換順序后輸出,main() int x, y; scanf(%d%d, ,14.冒泡
18、排序函數(shù),sort,void sort(int a,int n) int i, j, t; for (i=0;iaj+1) t=aj; aj=aj+1; aj+1=t; ,對a數(shù)組的n個整數(shù)按從小到大順序排序。 熟練 swap(,調(diào)用模板 int a10; sort(a,10);,使用swap函數(shù)的sort,void sort(int a,int n) int i, j; for (i=0;iaj+1) swap( ,對a數(shù)組的n個整數(shù)按從小到大順序排序。 掌握,調(diào)用模板 int a10; sort(a,10);,練習(xí)14:輸入10個整數(shù),從小到大排序后輸出,main() int a10; s
19、ca(a,10); sort(a,10); prt(a,10); ,15.篩選函數(shù),select_a,int select_a(int b,int a,int n,int x) int i, k=0; for (i=0;ix) bk+=ai; return k; ,將a數(shù)組n個整數(shù)中值大于x的元素復(fù)制到數(shù)組b中,并返回滿足條件的個數(shù)。 熟練,調(diào)用模板 int a10,b10,k; k=select_a(b,a,10,?);,練習(xí)15:輸入n和n個整數(shù),選擇其中正數(shù)部分,排序后輸出,main() int a100, b100, n, m; n=sca_n(a); m=select_a(b,a,n
20、,0); sort(b,m); prt(b,m); ,練習(xí)16:091機(jī)試,1-B-3,程序功能:輸入10個整數(shù)(存貯在一維數(shù)組a中),按示例格式計算并輸出以下結(jié)果。 (1)輸出最大值及其所在下標(biāo)(輸入的第一個整數(shù)對應(yīng)下標(biāo)0); (2)計算并輸出平均值(浮點數(shù),輸出時保留1位小數(shù)); (3)輸出10個整數(shù)中大于平均值并且最接近平均值的數(shù); (4)按從小到大的順序排序并輸出這10個整數(shù)。 如輸入: 50 60 70 80 90 95 85 75 65 55 則輸出: Max=a5=95 Average=72.5 X=75 Sort: 50 55 60 65 70 75 80 85 90 95 示
21、例說明:輸入10個整數(shù)放在a數(shù)組中,最大值95對應(yīng)的下標(biāo)為5,平均值為72.5,大于平均值且最接近平均值的數(shù)為75。,main() int a10, b10, k, x, n, m; long s; float ave; sca(a,10); x=max(a,10); k=find(a,10,x); s=sum(a,10); ave=(float)s/10; n=select_a(b,a,10,ave); m=min(b,n); sort(a,10); printf(Max=a%d=%dn,k,x); printf(Average=%.1fn,ave); printf(X=%dnSort: ,
22、m); prt(a,10); ,16.條件篩選,select_p,int select_p(int b,int a,int n) int i, k=0; for (i=0;in;i+) if (isprime(ai) bk+=ai; return k; ,將a數(shù)組n個整數(shù)中的素數(shù)元素復(fù)制到數(shù)組b中,并返回滿足條件的個數(shù)。 掌握,調(diào)用模板 int a10,b10,k; k=select_a(b,a,10);,練習(xí)17:輸入10個整數(shù),按每行3數(shù)形式輸出其中素數(shù),main() int a10, b10, k; sca(a,10); k=select_p(b,a,10); prt_m(b,k,3);
23、 ,輸入 選擇素數(shù) 輸出素數(shù),17.復(fù)制函數(shù),copy,void copy(int b,int a,int n) int i; for (i=0;in;i+) bi=ai; ,a數(shù)組的n個整數(shù)復(fù)制到b數(shù)組中。 熟練,調(diào)用模板 int a10,b10; copy(b,a,10);,練習(xí)18,輸入9個整數(shù),輸出大小居中的整數(shù)及其在原序中的下標(biāo)位置。 如輸入: 66 77 88 99 100 90 80 70 60 則輸出: Midd: a6=80,程序18,main() int a9,b9,k; sca(a,9); copy(b,a,9); sort(b,9); k=find(a,9,b4); p
24、rintf(Midd: a%d=%dn, k, ak); ,輸入 復(fù)制 排序 查找 輸出,18.移位函數(shù),shift,void shift(int b,int a,int n,int m) int i; for (i=0;in;i+) b(i+m+n)%n=ai; ,a數(shù)組的n個整數(shù)右移m個位置后復(fù)制到數(shù)組b中。m為負(fù)表示左移。 掌握,公式分析,調(diào)用模板 int a10,b10; shift(b,a,10,1);,練習(xí)19:輸入整數(shù)m和10個整數(shù),右移m個位置后輸出,m為負(fù)表示左移,main() int a10,b10,m; scanf(%d, ,19.對稱函數(shù),issym,int issym
25、(int a,int n) int i, j; for (i=0,j=n-1;ij;i+,j-) if (ai!=aj) return 0; return 1; ,判斷a數(shù)組n個整數(shù)是否對稱排列,是返回1,否則返回0。 掌握,調(diào)用模板 int a10; if (issym(a,10),練習(xí)20:輸入n和n個整數(shù),如果n個整數(shù)首尾對稱,則輸出Yes,否則輸出No,main() int a100, n; n=sca_n(a); if (issym(a,n) printf(Yesn); else printf(Non); ,20.逆序函數(shù),reverse,void reverse(int a,int
26、 n) int i, j, t; for (i=0,j=n-1;ij;i+,j-) t=ai; ai=aj; aj=t; ,將a數(shù)組n個整數(shù)逆序排列。 掌握,調(diào)用模板 int a10; reverse(a,10);,使用swap函數(shù)實現(xiàn)逆序,reverse,void reverse(int a,int n) int i, j; for (i=0,j=n-1;ij;i+,j-) swap( ,將a數(shù)組n個整數(shù)逆序排列。 掌握,調(diào)用模板 int a10; reverse(a,10);,練習(xí)21:輸入10個整數(shù),從小到大排序輸出,再從大到小排序輸出,main() int a10; sca(a,10)
27、; sort(a,10); prt(a,10); reverse(a,10); prt(a,10); ,函數(shù)列表(3),int split(int a,long d,int m); 進(jìn)制分解,練習(xí)22 long merge(int a,int n,int m); 進(jìn)制合并,練習(xí)23,24,25,21.進(jìn)制分解函數(shù),split,int split(int a,long d,int m) int i; for (i=0;1;i+) ai=d%m; d=d/m; if (d=0) return i+1; ,將長整數(shù)d拆分n位m進(jìn)制,數(shù)值存于a數(shù)組中,長度返回,a0存最低位 掌握,調(diào)用模板 int a
28、10; split(a,?,10);,練習(xí)22:輸入一個長整數(shù),從低到高逐位輸出該數(shù)的各個位數(shù),main() long d; int a10,n; scanf(%d, ,22.進(jìn)制合并函數(shù),merge,long merge(int a,int n,int m) long s=0, k=1; int i; for (i=0;in;i+) s+=k*ai; k*=m; return s; ,將m位n進(jìn)制數(shù)轉(zhuǎn)換為長整數(shù),a0對應(yīng)最低位 掌握,調(diào)用模板 int a10,n; s=merge(a,n,10);,練習(xí)23,輸入一個整數(shù),輸出該整數(shù)各個倍數(shù)重新組成構(gòu)成的最大值與最小值 如輸入: 123987
29、 則輸出: Max: 987321 Min: 123789,程序23,main() long d, mx, mn; int a10, n; scanf(%ld, ,輸入 按10進(jìn)制分解 從小到大排序 合并成最大值 逆序 合并成最小值 輸出,練習(xí)24:輸入10進(jìn)制長整數(shù),轉(zhuǎn)換為7進(jìn)制數(shù)并輸出,main() long d; int a10,n; scanf(%ld, ,或 d=merge(a,n,10); printf(%ldn,d);,練習(xí)25:輸入7進(jìn)制整數(shù),轉(zhuǎn)換為10進(jìn)制數(shù)并輸出,main() long d; int a10,n; scanf(%ld, ,模擬練習(xí)(1),輸入一批整數(shù)直至輸入
30、0為止,輸出0之前的所有素數(shù)并計算其累加和與平均值。 如輸入: 2 6 61 71 81 91 101 0 則輸出: 2 61 71 101 Sum=235 Averge=58.8,參考程序/1,main() int a100,b100,n,k; long s; n=sca_0(a); k=select_p(b,a,n); prt(b,k); s=sum(b,k); printf(Sum=%ldn,s); printf(Average=%.1fn,(float)s/k); ,#include int isprime(int n) int i; if (n2) return 0; for (i=
31、2;in;i+) if (n%i=0) return 0; return 1; int sca_0(int a) int n; for (n=0;1;n+) scanf(%d, ,模擬練習(xí)(2),輸入n和n個整數(shù),按從小到大順序輸出其中素數(shù),同時刪除其中重復(fù)的素數(shù)。 如輸入: 10 91 61 41 31 21 41 101 61 7 2 則輸出: 2 7 31 41 61 101,參考程序/2,main() int a100,b100,n,k,i; n=sca_n(a); k=select_p(b,a,n); sort(b,k); for (i=0;ik;i+) if (count(b,i,
32、bi)=0) printf(%d ,bi); printf(n); ,#include int isprime(int n) int i; if (naj+1) t=aj; aj=aj+1; aj+1=t; int count(int a,int n,int x) int ct=0, i; for (i=0;in;i+) if (ai=x) ct+; return ct; main() int a100,b100,n,k,i; n=sca_n(a); k=select_p(b,a,n); sort(b,k); for (i=0;ik;i+) if (count(b,i,bi)=0) printf(%d ,bi); printf(n); ,模擬練習(xí)(3),輸入n和n個成績,按成績高低輸出這些成績及其名次 如輸入: 5 90 99 88 99 90 則輸出: 1:99 1:99 3:90 3:90 5:88,參考程序/3,void sort_b(int a,int n) int i, j, t; for (i=0;in-1;i+) for (j=0;jn-1-i;j+) if (a
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初級會計經(jīng)濟(jì)法基礎(chǔ)-初級會計《經(jīng)濟(jì)法基礎(chǔ)》模擬試卷335
- 【醫(yī)學(xué)課件】加強(qiáng)防范醫(yī)療事故(83p)
- 二零二五年度會展中心物業(yè)保安活動策劃與執(zhí)行合同
- 二零二五版生物技術(shù)產(chǎn)業(yè)投資與合作合同3篇
- 二零二五版?zhèn)€人住宅抵押貸款抵押物處置合同樣本2篇
- 二零二五年度個人生態(tài)旅游項目承包協(xié)議3篇
- 二零二五年度商業(yè)空間裝修設(shè)計與施工合同模板3篇
- 二零二五年度個人房產(chǎn)抵押貸款合同糾紛解決條款
- 二零二五版商務(wù)辦公區(qū)物業(yè)管理與設(shè)施維護(hù)合約3篇
- 2025年度個人教育貸款擔(dān)保合同書
- 連鎖商務(wù)酒店述職報告
- 石油化工企業(yè)環(huán)境保護(hù)管理制度預(yù)案
- 2024年甘肅省高考?xì)v史試卷(含答案解析)
- 2024年山東省煙臺市初中學(xué)業(yè)水平考試地理試卷含答案
- 《實踐論》(原文)毛澤東
- 抗腫瘤治療所致惡心嘔吐護(hù)理
- 第三單元名著導(dǎo)讀《紅星照耀中國》(公開課一等獎創(chuàng)新教學(xué)設(shè)計+說課稿)
- 壓力鋼管制造安裝及驗收規(guī)范
- 2024-2030年中國14-丁二醇(BDO)行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- YYT 0681.11-2014 無菌醫(yī)療器械包裝試驗方法 第11部分:目力檢測醫(yī)用包裝密封完整性
- 遼寧省沈陽市第七中學(xué)2023-2024學(xué)年七年級下學(xué)期期末數(shù)學(xué)試題
評論
0/150
提交評論