C语言教学之常用算法程序课件_第1页
C语言教学之常用算法程序课件_第2页
C语言教学之常用算法程序课件_第3页
C语言教学之常用算法程序课件_第4页
C语言教学之常用算法程序课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课件封面课件封面实验教学标题输入、输出和选择结构程序实验教学标题输入、输出和选择结构程序6常用算法程序常用算法程序【18.】编写程序求两个整数的最大公约数和最小公倍数。

6常用算法程序常用算法程序【18.】编写程序求两个整数的最#include<stdio.h>voidmain(){ intm,n,t; printf("输入两个数(用空格或者回车间隔)\n"); scanf("%d%d",&m,&n);

//设t为m,n的最小数

if(m>n)t=n; elset=m; while(t>0){ if(m%t==0&&n%t==0)break;

//每次检查m和n能否整除t如果是则找到最大公约数

t--; } printf("%d和%d的最大公约数为%d\n",m,n,t);

//设t为m,n的最大数

if(m>n)t=m; elset=n; while(1){ if(t%m==0&&t%n==0)break;

//每次检查t能否整除m和n如果是则找到最小公倍数

t++; } printf("%d和%d的最小公倍数为%d\n",m,n,t);}#include<stdio.h>6常用算法程序常用算法程序【19.】编写一个函数IsP(intn),函数的功能是检查n是否为素数,如果是函数返回“真”,否则返回“假”。在主函数中调用该函数,打印100~1000之间的全部素数。

6常用算法程序常用算法程序【19.】编写一个函数IsP(i#include<stdio.h>intIsP(intn)//函数的功能是检查n是否为素数{ inti; //分析:从2到n-1逐一检查能否整除n,只要有一个整除则肯定不是素数,所有均不能整除则肯定是素数

for(i=2;i<n;i++) if(n%i==0)return0;

//只要有一个整除则不是素数

return1;}voidmain(){ inti;

//打印100~1000之间的全部素数

for(i=100;i<1000;i++) if(IsP(i)) printf("%d\n",i);}#include<stdio.h>6常用算法程序常用算法程序【20.】用筛选法求100之内的素数。

6常用算法程序常用算法程序【20.】用筛选法求100之内的#include<stdio.h>voidcal_prime(intA[],intn)//使用筛选法计算素数{inti,j;for(i=2;i<=n;i++)for(j=2;i*j<=n;j++){//如果该数尚未筛选过,则标记该数选中

if(A[i*j]==1)A[i*j]=0;else//如果已经筛选过,则跳出改次筛选,进入下次筛选

continue;}}voidmain(){ intA[100+1];//下标需要从2到100,因此数组长度为100+1 inti;

//将全部数组元素设为1表示未被筛出

for(i=2;i<=100;i++) A[i]=1; cal_prime(A,100); for(i=2;i<=100;i++) if(A[i]==1)//未被筛出的元素必定是素数

printf("%d\n",i);}#include<stdio.h>6常用算法程序常用算法程序【21.】用二分查找法在已排序好的数组中查找输入的数。如果找到了输出该数的下标,否则输出“未找到”。(数组为:1,2,13,24,25,44,57,63,66,78,90,100)。

6常用算法程序常用算法程序【21.】用二分查找法在已排序好#include<stdio.h>#include<math.h>voidmain(){ inta[10]={1,3,5,7,9,11,13,15,17,19}; inth; //查找区域开始位置

intt; //查找区域结束位置

intm; //查找区域中间位置

intsign=0; //为0表示未找到,为表示找到

intf; //要查找的数据

printf("请输入要查找的数据:"); scanf("%d",&f); h=0,t=9; //一开始将整个数组设为查找区域

if(!(f<a[0]||f>a[9])) {

//如果要查找的数据比开始元素小或者比结束元素大,则肯定不在查找区域中

#include<stdio.h>while(!sign&&h<=t) {m=(h+t)/2; //计算当前查找区域的中间位置

if(f==a[m])

//如果要找的数据与中间位置的数据相等表示找到了

{printf("%d找到了,它是:A[%d]\n",f,m); sign=1; } elseif(f>a[m])//否则如果要找的数据比中间位置的数据大

h=m+1;//则下一次的查找区域在右半部分

else t=m-1;//否则下一次的查找区域在左半部分

} } if(sign==0) printf("在数组中%d没有找到\n",f);}while(!sign&&h<=t)6常用算法程序常用算法程序【22.】编写一个函数sort(intA[],intn),函数的功能是用冒泡法对数组进行由大到小的排序,其中n为数组A的元素个数。在主函数中输入10个数据,调用函数排序,然后输出排序好的10个数据。(输入数据:6,8,9,1,2,5,4,7,3,18)

6常用算法程序常用算法程序【22.】编写一个函数sort(#include<stdio.h>voidsort(intA[],intn){ inti,j; intt;

//改进后的冒泡法排序

for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(A[i]<A[j])

//<为由大到小,>为由小到大,A[i]表示前面的数,A[j]表示后面的数

{t=A[i],A[i]=A[j],A[j]=t;}}voidmain(){ intA[10]; inti; printf("连续输入10个数据(用空格或者TAB或者回车间隔)\n"); for(i=0;i<10;i++) scanf("%d",&A[i]); sort(A,10);

//输出排序后的数组

for(i=0;i<10;i++) printf("%d",A[i]);}#include<stdio.h>6常用算法程序常用算法程序【23.】编写一个函数sort(intA[],intn),函数的功能是用选择法对数组进行由小到大的排序,其中n为数组A的元素个数。在主函数中输入10个数据,调用函数排序,然后输出排序好的10个数据。(输入数据:6,8,9,1,2,5,4,7,3,18)

6常用算法程序常用算法程序【23.】编写一个函数sort(#include<stdio.h>voidsort(intA[],intn){ inti,j,k; intt;

//改进后的选择法排序

for(i=0;i<n-1;i++){ k=i; for(j=i+1;j<n;j++) if(A[k]>A[j])k=j;

//<为由大到小,>为由小到大,A[k]表示前面的数,A[j]表示后面的数

if(k!=i) {t=A[i],A[i]=A[k],A[k]=t;} }}voidmain(){ intA[10]; inti; printf("连续输入10个数据(用空格或者TAB或者回车间隔)\n"); for(i=0;i<10;i++)scanf("%d",&A[i]);

sort(A,10);

//输出排序后的数组

for(i=0;i<10;i++)printf("%d",A[i]);}#include<stdio.h>演讲完毕,谢谢观看!演讲完毕,谢谢观看!课件封面课件封面实验教学标题输入、输出和选择结构程序实验教学标题输入、输出和选择结构程序6常用算法程序常用算法程序【18.】编写程序求两个整数的最大公约数和最小公倍数。

6常用算法程序常用算法程序【18.】编写程序求两个整数的最#include<stdio.h>voidmain(){ intm,n,t; printf("输入两个数(用空格或者回车间隔)\n"); scanf("%d%d",&m,&n);

//设t为m,n的最小数

if(m>n)t=n; elset=m; while(t>0){ if(m%t==0&&n%t==0)break;

//每次检查m和n能否整除t如果是则找到最大公约数

t--; } printf("%d和%d的最大公约数为%d\n",m,n,t);

//设t为m,n的最大数

if(m>n)t=m; elset=n; while(1){ if(t%m==0&&t%n==0)break;

//每次检查t能否整除m和n如果是则找到最小公倍数

t++; } printf("%d和%d的最小公倍数为%d\n",m,n,t);}#include<stdio.h>6常用算法程序常用算法程序【19.】编写一个函数IsP(intn),函数的功能是检查n是否为素数,如果是函数返回“真”,否则返回“假”。在主函数中调用该函数,打印100~1000之间的全部素数。

6常用算法程序常用算法程序【19.】编写一个函数IsP(i#include<stdio.h>intIsP(intn)//函数的功能是检查n是否为素数{ inti; //分析:从2到n-1逐一检查能否整除n,只要有一个整除则肯定不是素数,所有均不能整除则肯定是素数

for(i=2;i<n;i++) if(n%i==0)return0;

//只要有一个整除则不是素数

return1;}voidmain(){ inti;

//打印100~1000之间的全部素数

for(i=100;i<1000;i++) if(IsP(i)) printf("%d\n",i);}#include<stdio.h>6常用算法程序常用算法程序【20.】用筛选法求100之内的素数。

6常用算法程序常用算法程序【20.】用筛选法求100之内的#include<stdio.h>voidcal_prime(intA[],intn)//使用筛选法计算素数{inti,j;for(i=2;i<=n;i++)for(j=2;i*j<=n;j++){//如果该数尚未筛选过,则标记该数选中

if(A[i*j]==1)A[i*j]=0;else//如果已经筛选过,则跳出改次筛选,进入下次筛选

continue;}}voidmain(){ intA[100+1];//下标需要从2到100,因此数组长度为100+1 inti;

//将全部数组元素设为1表示未被筛出

for(i=2;i<=100;i++) A[i]=1; cal_prime(A,100); for(i=2;i<=100;i++) if(A[i]==1)//未被筛出的元素必定是素数

printf("%d\n",i);}#include<stdio.h>6常用算法程序常用算法程序【21.】用二分查找法在已排序好的数组中查找输入的数。如果找到了输出该数的下标,否则输出“未找到”。(数组为:1,2,13,24,25,44,57,63,66,78,90,100)。

6常用算法程序常用算法程序【21.】用二分查找法在已排序好#include<stdio.h>#include<math.h>voidmain(){ inta[10]={1,3,5,7,9,11,13,15,17,19}; inth; //查找区域开始位置

intt; //查找区域结束位置

intm; //查找区域中间位置

intsign=0; //为0表示未找到,为表示找到

intf; //要查找的数据

printf("请输入要查找的数据:"); scanf("%d",&f); h=0,t=9; //一开始将整个数组设为查找区域

if(!(f<a[0]||f>a[9])) {

//如果要查找的数据比开始元素小或者比结束元素大,则肯定不在查找区域中

#include<stdio.h>while(!sign&&h<=t) {m=(h+t)/2; //计算当前查找区域的中间位置

if(f==a[m])

//如果要找的数据与中间位置的数据相等表示找到了

{printf("%d找到了,它是:A[%d]\n",f,m); sign=1; } elseif(f>a[m])//否则如果要找的数据比中间位置的数据大

h=m+1;//则下一次的查找区域在右半部分

else t=m-1;//否则下一次的查找区域在左半部分

} } if(sign==0) printf("在数组中%d没有找到\n",f);}while(!sign&&h<=t)6常用算法程序常用算法程序【22.】编写一个函数sort(intA[],intn),函数的功能是用冒泡法对数组进行由大到小的排序,其中n为数组A的元素个数。在主函数中输入10个数据,调用函数排序,然后输出排序好的10个数据。(输入数据:6,8,9,1,2,5,4,7,3,18)

6常用算法程序常用算法程序【22.】编写一个函数sort(#include<stdio.h>voidsort(intA[],intn){ inti,j; intt;

//改进后的冒泡法排序

for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(A[i]<A[j])

//<为由大到小,>为由小到大,A[i]表示前面的数,A[j]表示后面的数

{t=A[i],A[i]=A[j],A[j]=t;}}voidmain(){ intA[10]; inti; printf("连续输入10个数据(用空格或者TAB或者回车间隔)\n"); for(i=0;i<10;i++) sca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论