C 语言程序设计的常用算法
算法 (Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个
问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据 (输入什么数据、输
出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、
结构化流程图、伪代码等来描述算法。
一、计数、求和、求阶乘等简单算法
此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意
用来表示计数、和、阶乘的变量的初值。
例:用随机函数产生 100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,
4,5,6,7,8,9,0 的数的个数并打印出来。
本题使用数组来处理,用数组a[100]存放产生的确 100 个随机整数,数组x[10]来存放个位
上的数字分别为1,2,3,4,5,6,7,8,9,0 的数的个数。即个位是1的个数存放在x[1]
中,个位是2 的个数存放在x[2]中,……个位是0 的个数存放在x[10]。
程序代码如下:
#include
///
voidmain()
{
int a[101],x[11],i,p;
for(i 0;i< 11;i++)
x[i] 0;
for(i 1;i< 100;i++)
{
a[i] rand()%100;
printf("%4d",a[i]);
if(i%10 0)
printf("\n");
}
for(i 1;i< 100;i++)
{
p a[i]%10;
if(p 0)
p 10;
x[p] x[p]+1;
}
for(i 1;i< 10;i++)
{
p i;
if(i 10)
p 0;
printf("%d,%d\n",p,x[i]);
}
printf("\n");
}
二、求两个整数的最大公约数、最小公倍数
最大公约数的算法思想(最小公倍数 两个整数之积/最大公约数):
(1)对于已知两数m,n,使得m>n;
(2)m 除以n 得余数r;
(3)若r 0,则n 为求得的最大公约数,算法结束;否则执行(4);
(4)m←n,n←r,再重复执行(2)。
例:求 m 14,n 6 的最大公约数。
程序代码如下:
#include
///
voidmain()
{
intnm,r,n,m,t;
printf("pleaseinputtwonumbers:");
scanf("%d,%d",&m,&n);
nm n*m;
if(m
{
t n;
n m;
m t;
}
r m%n;
while (r! 0)
{
m n;
n r;
r m%n;
}
printf("G.C.D:%d\n",n);
printf("L.C.M:%d\n",nm/n);
}
三、判断素数
只能被 1或本身整除的数称为素数。基本思想:把m 作为被除数,将2-sqrt(m)作为除数,
如果都除不尽,m 就是素数,否则就不是。
程序代码如下:
#include
#include
///
voidmain()
{
intm,i,k;
printf(