《菜鸟分享之C语言》第2篇:算法,程序的灵魂

算法—程序的灵魂

今天,笔者和大家分享一篇关于C语言算法的文章。其实说句实话,在程序的学习中算法的熟练掌握是比咱们想象中的还要重要。今天是除夕,希望大家新年快乐,万事如意。虽然是猪年,但被吃太多。哈哈。
在这里插入图片描述

什么是算法

程序编程中语言(无论是C语言还是JAVA语言等)只是一种工具。而算法是核心、是程序的灵魂。打一个比方,厨师制作菜肴,需要食材和制作方法。没有食材是不可能制作成美味的菜肴,同样对同一种食材运用不同的制作方法可以加工成不同风味的菜肴。算法就好像菜肴的制作方法一样。
在这里插入图片描述
另外,程序编程的初学者常常狭义的认为只有“计算”的问题才有算法。广义地说,为解决一个问题而采取的方法和步骤,就称作“算法”。对于同一个问题,可以有不同的算法。当然,算法有优劣之分。有的算法只需进行很少的步骤,而有些方法则需要较多的步骤,这也就是大神和菜鸟的区别。咱们所关心的当然只限于计算机算法,即计算机能执行的算法。例如,让计算机算1×2×3×4×5×6×7×8×9×10.或将100个学生的成绩按高低分数的次序排序,是可以做到的。而让计算机去执行“替我理发”或“煎一份牛排”,是做不到的(至少目前如此)。计算机算法可分为两大类别。数值运算算法和非数值运算算法。

数值运算算法

数值运算的目的是求数值解,例如求方程的根、求一个函数的定积分等,都属于数值运算范围。由于数值运算往往有现成的模型,可以运行数值分析方法,因此对数值运算的算法的研究,比较深入,算法比较成熟,对各种数值运算都有比较成熟的算法可供使用,人们常常把这些算法汇编成册(写成程序形式),有的计算机系统提供“数学程序库”,用起来十分方便。

非数值运算算法

非数值运算,包括面十分广泛,最常见的是用于事务管理领域,例如对一批职工按姓名排序,图书检索人事管理和行车调度管理等,目前计算机在非数值运算方面的应用,远远超过了在数值运算方面的应用。非数值运算的种类繁多,要求各异,难以做到全部都有现成的答案,因此只有一些典型的非数值运算算法。例如:排序算法,查找搜索算法等。没有现成的,成熟的算法可供使用,许多问题往往需要使用者参考,已有的类似算法的思路,重新设计解决特定问题的专门算法本。我不可能罗列所有的算法,只是通过一些典型的算法介绍,帮助读者了解什么是算法,怎样设计一个算法,帮助读者举一反三。

废话不多说,直接上算法:

问题:判定2000-2500年中的每一年是否是闰年,并将结果输出。
在这里插入图片描述

第一步算法分析:

先分析闰年成立的条件、(1)能被4整除,但不能被100整除的年份是闰年,例如1996、2008、2012是闰年。(2)能直接被400整除的年份是闰年,如1600、2000是闰年。(3)不符合这两个条件的不是闰年。例如2009、2100。

第二步算法表示:

S1:把year赋值2000
S2:若不能被4整除,则输出的值和“不是闰年”。然后转到S6,检查下一个年份。
S3:若能被4整除,且不能被100整除,则输出year的值和“是闰年”。然后转到S6
S4:若直接能被400整除。则输出year的值和“是闰年”。然后转到S6
S5:输出year的值和“不是闰年”
S6:把year+1赋值给year
S7:当year<=2500时,转S2继续执行,否则算法停止。
代码上是这样的:

#include<stdio.h>
int main()
{
	int year;
	printf("2000-2500的闰年是:"); 
	for(year=2000;year<=2500;year++) 
	{
		if((year%4==0)&&(year%100==!0))
		{
			printf("%d\t",year);continue;
		}
		else
		{
			if(year%400==0)
			{
				printf("%d\t",year);
			}
		}
		 
	} 
	return 0;
}

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值