鱼C论坛

 找回密码
 立即注册
查看: 78|回复: 1

[学习笔记] 每日一学5

[复制链接]
发表于 2024-11-28 09:55:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 6bingame 于 2024-11-28 15:19 编辑

用流程图表示算法


课本例题练习

题1:求区间[100,200]内10个随机整数中最大数、最小数

算法分析
求数据中的最大数和最小数主要采用“打擂”算法。以求最大数为例,可先用第1个数作为最大数,再用其与其他的数逐个比较,并用找到的较大数替换为最大数。
求最小数的方法与此类似。

流程图描述
(开始)
->[产生第一个随机数a1]
->[max<-a1  min<-a1]
->[产生一个随机数ai]
->[i<10?]
{当i小于10时}->[输出max,min]->(结束)
{当i不小于10时}
->[max<ai?]
{当max小于ai时}->[max<-ai]->[min>ai?]{当min大于ai时}->[min<-ai]->回到第四步继续做判断直到输出结束
{当max不小于ai时}->[min>ai?]{当min不大于ai时}->回到第四步继续做判断直到输出结束
                                                                                                                                                             
解:
#include<stdio.h>

#include<stdlib.h>

int main()
{
    int a1,ai,i;

    int max,min;

    a1=rand()%101+100;      //产生一个[100,200]之间的随机整数a1

    printf("%d ",a1);      //输出这个随机数

    max=min=a1;         //将产生的第1个随机数设为最大值和最小值

    for(i=1;i<=10;i++)      //再产生其余9个随机数,并计算出最大值和最小值
    {
        ai=rand()%101+100;  //产生一个[100,200]

        printf("%d",ai);    //输出这个随机数

        if(ai>max)          //若产生的随机整数比之前的最大值还大,则将该值作为最大值

            max=ai;

        if(ai<min)          //若产生的随机整数比之前的最小值还小,则将该值作为最小值

            min=ai;
    }
    printf("\n最大值为:%d,最小值为:%d\n",max,min);      //输出这10个数的最大值和最小值

    return 0;
}



用N-S图表示算法

题2:求两个数的最大公约数

算法分析
求最大公约数通常“辗转相除法”
S1比较两数,并使m大于n
S2将m作被除数,相除后余数为r
S3将m<-n,n<-r
S4若r=0,则m为最大公约数,结束循环。若r不等于0,执行步骤2和3

解:
#include<stdio.h>
int main()
{
    int m,n,r,t;

    int m1,n1;

    printf("请输入第1个数:");

    scanf("%d",&m);     //由用户输入第1个数

    printf("\n请输入第2个数:");

    scanf("%d",&n);     //由用户输入第2个数

    m1=m; n1=n;         //保存原始数据供输出使用

    if(m<n)
    {
        t=m;

        m=n;

        n=t;
    }                   //m,n交换值,使m存放大值,n存放小值

    do                  //使用辗转相除法求得最大公约数
    {
        r=m%n;

        m=n;

        n=r;
    }
    while(r!=0);

    printf("%d和%d的最大公约数是%d\n",m1,n1,m);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-28 09:56:11 | 显示全部楼层
在算法设计中,流程图是一种常用的工具,用于形象化地表示算法的步骤和流程。流程图使用特定的图形符号来表示不同的操作和流向。以下是一些常用的流程图符号及其意义:

- **椭圆形(起止框)**:表示开始和结束。
- **矩形(处理框)**:表示一个处理步骤,例如计算、赋值等。
- **菱形(判断框)**:表示一个判断或条件分支,通常有"是"和"否"两条路径。
- **平行四边形(输入输出框)**:表示算法中的输入和输出操作。
- **箭头(流程线)**:表示流程的方向。

一个简单的流程图示例:
[开始] --> [输入两个数] --> [判断第一个数是否大于第二个数]
       是 --> [输出第一个数] --> [结束]
       否 --> [输出第二个数] --> [结束]

整体思路:
1. 从"开始"开始。
2. 按照流程图的指示执行步骤。
3. 遵循箭头指向进行下一步操作。
4. 遇到判断框时,根据条件结果选择不同的路径继续。
5. 最后到达"结束"。

通过这种图形化的方式,流程图可以帮助我们更直观地理解算法的逻辑和流程。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 01:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表