精华内容
下载资源
问答
  • 本期将会介绍顺序结构。 顺序结构是最简单的一种程序结构,其它的结构可以包含顺序结构也可以作为顺序结构的组成部分,可见顺序结构无处不在,他是构成其他程序结构的基础。在顺序结构程序中,各语句是按自上而下的...

    本期将会介绍顺序结构。
    顺序结构是最简单的一种程序结构,其它的结构可以包含顺序结构也可以作为顺序结构的组成部分,可见顺序结构无处不在,他是构成其他程序结构的基础。在顺序结构程序中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必作任何判断。下面将会介绍几道例题来帮助大家加深印象。

    First
    数学计算
    首先要明白其中的相关知识
    1.数学函数库
    2.abs 函数
    3.fabs 函数
    4.sqrt 函数
    5.sin 函数

    数学函数库
    C 语言提供了许多的数学函数,要使用这些函数时,在程序文件头必须加入: #include <math.h>或 #include “math.h”
    abs 函数
    求整型变量 x 的绝对值,返回计算结果为整型。函数原型为:int abs(int x)
    for example:
    1.int a = -5;
    2.printf("%d",abs(a));
    输出的结果: 5
    fabs 函数
    求浮点型变量 x 的绝对值,返回计算结果为浮点型。函数原型为:double fabs(double x)
    for example:
    1.double a = -5.654;
    2.printf("%lf",fabs(a));
    输出的结果: 5.654000
    在这里保留了6位小数,要注意的是:
    float型数据只能保证6位有效数字,
    double型数据能保证15位有效数字,
    计算机输出的数字不都是绝对精确有效的。

    sqrt 函数
    计算根号 x( x >= 0 ),返回计算结果。函数原型为:double sqrt(double x)
    for example
    1.double b = 9;
    2.double a = sqrt(b); // 对9求根号
    3.printf("%f",a);
    输出的结果: 3.000000
    sin 函数
    计算 SINx 的值(x 单位为弧度),返回计算结果。函数原型为: double sin(double x)
    for example
    1.double pi =3.1415;
    2.double a = sin(pi);
    3.printf("%f",a);
    输出的结果: 0.000093

    下面进入正题!
    给定数学公式,请你计算出它的值。
    c=x+y5+sinπ4c=\frac{\sqrt{x}+\sqrt{y}}{\mid{-5+sin\frac{\pi}{4}}\mid}
    其中x、y为正整数,π=3.1415926

    这道题说白了就是要学会运用数学函数库中的常用函数。

    #include <stdio.h>//包含标准输入输出函数
    #include <math.h>//包含数学函数
    int main()       //定义main函数
    { 
        int x,y;    
        double pi=3.1415926,c;    
        scanf("%d%d",&x,&y);          
        c=(sqrt(x)+sqrt(y))/fabs(-5+sin(pi/4));    
        printf("%f",c);                   
        return 0;
    }

    最后打印出c时,记住要用%f,%f 输出单精度浮点数,float类型
    浮点型的占位符。

    Second
    第二题讲的就是两点间的距离的算法,相信大家在数学中早已经对这个算法熟能生巧了,但放在编程里面,还是要注意!
    首先介绍相关公式:
    pow函数
    在 C 语言中,提供了用于求x的y次幂的函数。
    函数原型为:double pow(double x, double y)
    例如,求2102^{10} 可以表示为:printf("%lf",pow(2,10));
    这个是比较好理解的。输出的结果:1024.000000
    如果不想输出多余的0,则可以采用g格式符。
    如:printf("%g",pow(2,10));
    输出的结果就是:1024
    编程要求
    1.输入一行 4 个双精度浮点型(x1,y1,x2,y2)数据;
    2.前两个数据分别用于表示第一个点的横坐标与纵坐标,即(x1,y1);
    3.后两个数据分别用于表示第二个点的横坐标与纵坐标,即(x2,y2)。

    测试输入:0 0 3 4
    预期输出:5

    测试输入:1 1 6 6
    预期输出:7.07107

    #include <stdio.h>//包含标准输入输出函数
    #include <math.h>//包含数学函数
    int main()       //定义main函数
    {       
        double x1,y1;   //定义第一个点的坐标(x1,y1)    
        double x2,y2;   //定义第二个点的坐标(x2,y2)
        double d;    
        scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);    
        d= sqrt(pow(x2-x1,2)+pow(y2-y1,2));    
        printf("%g",d);        
        return 0;
    }

    在此,pow函数巧妙地显示出了横坐标与纵坐标差的平方,更加浅显易懂。

    Third
    最后一题介绍拆分三位整数。
    输入一个三位数 x,分别求出 x 的个位数字,十位数字,百位数字的值。
    在此,大家一定要搞清楚算数运算符的特点,算数运算符包括 + 、 - 、 * 、 / 、% ,其运算顺序是从左至右。
    % 运算符是取余运算,在 C 语言中,要求两个操作数必须为整数,否则,不同的编译器会得不同结果。
    1.int a = 13 % 7;
    2.int b = 13.0 / 7;
    3.printf("%d \n",a);
    4.printf("%f",b);
    结果分别为
    1.6 // 计算结果表示为 13 除以 7 余 6
    2.1.857143 //表示做除法运算
    一定不要搞混淆了!!!
    想要结果为 1.5 ,则在编写程序时需写成 3.0/2 ,而不是3/2!!!

    编程要求
    获取指定三位数 x,并输出 x 的个位数字,十位数字,百位数字的值,输出的每个值用一个空格隔开。
    测试输入:123
    预期输出:3 2 1

    测试输入:724
    预期输出:4 2 7

    #include <stdio.h>//定义main函数
    int main()
    {         
        int a,ge,shi,bai;    
        scanf("%d",&a);    
        ge=a%10;    
        shi=(a/10)%10;    
        bai=a/100;    
        printf("%d %d %d",ge,shi,bai);       
        return 0;
    }

    简单来说:
    % 取余
    / 取整
    如此一来,就非常好理解了。

    展开全文
  • 实例介绍UML顺序图使用

    千次阅读 2015-03-25 06:32:51
    UML顺序图你是否熟悉,本文向大家简单介绍一下,顺序图表示了随时间安排的一系列消息。每个分类角色显示为一条生命线,代表整个交互期间上的角色。 UML顺序图和协作图均显示了交互,但它们强调了不同...

    UML顺序图你是否熟悉,本文向大家简单介绍一下,顺序图表示了随时间安排的一系列消息。每个分类角色显示为一条生命线,代表整个交互期间上的角色。

    UML顺序图和协作图均显示了交互,但它们强调了不同的方面。顺序图显示了时间顺序,但角色间的关系是隐式的。协作图表现了角色之间的关系,并将消息关联至关系,但时间顺序由于用顺序号表达,并不十分明显。每一种图应根据主要的关注焦点而使用。

    UML顺序图

    顺序图表示了随时间安排的一系列消息。每个分类角色显示为一条生命线,代表整个交互期间上的角色。消息则显示为生命线之间的箭头。顺序图可以表达场景,即一项事务的特定历史。

    UML顺序图以二维图表来显示交互。纵向是时间轴,时间自上而下。横向显示了代表协作中单个对象的分类角色。每个对象用方框表示,对象的名字在方框内部,并在名字的下方加下划线。每个分类角色表现为垂直列-生命线。在角色存在的时间内,生命线显示为虚线;在角色的过程激活时间内,生命线显示为双线。

    消息显示为从一个角色生命线出发至另一个角色生命线的箭头,箭头用从上而下来的时间顺序来安排。UML顺序图的一个用途是显示用例的行为序列。当行为被实现时,每个顺序图中的消息同对象的操作或状态机中迁移上的事件触发相一致。

    图4表示处理请求用例的UML顺序图。图中五个方框分别表示五个对象:ProcessMonitor、EngineManager、Engine、EntactmentDB、Logfiles。这个用例是由ProcessMonitor接收用户操作,再将这些操作转换成固定的请求,发送给引擎执行而产生的。

    当ProcessMonitor接收到用户在界面上所作的操作后,将这些操作转换为固定的命令请求,发送给EngineManager。EngineManager再根据接收到命令的类别,将命令分发给不同的Engine。Engine则具体执行相应的命令。Engine执行完命令后,通知EntactmentDB修改相应的数据。接下来,Engine再通知Logfiles将所作的操作记录下来,以供以后查询。最后,Engine直接将结果返回给ProcessMonitor,由ProcessMonitor将结果包装,显示给用户。

    转载:http://developer.51cto.com/art/201007/208966.htm

    展开全文
  • 采用顺序存储结构的栈称为顺序栈,与顺序表一样,可以用数组存储顺序栈中的元素,同时增加一个栈顶指针top,指向栈顶元素。当top=0时表示空栈。  当栈中元素已经有StackSize个时,称为栈满。如果继续进行入栈...

            栈(stack)是一种操作受限的线性表。栈除了具有线性表的结构特点:除了第一个元素和最后一个元素外,其他元素只有一个前驱元素和一个后继元素。栈的限制在于它只允许在表的一端进行插入和删除运算。在日常生活中,有许多栈的例子,进制转换、表达式求值、括号匹配使用等都是栈的“后进先出”设计思想。

    【定义】

            栈(stack),也叫堆栈,它是限定仅在表尾进行插入和删除操作的线性表。对于栈来说,表尾(允许操作的一端)称为栈顶(top),另一端称为栈低(bottom)。栈顶是动态变换的,它是由一个称为栈顶指针(top)的变量指针指示。当表中没有元素时,称为空栈。
            栈的插入操作称为入栈或进栈,删除操作称为出栈或退栈。

            在栈S=(a1,a2,...,an)中,a1称为栈底元素,an称为栈顶元素,由栈顶指针top指示。栈中的元素按照a1,a2,...,an的顺序入栈,当前的栈顶元素为an。如图所示。

            按照存储方式,可以将栈分为顺序栈和链式栈。采用顺序存储结构的栈称为顺序栈,与顺序表一样,可以用数组存储顺序栈中的元素,同时增加一个栈顶指针top,指向栈顶元素。当top=0时表示空栈。

            当栈中元素已经有StackSize个时,称为栈满。如果继续进行入栈操作会产生溢出,则称为上溢。对空栈进行出栈操作,称为下溢。

    【特点】

           栈是一种后进先出(Last In First Out, LIFO)的线性表。最先入栈的元素一定位于栈低,最后入栈的元素一定成为栈顶。每次删除的元素是栈顶元素,也就是最后入栈的元素。

    【存储结构】

    #define StackSize 100
    typedef struct
    {
          DataType stack[StackSize];
          int top;
    }SeqStack;

    【操作】

    void InitStack(SeqStack *S)
    /*初始化栈*/
    {
    	S->top = 0;
    }
    int StackEmpty(SeqStack S)
    /*判断是否为空*/
    {
    	if (S.top==0)
    	{
    		return 1;
    	}
    	else
    	{
    		return 0;
    	}
    }
    int GetTop(SeqStack S,DataType *e)
    /*取栈顶元素*/
    {
    	if (S.top<=0)
    	{
    		cout << "栈已经空了!" << endl;
    		return 0;
    	}
    	else
    	{
    		*e = S.stack[S.top - 1];
    		return 1;
    	}
    }
    int PushStack(SeqStack *S,DataType e)
    /*将元素e入栈*/
    {
    	if (S->top>=StackSize)
    	{
    		cout << "栈已经满,不能讲元素入栈!" << endl;
    		return 0;
    	}
    	else
    	{
    		S->stack[S->top] = e;
    		S->top++;
    		return 1;
    	}
    }
    
    int PopStack(SeqStack *S, DataType *e)
    /*将栈顶元素出栈,赋值给e*/
    {
    	if (S->top==0)
    	{
    		cout << "栈中已经没有元素,不能进行出栈操作!" << endl;
    		return 0;
    	}
    	else
    	{
    		S->top--;
    		*e = S->stack[S->top];
    		return 1;
    	}
    }
    int StackLength(SeqStack S)
    /*求栈的长度*/
    {
    	return S.top;
    }
    
    void ClearStack(SeqStack *S)
    /*清空栈*/
    {
    	S->top = 0;
    }

     

    展开全文
  • 【查找算法】顺序查找法

    千次阅读 2020-02-20 15:30:28
    学到这里,相信大家对基本的数据结构都有了一定的认识,当然,我们还有一些...本篇文章将介绍顺序查找算法。 文章目录何为顺序查找?算法改进时间效率分析 何为顺序查找? 看到这个算法的名字不难理解,它是一种按...

    学到这里,相信大家对基本的数据结构都有了一定的认识,当然,我们还有一些数据结构没有讲解,比如:图、广义表、数组等。这些内容我都会在后续进行更新。

    不过这段时间,我主要还是先介绍一下查找和排序算法,在这些算法中如果涉及到还未介绍的数据结构,我就会对该数据结构进行介绍。

    本篇文章将介绍顺序查找算法。

    何为顺序查找?

    看到这个算法的名字不难理解,它是一种按照序列原有顺序对数组进行遍历比较查询的基本查找算法。

    该算法其实非常简单,大家肯定都会写,若是想查找一个序列中的某个元素值,我们只需遍历该序列,依次与序列中的每一个元素进行比较即可。

    先来构造一个查找表:

    #include <stdio.h>
    #include <malloc.h>
    
    #define LENGTH 10
    
    typedef struct{
    	int key;	//数据域
    	//...还可以指定数据的其它信息
    }ElemType;
    
    typedef struct{
    	ElemType *elem;
    	int length;
    }SSTable;
    
    SSTable CreateTable(){
    	SSTable st;
    	st.length = LENGTH;
    	st.elem = (ElemType*) malloc(sizeof(ElemType) * (LENGTH + 1));
    
    	//为元素赋值
    	st.elem[1].key = 1;
    	st.elem[2].key = 2;
    	st.elem[3].key = 3;
    	st.elem[4].key = 4;
    	st.elem[5].key = 5;
    	st.elem[6].key = 6;
    	st.elem[7].key = 7;
    	st.elem[8].key = 8;
    	st.elem[9].key = 9;
    	st.elem[10].key = 10;
    
    	return st;
    }
    

    数组的元素值我就直接写死了,大家也可以利用循环来自己输入。

    对于初学者,这里的很多地方他们可能会有些疑惑,比如:为什么在申请内存的时候要多申请一个空间;在为数组赋值的时候为什么从下标为1的位置开始,这些我都放到后面解释。

    先来看看查找算法的实现:

    //顺序查找算法
    int SequentialSearch(SSTable st,int key){
    	int i;
    	for(i = 1;i <= st.length;++i){
    		if(st.elem[i].key == key){
    			return i;
    		}
    	}
    	return 0;
    }
    

    算法非常简单,遍历依次比较即可,若找到则直接返回当前下标;若没找到,则返回0。

    算法改进

    刚才虽然实现了顺序查找算法,但有些欠缺,因为每次循环都需要进行两次比较:比较下标是否越界;比较当前值是否等于待查找值。

    当数据量非常庞大的时候,显然效率就比较低下了,那么有没有一种办法能够让它只比较一次就能够实现查找呢?这就是刚才为什么要多申请一个内存空间的原因了。

    原数组中共有10个有效元素,但是在申请空间时要去申请11个内存空间,并且赋值要从下标为1的位置开始,目的就是空出下标为0的位置,如下图:
    在这里插入图片描述
    空出这个位置做什么呢?做一个监视哨,即:这个下标为0的位置要起一个哨兵的作用,举个例子:

    我现在要查找值为8的元素,那么在查找开始之前,我先将元素值8放入下标为0的位置作为哨兵:
    在这里插入图片描述
    此时查找就很容易了,同样地,先遍历序列,但是无需比较下标是否越界了,我们直接让当前元素值与哨兵进行比较,若找到,则返回当前下标;
    若当前序列中没有哨兵位置的元素值,则从下标为1开始到最后一个元素都将找不到待查找元素,此时一定会在哨兵位置找到,这个时候也直接返回当前下标即可,0则代表未找到。

    带哨兵的顺序查找算法实现如下:

    //带哨兵的顺序查找算法
    int SequentialSearch(SSTable st,int key){
    	int i;
    	//设置哨兵
    	st.elem[0].key = key;
    	for(i = st.length;st.elem[i].key != key;--i);
    	return i;
    }
    

    记得从数组最后一个元素开始遍历,这样如果在哨兵位置遍历结束,就证明查找失败。

    时间效率分析

    下面来分析一下带哨兵的顺序查找算法的时间效率。

    在这里插入图片描述
    若要在该序列中查找值为10的元素,则只需进行一次比较就查找到了;
    若要在该序列中查找值为9的元素,则需进行两次比较才能找到,以此类推。

    查找次数是受查找的值影响的,若要查找第i个元素,则需比较length + 1 - i次;查找失败则需比较length + 1次。

    假设表中各记录的查找概率相同,则其查找的平均查找长度为:
    ASLs=(1+2+...+length)/length=(n+1)/2ASL_s = (1 + 2 + ... + length) / length = (n + 1) / 2
    则其时间复杂度为O(n)。

    顺序查找算法的优点是:

    算法简单,逻辑次序无要求,且不同存储结构均适用

    缺点:

    平均查找长度太长,时间效率太低

    展开全文
  • Java中类的加载顺序介绍(ClassLoader)

    万次阅读 多人点赞 2018-06-02 10:05:37
    Java中类的加载顺序介绍(ClassLoader)1、ClassNotFoundExcetpion 我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题。对于这个异常,它实质涉及到了java技术体系中...
  • 1.select 语句的语法顺序(数字为执行顺序) 5. select [字段列表] 1.from [表名] 2. where [条件] 3.group by [列] 4. having [筛选条件] 6.order by [列] 注: order by可以跟列的别名,其他子句不可以...
  • SQL各子句介绍以及执行顺序

    千次阅读 2019-05-12 22:03:33
    各个子句执行顺序 有如下代码: select sex , count ( sex ) total from student where name like '%' group by sex order by total 此处SQL语句执行过程为,首先筛选出符合where子句的...
  • 循环顺序队列介绍及其C++实现

    千次阅读 2016-11-27 13:10:42
    循环队列的介绍及C++实现方法
  • 存在两种字节顺序:NBO与HBO网络字节顺序NBO(Network Byte Order): 按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。主机字节顺序(HBO,Host Byte Order): 不同的机器HBO不相同,...
  • 本篇文章主要是对jsp页面中的代码执行加载顺序进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1. java是在服务器端运行的代码,jsp在服务器的servlet里运行,而javascript和html都是...
  • 今天为大家分享一篇对vue里函数的调用顺序介绍,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 method用来定义方法的,比如你@click=”test”,methods就...
  • 1,什么是顺序容器(sequential container) 所有容器中存储的元素都必须是同一类型的。 顺序容器是根据位置来存储和访问元素的。顺序容器中元素的排列次序与元素值无关,而是由元素添加到容器中的次序决定。 标准库...
  • DedeCms 文件加载顺序原理介绍

    千次阅读 2014-09-21 20:12:43
    DedeCms 织梦cms中文件加载和解析
  • BodyTagSupport的执行顺序介绍

    千次阅读 2007-09-15 14:43:00
    package servlet;import javax.servlet.jsp.tagext.*;import java.util.Date;import java.io.*;import java.io.EOFException;import javax.servlet.jsp.JspTagException;import javax.servlet.jsp.JspWriter;...
  • 介绍C++中的顺序容器以及优缺点

    千次阅读 2019-04-13 11:52:20
    顺序容器的类型: 使用string和vector优点:由于其元素是连续存储的,所以可以通过元素的下标来实现快速访问。缺点:在这两种容器中插入和删除元素很费时,原因是在一次插入或删除操作时,需要移动插入/删除位置...
  • 欢乐云学堂第八期•开课啦•开课啦,开课啦!...介绍礼仪的基本规范介绍的类型介绍是社交场合中相互了解的基本方法。通过介绍,可以缩短人们之间的距离,以便更好地交谈、更多地沟通和更深入地了解。在日常生...
  • 线性表:顺序队列算法实现

    千次阅读 2018-02-25 22:47:34
    顺序队列介绍顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表。我们知道队列是一种先将先出的数据结构,它是一种受限制的线性表,我们的顺序队列是一种队列,采用的是顺序存储结构。与其对应的是...
  • python系列3—顺序结构和分支结构

    千次阅读 2020-06-06 18:11:08
    顺序结构介绍 顺序结构是代码执行的基础,在同一个代码块中,代码自上而下按顺序执行,这种顺序就被称为顺序结构。 案例: 运行代码时会发现先输出hello world,然后等待用户输入,最后输出用户输入的内容。这个...
  • 但是为了方便,在这里介绍顺序、条件、循环结构时,不刻意强调是由pipeline组成,依旧以命令(command)视为基本单元 顺序结构 用;分隔的顺序结构 $ command1;command2 以;分隔的命令按顺序执行。 Shell会依次等待每...
  • 本文详细介绍了Java内存模型、顺序一致性内存模型、原始的happens-before内存模型三者之间的区别和联系。
  • 中包含了多种建模图,一般按照如下顺序使用:   1. BPM (Business Process Model): 业务处理模型。   主要用于需求分析阶段,要任务是理清系统的功能。BPM 用于从业务人员的角度对业务逻辑和规则进行详细...
  • 目录线性表介绍顺序表介绍Java->顺序表APIJava->顺序表代码 线性表介绍 数据结构中的线性存储结构分为两大类:顺序存储和链式存储,顺序存储对应的是顺序表,链式存储对应的是链表。这篇文章主要介绍如何使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,234
精华内容 12,493
热门标签
关键字:

介绍顺序