C语言基本算法(简单级别)(3)
C语言常用算法
{a=b;b=r;r=a%b;} printf(\}
[法二:用do…while循环时,最大公约数存放于a中]
main() {int a,b,r;
do scanf(\
while(a<=0||b<=0); /*确保a和b为正整数*/ do {r=a%b;a=b;b=r; }while(r!=0); printf(\}
【引申】可以利用最大公约数求最小公倍数。提示:两个正整数a和b的最小公倍数=a×b/最大公约数。 例2、任意读入两个正整数,求出它们的最小公倍数。 [法一:利用最大公约数求最小公倍数]
main()
{int a,b,r,x,y;
do scanf(\
while(a<=0||b<=0); /*确保a和b为正整数*/ x=a; y=b; /*保留a、b原来的值*/ r=a%b;
while(r!=0) {a=b;b=r;r=a%b;} printf(\}
[法二:若其中一数的最小倍数也是另一数的倍数,该最小倍数即为所求]
main() {int a,b,r,i;
do scanf(\
while(a<=0||b<=0); /*确保a和b为正整数*/ i=1;
while(a*i%b!=0) i++; printf(\} 7.求最值
即求若干数据中的最大值(或最小值)。算法要领是:首先将若干数据存放于数组中,通常假设第一个元素即为最大值(或最小值),赋值给最终存放最大值(或最小值)的max(或min)变量中,然后将该量max(或min)的值与数组其余每一个元素进行比较,一旦比该量还大(或小),则将此元素的值赋给max(或min)??所有数如此比较完毕,即可求得最大值(或最小值)。 例1、任意读入10个数,输出其中的最大值与最小值。
#define N 10 main()
C语言常用算法
{int a[N],i,max,min;
for(i=0;i if(a[i]>max) max=a[i]; else if(a[i] printf(\} 8.判断素数 素数又称质数,即“只能被1和自身整除的大于1的自然数”。判断素数的算法要领就是依据数学定义,即若该大于1的正整数不能被2至自身减1整除,就是素数。 例1、任意读入一个正整数,判断其是否为素数。 main() {int x,k; do scanf(\ while(x<=1); /*确保读入大于1的正整数*/ for(k=2;k<=x-1;k++) if(x%k==0)break; /*一旦能被2~自身-1整除,就不可能是素数*/ if(k==x) printf(\ else printf(\ 以上例题可以用以下两种变形来解决(需要使用辅助判断的逻辑变量): 【变形一】将“2~自身-1”的范围缩小至“2~自身的一半” main() {int x,k,flag; do scanf(\ while(x<=1); flag=1; /*先假设x就是素数*/ for(k=2;k<=x/2;k++) if(x%k==0){flag=0; break;}/*一旦不可能是素数,即置flag为0*/ if(flag==1) printf(\ else printf(\ 【变形二】将“2~自身-1”的范围缩小至“2~自身的平方根” #include \main() {int x,k,flag; do scanf(\ while(x<=1); flag=1; /*先假设x就是素数*/ for(k=2;k<=(int)sqrt(x);k++) if(x%k==0){flag=0; break;}/*一旦不可能是素数,即置flag为0*/ if(flag==1) printf(\ else printf(\例2、用筛选法求得100以内的所有素数。 C语言常用算法 算法为:(1)定义一维数组a,其初值为:2,3,??,100; (2)若a[k]不为0,则将该元素以后的所有a[k]的倍数的数组元素置为0; (3)a中不为0的元素,均为素数。 #include {int k,j,a[101]; clrscr(); /*清屏函数*/ for(k=2;k<101;k++)a[k]=k; for(k=2;k } 9.数组元素的插入、删除 (1)数组元素的插入 此算法一般是在已经有序的数组中再插入一个数据,使数组中的数列依然有序。算法要领是: 假设待插数据为x,数组a中数据为升序序列。 ①先将x与a数组当前最后一个元素进行比较,若比最后一个元素还大,就将x放入其后一个元素中;否则进行以下步骤; ②先查找到待插位置。从数组a的第1个元素开始找到不比x小的第一个元素,设其下标为i ; ③将数组a中原最后一个元素至第i个元素依次一一后移一位,让出待插数据的位置,即下标为i的位置; ④将x存放到a(i)中。 例题参见前面“‘排序’中插入法排序的例1”。 (2)数组元素的删除 此算法的要领是:首先要找到(也可能找不到)待删除元素在数组中的位置(即下标),然后将待删元素后的每一个元素向前移动一位,最后将数组元素的个数减1。 例1、数组a中有若干不同考试分数,任意读入一个分数,若与数组a中某一元素值相等,就将该元素删除。 #define N 6 main() {int fs[N]={69,90,85,56,44,80},x; int i,j,n; n=N; scanf(\任意读入一个分数值*/ /*以下查找待删分数的位置,即元素下标*/ for(i=0;i C语言常用算法 if(i==n) printf(\ else /*将待删位置之后的所有元素一一前移*/ {for(j=i+1;j for(i=0;i
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




