箝德孜 发表于 4 天前

算法

一个程序主要包括以下两个方面的信息:
(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, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
        int sn = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

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

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

        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;
}运行结果:
https://img2024.cnblogs.com/blog/3512406/202410/3512406-20241011001412140-1318592198.png
给出一个大于或等于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个或者多个输入
[*]有一个或者多个输出
[*]有效性
怎样表示一个算法


[*]自然语言
[*]传统流程图
[*]结构化流程图
[*]伪代码
三种基本结构


[*]顺序结构
[*]选择结构
[*]循环结构

[*]当(while)型循环结构
[*]直到(until)型循环结构

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

[*]只有一个入口
[*]只有一个出口
[*]结构内的每一部分都有机会被执行到
[*]结构内不存在“死循环”(无终止循环)
结构化程序设计方法


[*]自顶向下
[*]逐步细化
[*]模块化设计
[*]结构化编码

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 算法