算法

一个程序主要包括以下两个方面的信息:

(1)对数据的描述。在程序中要指定用哪些数据以及这些数据的类型和数据的组织形式。这就是数据结构

(2)对操作的描述。即要求计算机进行操作的步骤,也就是算法。

数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。

算法+数据结构=程序

算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法。

算法是解决“做什么”和“怎么做”的问题。程序中的操作语句,实际上就是算法的体现。

什么是算法

算法:为解决一个问题而采取的方法和步骤

计算机算法可分为两大类别:数值运算算法和非数值运算算法。

数值运算的目的是求数值解

非数值运算包括的面十分广泛,最常见的是用于事务管理领域

简单的算法举例

求1*2*3*4*5


#include<stdio.h>

//求1*2*3*4*5
int main(void)
{
	int mul = 1;
	for (int i = 2; i < 6; i++)
		mul *= i;

	printf("1*2*3*4*5=%d", mul);
	return 0;
}

运行结果:

求1*3*5*7*9*11


#include<stdio.h>

//求1*3*5*7*9*11
int main(void)
{
	int mul = 1;
	for (int i = 3; i < 12; i += 2)
		mul *= i;

	printf("1*3*5*7*9*11=%d", mul);
	return 0;
}

运行结果:

有10个学生,要求输出成绩在80分以上的学生的学号和成绩


#include <stdio.h>

int main(void)
{
	int sg[10] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
	int sn[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

	for (int i = 0; i < sizeof(sg) / sizeof(int); i++)
	{
		if (sg[i] < 80)
			continue;

		printf("%d\t", sn[i]);
	}

	return 0;
}

运行结果:

判定2000-2500中的每一年是否为闰年,并将结果输出


//判定2000-2500中的每一年是否为闰年,并将结果输出
//1、能被4整除,但是不能被100整除
//2、能被400整除
#include <stdio.h>

int main(void)
{
	int i = 0;
	for (int year = 2000; year < 2501; year++)
	{
		if ((0 == (year % 4)) && (0 != (year % 100)))
			printf("%d是闰年\t", year);
		else if (0 == (year % 400))
			printf("%d是闰年\t", year);
		else
			printf("%d不是闰年\t", year);
		i++;
		if (5 == i)
		{
			printf("\n");
			i = 0;
		}
	}

	return 0;
}

运行结果:

求1-1/2+1/3-1/4+...+1/99-1/100


//求1-1/2+1/3-1/4+...+1/99-1/100

#include <stdio.h>

int main(void)
{
	double sum = 0;
	for (int i = 1; i < 101; i++)
		sum += (-1) * ((0 == (i % 2)) ? 1 : (-1)) / (double)i;
	
	printf("%lf", sum);

	return 0;
}

运行结果:

给出一个大于或等于3的正整数,判断它是不是一个素数


//给出一个大于或等于3的正整数,判断它是不是一个素数

#include <stdio.h>

int main(void)
{
	int a = 0;
	scanf("%d", &a);

	for (int i = 2; i < a; i++)
	{
		if (0 == (a % i))
		{
			printf("%d不是素数", a);
			return 0;
		}
	}

	printf("%d是素数", a);
	return 0;
}

运行结果:

在VS编译器内会报C4996错误,解决见下文:

C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. - EricsT - 博客园 (cnblogs.com)

算法的特性

  • 有穷性
  • 确定性
  • 有0个或者多个输入
  • 有一个或者多个输出
  • 有效性

怎样表示一个算法

  • 自然语言
  • 传统流程图
  • 结构化流程图
  • 伪代码

三种基本结构

  1. 顺序结构
  2. 选择结构
  3. 循环结构
    • 当(while)型循环结构
    • 直到(until)型循环结构

三种基本结构有以下特点:

  • 只有一个入口
  • 只有一个出口
  • 结构内的每一部分都有机会被执行到
  • 结构内不存在“死循环”(无终止循环)

结构化程序设计方法

  1. 自顶向下
  2. 逐步细化
  3. 模块化设计
  4. 结构化编码
posted @ 2024-10-11 00:33  EricsT  阅读(26)  评论(0编辑  收藏  举报