C语言常用算法归纳
应当掌握的一般算法
一、基本算法:
交换、累加、累乘
二、非数值计算常用经典算法:
穷举、排序(冒泡,选择)、查找(顺序即线性)
三、数值计算常用经典算法:
级数计算(直接、简接即递推)、一元非线性方程求根(牛顿迭代法、
二分法)、定积分计算(矩形法、梯形法)
四、其他:
迭代、进制转换、矩阵转置、字符处理(统计、数字串、字母大小写转
换、加密等)、整数各数位上数字的获取、辗转相除法求最大公约数(最
小公倍数) 、求最值、判断素数(各种变形) 、数组元素的插入(删除)、
二维数组的其他典型问题(方阵的特点、杨辉三角形)
详细讲解
一、基本算法
1.交换(两量交换借助第三者)
例 1、任意读入两个整数,将二者的值交换后输出。
()
{ ;
("");
("\n");
; ; ;
("\n");
}
1 / 25
【解析】程序中加粗部分为算法的核心,如同交换两个杯子里的饮料,
必须借助第三个空杯子。
假设输入的值分别为 3、7,则第一行输出为 3,7;第二行输出为 7,3。
其中 t 为中间变量,起到“空杯子”的作用。
注意:三句赋值语句赋值号左右的各量之间的关系!
【应用】
例 2、任意读入三个整数,然后按从小到大的顺序输出。
()
{ ;
("");
/* 以下两个语句使得 a 中存放的数最小 */
(a>b){ ; ; ; }
(a>c){ ; ; ; }
/* 以下语句使得 b 中存放的数次小 */
(b>c) { ; ; ; }
("\n");
}
2 .累加
累加算法的要领是形如“”的累加式 ,此式必须出现在循环中才能被反
复执行,从而实现累加功能。“ A”通常是有规律变化的表达式, s 在进入
循环前必须获得合适的初值,通常为 0。
例 1、求 1+2+3+……+100 的和。
()
{ ;
0; 1;
(i<=100)
{ ; /* 累加式 */
1; /* 特殊的累加式 */
}
("1+2+3100\n");
}
【解析】程序中加粗部分为累加式的典型形式 ,赋值号左右都出现的变
量称为累加器,其中“i = i + 1”为特殊的累加式,每次累加的值为
1,这样的累加器又称为计数器。
3.累乘
2 / 25
累乘算法的要领是形如“ *A”的累乘式 ,此式必须出现在循环中才能被
反复执行,从而实现累乘功能。“ A”通常是有规律变化的表达式, s 在进
入循环前必须获得合适的初值,通常为 1。
例 1、求 10 !
[ 分析 ] 10 !=1×2 ×3×……× 10
()
{ i; c;
1; 1;
(i<=10)
{ *i;