教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

C语言基本算法(简单级别)(3)

来源:网络收集 时间:2026-09-04
导读: C语言常用算法 {a=b;b=r;r=a%b;} printf(\} [法二:用do…while循环时,最大公约数存放于a中] main() {int a,b,r; do scanf(\ while(a 【引申】可以利用最大公约数求最小公倍数。提示:两个正整数a和b的最小公倍数=

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 #include main( )

{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

…… 此处隐藏:303字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言基本算法(简单级别)(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/444762.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)