山东大学

山东大学《c++程序设计》lab3

天大地大妈咪最大 提交于 2020-01-23 03:04:20
实验目的: 熟悉c++的指针、引用,运算符new和delete。 熟悉c++的类和对象。 实验步骤与内容: 1、在main函数中接受从键盘输入的3个整数,调用下面的三个函数进行排序,然后输出排序后的结果。 实现函数sort1(int x, int y, int z),sort2(int *px, int *py, int * pz),sort3(int &x, int &y, int &z), 分别采用传值、传指针、传引用的方式接受参数,对三个整数按照从小到大顺序排序,输出排序后的结果。 分析三种传递参数的方式有什么不同,在main函数中哪种方式能正确地得到排序后的结果? # include <iostream> using namespace std ; //传值 void sort1 ( int a , int b , int c ) { //sort(&x,&y,&z); int temp ; if ( a > b ) { temp = a ; a = b ; b = temp ; } if ( a > c ) { temp = a ; a = c ; c = temp ; } if ( b > c ) { temp = b ; b = c ; c = temp ; } printf ( "这3个整数从小到大排列是:%d<%d<%d\n" , a , b , c ) ; }

山东大学《数据结构》实验二:排序算法

China☆狼群 提交于 2020-01-14 22:00:11
实验二 排序算法 一、实验目的 掌握各种排序方法的实现思想。 二、 实验内容 1、输入 2-20 个不为零的正整数,遇到 0 代表输入结束,0 不参与排序。 2、数字选择排序方法,1-冒泡排序,2-插入排序,3-基数排序 3、基数排序能够仅仅实现小于 10 的正整数的排序。有大于 9 的输入时, 直接输出 0。 4、使用所选排序方法的排序,结果输出所用方法以及结果,每个数之间 用“,”隔开,中间不要有空格。 5、输入输出请严格按下面要求的格式实现,不能少任何一行文字。 代码如下: # include <iostream> # include <cstdio> # include <stdlib.h> # include <string.h> using namespace std ; void swap ( int & a , int & b ) { int t = a ; a = b ; b = t ; } void bubble ( int a [ ] , int n ) { //冒泡排序方法 for ( int i = 0 ; i < n - 1 ; i ++ ) { for ( int j = 0 ; j < n - i - 1 ; j ++ ) { if ( a [ j ] > a [ j + 1 ] ) swap ( a [ j ] , a [ j + 1 ] ) ;

山东大学编译原理2019-2020期末考试题目

丶灬走出姿态 提交于 2019-12-26 01:15:23
一、五个小题(25分) 1.判断一个文法是否二义 2.编译的前端,后端,什么是一遍扫描 3.什么是S属性 4.什么是语法制导翻译 5.在语法制导翻译中,空返产生式的作用(M->e) 二、自动机(15分) 一个单词表由a,b组成,请写出代表偶数个a的正规式,NFA,并确定化、最小化 三、判断一个文法是不是LL(1)的,如果是就写出预测分析表,不是就说明原因(15分) 四、判断一个文法是不是SLR(1)的,如果是就写出预测分析表,不是就说明原因(15分) 五、中间代码生成程序(15分) while a<c and b<d do if c==1 then c:=c+1 else c:=c+2; 六、代码优化(15分) DAG优化,最后写出四元式的形式(这个是一个坑,四元式是目标代码,也就是此时要做目标代码生成) 同时目标代码生成要列表(Rvalue 寄存器描述,Avalue地址描述) 来源: CSDN 作者: LifeMaker 链接: https://blog.csdn.net/qq_41207620/article/details/103704226