找回密码
 立即注册
首页 资源区 代码 算法
箝德孜 6 天前
一个程序主要包括以下两个方面的信息:
(1)对数据的描述。在程序中要指定用哪些数据以及这些数据的类型和数据的组织形式。这就是数据结构
(2)对操作的描述。即要求计算机进行操作的步骤,也就是算法。
数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。
算法+数据结构=程序
算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法。
算法是解决“做什么”和“怎么做”的问题。程序中的操作语句,实际上就是算法的体现。
什么是算法

算法:为解决一个问题而采取的方法和步骤
计算机算法可分为两大类别:数值运算算法和非数值运算算法。
数值运算的目的是求数值解
非数值运算包括的面十分广泛,最常见的是用于事务管理领域
简单的算法举例

求1*2*3*4*5
  1. #include<stdio.h>
  2. //求1*2*3*4*5
  3. int main(void)
  4. {
  5.         int mul = 1;
  6.         for (int i = 2; i < 6; i++)
  7.                 mul *= i;
  8.         printf("1*2*3*4*5=%d", mul);
  9.         return 0;
  10. }
复制代码
运行结果:
1.png

求1*3*5*7*9*11
  1. #include<stdio.h>
  2. //求1*3*5*7*9*11
  3. int main(void)
  4. {
  5.         int mul = 1;
  6.         for (int i = 3; i < 12; i += 2)
  7.                 mul *= i;
  8.         printf("1*3*5*7*9*11=%d", mul);
  9.         return 0;
  10. }
复制代码
运行结果:
2.png

有10个学生,要求输出成绩在80分以上的学生的学号和成绩
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.         int sg[10] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
  5.         int sn[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  6.         for (int i = 0; i < sizeof(sg) / sizeof(int); i++)
  7.         {
  8.                 if (sg[i] < 80)
  9.                         continue;
  10.                 printf("%d\t", sn[i]);
  11.         }
  12.         return 0;
  13. }
复制代码
运行结果:
3.png

判定2000-2500中的每一年是否为闰年,并将结果输出
  1. //判定2000-2500中的每一年是否为闰年,并将结果输出
  2. //1、能被4整除,但是不能被100整除
  3. //2、能被400整除
  4. #include <stdio.h>
  5. int main(void)
  6. {
  7.         int i = 0;
  8.         for (int year = 2000; year < 2501; year++)
  9.         {
  10.                 if ((0 == (year % 4)) && (0 != (year % 100)))
  11.                         printf("%d是闰年\t", year);
  12.                 else if (0 == (year % 400))
  13.                         printf("%d是闰年\t", year);
  14.                 else
  15.                         printf("%d不是闰年\t", year);
  16.                 i++;
  17.                 if (5 == i)
  18.                 {
  19.                         printf("\n");
  20.                         i = 0;
  21.                 }
  22.         }
  23.         return 0;
  24. }
复制代码
运行结果:
4.png

求1-1/2+1/3-1/4+...+1/99-1/100
  1. //求1-1/2+1/3-1/4+...+1/99-1/100
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.         double sum = 0;
  6.         for (int i = 1; i < 101; i++)
  7.                 sum += (-1) * ((0 == (i % 2)) ? 1 : (-1)) / (double)i;
  8.        
  9.         printf("%lf", sum);
  10.         return 0;
  11. }
复制代码
运行结果:

给出一个大于或等于3的正整数,判断它是不是一个素数
  1. //给出一个大于或等于3的正整数,判断它是不是一个素数
  2. #include <stdio.h>
  3. int main(void)
  4. {
  5.         int a = 0;
  6.         scanf("%d", &a);
  7.         for (int i = 2; i < a; i++)
  8.         {
  9.                 if (0 == (a % i))
  10.                 {
  11.                         printf("%d不是素数", a);
  12.                         return 0;
  13.                 }
  14.         }
  15.         printf("%d是素数", a);
  16.         return 0;
  17. }
复制代码
运行结果:
6.png

在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)型循环结构

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

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


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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册