C语言程序设计-函数库.ppt
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.最大值函数,max
int max(int a[],int n) { int x, i; x=a[0]; for (i=0;i<n;i++) if (x<a[i]) x=a[i]; return x; }
计算并返回a 数组中n个整 数的最大值。 熟练
4.条件输出函数,prt_p
void prt_p(int a[],int n) 输出数组中的 所有素数。 { 掌握 int i; for (i=0;i<n;i++) if (isprime(a[i])) printf("%d ", a[i]); 调用模板 printf("\n"); int a[10]; } 有"%d "或"%d\t"或"8d" …… 等不同格式 prt_p(a,10);
每个程序都应该具备,不再重复 被调用子函数放在主函数之前 不再重复说明 代码见前
主函数一般放在最后,自底向上 整数n定义 输入整数n 调用并判断n是否素数 是则输出Yes 否则 输出No
练习2:将4到100的所有偶数分解为两个 素数之和
main() #include等略 { int n, i; for ( n=4; n<=100; n+=2 ) n分解i与n-i和 for ( i=2; i<n; i++ ) if ( isprime(i) && isprime(n-i) ) { i与n-i均为素数 printf("%2d=%2d+%2d\t",n,i,n-i); break; 只需一个公式 } }
main() { int a[100], n; n=sca_0(a); prt_m(a,n,5); }
合理假设: 设n不超过100 定义a数组的元素 个数为该假设的 上限 验证n是否超界的 代码可以省略
8.累加和函数,sum
long sum(int a[],int n) 计算a数组中 n个整数的累 { 加和并返回。 long s=0; 熟练 int i; for (i=0;i<n;i++) s += a[i]; 调用模板 return s; int a[10];long s; } …… s=sum(a,10);
练习1,2 练习3 练习4 练习3a 练习5 练习6 练习7 练习8 练习9
10.int min(int a[],int n);
1.素数函数,isprime
判断整数n是否为 int isprime(int n) 素数,是则返回1, { 否则返回0。 int i; 熟练 if (n<2) return 0; for (i=2;i<n;i++) if (n%i==0) return 0; 调用模板 return 1; int n;…… } if (isprime(n))
练习8
输入n和n个整数,计算并输出累加和和平均 值(保留一位小数)。 如输入: 5 20 10 40 50 30 则输出: Sum=150 Average=30.0
程序8
main() { int a[100], n; long s; n=sca_n(a); s=sum(a,n); printf("Sum=%ld\n",s); printf("Average=%.1f\n",(float)s/n); }
2.输入函数,sca
void sca(int a[],int n) 从键盘上输 入n个整数 { 到数组a中 熟练 int i; for (i=0;i<n;i++) scanf("%d",&a[i]); } 调用模板
int a[10]; sca(a,10);
练习3
输入10个整数,输出其中素数。 如输入: 2 6 9 91 101 81 71 61 51 41 则输出: 2 101 71 61 41
程序3:输入10个整数,输出其中素数。
main() { int a[10], i; sca(a,10); for (i=0;i<10;i++) if (isprime(a[i])) printf("%d ",a[i]); printf("\n"); }
函数列表(1)
1. 2. 3. 4. 5. 6. 7. 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[]); 输入n个 int sca_0(int a[]); 输入至0 累加和 8. long sum(int a[],int n); 最大值 9. int max(int a[],int n); 最小值
按每行m个数
int a[10];… prt_mபைடு நூலகம்a,10,?);
练习5:输入10数,按每行3数输出
main() { int a[10]; sca(a,10); prt_m(a,10,3); }
6.输入函数,sca_n
从键盘上输入整 int sca_n(int a[]) 数n,再输入n个 { 整数到数组a中, int n, i; 然后返回n。 scanf("%d",&n); 掌握 for (i=0;i<n;i++) scanf("%d",&a[i]); 调用模板 return n; int a[100],n; } n=sca_n(a);
程序3a:输入10个整数,输出其中素数。
main() { int a[10]; sca(a,10); prt_p(a,10); }
5.按行输出函数,prt_m
void prt_m(int a[],int n,int m) 的形式输出数组 { 中的所有数。 掌握 int i; 每行最后一数 for (i=0;i<n;i++) 或最后一数 if (i%m==m-1||i==n-1) 输出后换行 printf("%d\n",a[i]); 否则 else 输出后跳格 printf("%d\t",a[i]); 调用模板 }
程序9
main() { int a[10], mx, mn; sca(a,10); mx=max(a,10); mn=min(a,10); printf("Max=%d, Min=%d\n",mx,mn); }
函数列表(2)
11.int find(int a[],int n,int x) 顺序查找 12.int count(int a[],int n,int x); 统计次数 13.void swap(int *p,int *q); 交换数据 14.void sort(int a[],int n); 冒泡排序 15.int select_a(int b[],int a[],int n); 筛选 16.int select_p(int b[],int a[],int n,int x); 条件 17.void copy(int b[],int a[],int n); 复制 18.void shift(int b[],int a[],int n,int m); 移位 19.int issym(int a[],int n); 对称 20.void reverse(int a[],int n); 逆序
练习4
先输入10个整数,再输出这10个整数。 如输入:(10个整数可分多行输入) 2 6 9 91 101 81 71 61 51 41 则输出:(10个整数在一行内输出) 2 6 9 91 101 81 71 61 51 41
程序4
main() { int a[10]; sca(a,10); prt(a,10); }
n=sca_0(a);
练习7
输入连续一批整数,直至输入0时终止,按每行5 数形式输出0之前的所有整数。 如输入:(所有数据可分多行输入) 7 2 6 9 91 101 81 71 0 则输出:(8个整数在分2行输出) 7 2 6 9 91 101 81 71
程序7
计算并返回a 数组中n个整 数的最小值。 熟练
调用模板
int a[10],x; …… x=min(a,10);
练习9
输入10个整数,输出10个整数的最大值和最小 值 如输入: 6 9 91 101 81 71 2 61 51 41 则输出: Max=101, Min=2
3.输出函数,prt
void prt(int a[],int n) 输出a数组的 n个整数,并 { 换行。 int i; 熟练 for (i=0;i<n;i++) printf("%d ", a[i]); printf("\n"); 调用模板 } int a[10]; 有"%d "或"%d\t"或"8d" …… 等不同格式 prt(a,10);
练习1
输入整数n,如果n是素数,则输出Yes, 否则输出No。 如输入:5 则输出:Yes 如输入:6 则输出:No
程序1:输入整数n,若n为素数则输出Yes, 否则输出No
#include <stdio.h> int isprime(int n) { …… } main() { int n; scanf("%d",&n); if (isprime(n)) printf("Yes\n"); else printf("No\n"); }
合理假设: 设n不超过100 定义a数组的元素 个数为该假设的 上限 验证n是否超界的 代码可以省略
7.输入函数,sca_0
int sca_0(int a[]) 从键盘上输入 整数到数组a { 中,直到输入 int n; 0时终止,返 for (n=0;1;n++) 回0之前整数 { 个数。 scanf("%d",&a[n]); 掌握 if (a[n]==0) break; } 调用模板 return n; int a[100],n; }
《程序设计基础(C语言)》
学生函数库
2010.1.15 初稿 2010.1.20二稿
函数名与函数功能
isprime:素数判断 swap:交换 sca:输入 prt:输出 sum:累加和 max:最大值 min:最小值 find:查找 count:计数 sort:排序 select:筛选/选择 copy:复制 shift:移位 issym:对称判断 reverse:逆序 split:分解 merge:合并
练习6
输入n和n个整数,输出n个整数中的素数。 如输入:(n和n个整数可分多行输入) 7 2 6 9 91 101 81 71 则输出:(在一行内输出) 2 101 71
程序6
main() { int a[100], n; n=sca_n(a); prt_p(a,n); }
调用模板
int a[10],x; …… x=max(a,10);
10.最小值函数,min
int min(int a[],int n) { int x, i; x=a[0]; for (i=0;i<n;i++) if (x>a[i]) x=a[i]; return x; }
学生学习、编程、考试时常用的函数库
函数名的前缀与后缀
前缀用于说明类型 正常:int 前缀“l”:long 前缀“f”:float 前缀“p”:指针 前缀“str_”:字符串 前缀“strs_”:多字 串 前缀“stu_”:学生 后缀用于说明额外条件 后缀“_p”:素数 后缀“_a”:大于 后缀“_ae”:大于等于 后缀“_b”:小于 后缀“_be”:小于等于 后缀“_n”:n个 后缀“_0”:直到0