1 / 35
文档名称:

zxdC语言常用算法.ppt

格式:ppt   大小:764KB   页数:35页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

zxdC语言常用算法.ppt

上传人:xunlai783 2018/5/22 文件大小:764 KB

下载得到文件列表

zxdC语言常用算法.ppt

相关文档

文档介绍

文档介绍:教学实践部计算机中心周信东
E-Mail:******@guet.
共 100 页第 2 页
一、数值计算
1、累加
2、累乘(阶乘)
3、交换
4、最大/最小值
5、数位拆解
6、数组移动
7、级数计算
8、素数判断
二、数据查找
1、顺序查找
2、穷举查找
三、排序算法
1、冒泡排序
2、选择排序
3、插入排序
4、归并排序
共 100 页第 3 页
1、累加
累加算法的要领是形如“s=s+A”的累加式,此式必须出现在循环中才能被反复执行,从而实现累加功能。
“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为0。
一、数值计算
共 100 页第 4 页
例g-1、求1+2+3+……+100的和。
main()
{ int i,s;
s=0; i=1;
while (i<=100)
{ s = s+i;
i = i+1;
}
printf(“s=%d\n",s);
}
【解析】程序中红字部分为累加式的典型形式,赋值号左右都出现的变量称为累加器,其中“i = i + 1”为特殊的累加式,每次累加的值为1,这样的累加器又称为计数器。
main()
{ int i,s;
s=0; i=1;
for (i=1; i<=100; i++)
s = s+i;
printf(“s=%d\n",s);
}
共 100 页第 5 页
2、累乘、阶乘
累乘算法的要领是形如“s=s*A”的累乘式,此式必须出现在循环中才能被反复执行,从而实现累乘功能。
“A”通常是有规律变化的表达式,s在进入循环前必须获得合适的初值,通常为1。
共 100 页第 6 页
例g-2、求10!
【分析】10!=1×2×3×……×10
main()
{ int i; long s;
s=1; i=1;
while (i<=10)
{ s = s*i;
i = i+1;
}
printf("1*2*3*...*10=%ld\n", s);
}
共 100 页第 7 页
3、交换
两量交换借助第三者。如同交换两个瓶子里的墨水,必须借助第三个空瓶子。
例g-3、任意读入两个整数,将二者的值交换后输出。
main()
{ int a,b,t;

scanf("%d%d", &a, &b);
printf("%d,%d\n", a, b);
t = a;
a = b;
b = t;
printf("%d,%d\n", a, b);
}
【解析】程序中加粗部分为算法的核心,其中t为中间变量,起到“空瓶子”的作用。
注意:三句赋值语句赋值号左右的各量之间的关系!
共 100 页第 8 页
【应用】例g-4、任意读入三个整数,然后按从小到大的顺序输出。
例C12_102
main()
{ int a,b,c,t;

scanf("%d%d%d", &a, &b, &c);
if(a>b) { t=a; a=b; b=t; }
if(a>c) { t=a; a=c; c=t; }
if(b>c) { t=b; b=c; c=t; }
printf("%d,%d,%d\n", a, b, c);
}
共 100 页第 9 页
4、求最大值/最小值
【例g-5】用数组a存放随机产生的20个整数,然后输出其最大值和最小值。
#define N 20
main()
{ int a[N], i, max, min;
for (i=0; i<N; i++) a[i] = rand();
max = a[0];
min = a[0];
for (i=1; i<N; i++)
{
if (a[i]>max) max = a[i];
if (a[i]<min) min = a[i];
}
printf("max=%d,min=%d\n", max, min);
}
共 100 页第 10 页
【例g-6】修改上例,输出最大/最小值的数组元素的下标。
#define N 20
main()
{ int a[N], i, max, min;
for (i=0; i<N; i++) a[i] = rand();
max = 0;
min = 0;
for (i=1; i<N; i++)
{
if (a[i]>a[max]) max = i;
if (a[i]<a[min]) min = i;
}
printf("max=a[%d]=%d,min=a[%d]=%d\n",
max, a[max], min, a[min]);
}