西南交大c实验报告
- 格式:doc
- 大小:112.50 KB
- 文档页数:7
实验十指针应用●实验目的掌握指针的概念,会定义和使用指针变量;学会使用数组的指针和指向数组的指针变量;学会使用字符串的指针和指向字符串的指针变量;学会使用指向函数的指针变量;了解指向指针的指针的概念及其使用方法。
●实验步骤进入编程环境;按照题目要求编写程序,自行调试使程序可以正确运行,按照实验指导教师的要求检查。
●实验内容1.输入N个英文单词,建立字符串数组,按字典顺序输出这些英文单词。
1.要求用指针。
自己编写的源程序:#include"stdafx.h"#include<iostream>int main(){char word[50][50];int num = 0;printf("请输入单词数量:");scanf("%d", &num);printf("请输入%d个单词:", num);for (int i = 0; i < num; i++){scanf("%s", word[i]);}char temp[50];for (int i = 0; i < num; i++){for (int j = 0; j < i; j++){if (strcmp(word[i], word[j]) < 0){strcpy(temp, word[j]);strcpy(word[j], word[i]);strcpy(word[i], temp);}}}for (int i = 0; i < 5; i++){printf("%s ", word[i]);}printf("\n");return 0;}2.输入一个字符串,不另开辟字符串存储空间,实现字符串逆序存储并输出。
自己编写的源程序:#include"stdafx.h"#include<iostream>int main(){char str[50];printf("请输入原字符串:");scanf("%s", str);for (int i = strlen(str) - 1; i >= strlen(str) / 2; i--){char temp = '0';temp = str[i];str[i] = str[strlen(str) - 1 - i];str[strlen(str) - 1 - i] = temp;}printf("逆向输出结果为:");for (int i = 0; i < strlen(str); i++){printf("%c", str[i]);}printf("\n");return 0;}3.任意输入5个学生姓名的拼音,然后存入一个2维的字符数组中,按照字符表先后顺序输出这5个同学的姓名。
实验__9__实验报告教学班级:02 学生学号:学生姓名:实验日期:2014/5/.23 实验地点:7308 (机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.熟练指针变量的使用,了解其编程技巧;2.熟练指针变量做函数参数,了解其传递过程;3.熟练指向数组元素的指针,了解指针引用数组元素的编程技巧。
二、实验任务1. 使用指针法在的一组数据中,找出其中最小值所在的位置并输出。
2. 使用指针法对一维数组a中的数据按升序排列。
三、实验结果(算法设计流程图+源程序+ 注释)1.#include<iostream>#include<iomanip>using namespace std;void main(){int a[50],i,*p,n,min;cout<<"请输入这组数据的个数:"<<endl;cin>>n;cout<<"请输入这组数据:"<<endl;for(i=0;i<n;i++)cin>>a[i];p=a;min=*p;for(i=1;i<n;i++)*p++;if(*p<min)min=*p;p=&min;cout<<"这组数据的最小值为:"<<min<<endl;cout<<min<<"所在的位置为a"<<p<<endl;system("pause");}2. #include<iostream>using namespace std;void main(){ int a[5];int i,*p,t;cout<<"请?输º?入¨?数ºy组Á¨¦:"<<endl;for(i = 0;i<5;i++){ cin>>a[i];}cout<<"按ã¡ä升¦y序¨°排?列¢D的Ì?数ºy组Á¨¦如¨?下?:êo"<<endl; p = a;for(i = 0;i<5;i++){ if(*p>*(p+1)){t = *p;*p = *(p+1);*(p+1) = t; }}for(i = 0;i<5;i++){cout<<a[i]<<endl; }system("pause");}#include<iostream>#include<iomanip>using namespace std;void main(){ int a[20],i,j,t,n,*p;cout<<"请?输º?入¨?数ºy的Ì?个?数ºy:êo"<<endl; cin>>n;cout<<"请?输º?入¨?"<<n<<"个?整?数ºy:êo"<<endl; for(p=a;p<a+n;p++)cin>>*p;p=a;for(i=0;i<n-1;i++)for(j=i;j<n;j++)if(*(p+i)<*(p+j)){t=*(p+i);*(p+i)=*(p+j);*(p+j)=t;}cout<<"排?序¨°后¨®为a:êo"<<endl;for(j=0;j<n;j++)cout<<*(p+j)<<" ";cout<<endl;system("pause");}。
编译原理课程设计C语言词法分析器语法分析器姓名:某某某学号:班级:软件一班学院:信息科学与技术学院2014年11月17日目录1C语言词法分析器的设计 (3)1.1实验目的 (3)1.2实验要求 (3)1.3实验环境 (3)1.4实现分析 (3)1.4.1词法分析的理论构架 (3)1.4.2程序入口设计 (4)1.4.3程序执行中的流程 (4)1.4.4程序的出口设计 (5)1.5源代码 (5)1.6结果分析 (8)1.7收获与体会 (11)2语法分析器 (12)2.1实验目的 (12)2.2实验要求 (12)2.3实验环境 (12)2.4实现分析 (12)2.4.1LL(1)分析方法的思想 (12)2.4.2程序的入口分析 (12)2.4.3程序运行的流程 (13)2.4.4程序的出口设计 (14)2.5源代码 (14)2.6结果分析 (27)2.7收获与体会 (30)参考文献: (31)1C语言词法分析器的设计1.1实验目的通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。
1.2实验要求所编写的词法分析器要能对最基本的C语言程序进行词法分析。
1.3实验环境1.Windows 7操作系统2.华硕笔记本,内存4G,处理器i53.装有Microsoft Visual Studio 2010,并安装framework4.01.4实现分析1.4.1词法分析的理论构架词法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。
单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等(1)C语言的关键字经过搜索共有32个,是由程序语言定义的具有固定意义的标识符。
我编写的词法分析器只将其中的一部分常用的定义在程序中,他们有"break","case","char","const","continue","default","do","double","else","enun","extern","float","for","goto","if","int","long","return","static","struct","switch","sizeof","typedef","union","unsigned","void","volatile","while"而对于C语言的一些保留字如“main”、“return”等我没有将其放入关键字的范围内。
操作系统实验报告指导教师:胡晓鹏实验报告一实验名称:Linux操作系统下的C语言编程实验目的:1.认识Linux系统,熟悉Linux操作系统的基本操作;2.了解vi命令的基本用法,能够使用vi命令对文件进行基础的操作与编辑;3.能够在Linux环境下编写C语言程序,生成.out文件,并成功执行;4.体会Linux环境下编程与Windows环境下编程的异同,加深对Linux操作系统的理解。
实验内容:熟悉Linux环境,编写简单C语言程序。
实验结果:实验结论:在Linux操作系统下的编程环境不同于Windows,编译器进行命令编译。
操作环境简洁,大多以键盘操作。
实验报告二实验名称:基于进程与线程的并发实验目的:1.了解进程与线程工作原理,掌握并发机制,学会编写简单的并发程序。
2.充分理解并掌握基于进程与线程的并发。
实验内容:在Linux环境进行基于进程与线程编写实验程序。
试验核心代码:int main(){ pthread_t tid[N];pid_t pid;pid=fork();if(pid<0){ printf("fail to fork\n");exit(1);}else if(pid==0){ printf("the child process:\n");}else{ sleep(10);printf("the parent process:\n");}void *res;int err[3];err[0]=pthread_create(&tid[0],NULL,fn1,NULL);err[1]=pthread_create(&tid[1],NULL,fn2,NULL);err[2]=pthread_create(&tid[2],NULL,fn3,NULL);int i;for(i=0;i<N;i++){if(err[i]= pthread_join(tid[i],&res)!=0) { printf("cannot join the thread %d\n",i); exit(1);}}return 0;}void *fn1(void *arg){printf("the first thread is done\n");return (void *)1;}void *fn2(void *arg){printf("the second thread is done\n"); // sleep(1);return (void *)1;}void *fn3(void *arg){printf("the third thread is done\n");// sleep(2);return (void *)1;}实验结果:实验结论:进程与线程之间的关系为线程离不开进程,线程在多任务系统的作用使计算机高校工作,同时下创建进程是应尽量避免进程的出现。
实验__2__实验报告教学班级:___ 学生学号:_________ 学生姓名:___________实验日期:_________ 实验地点:指导教师签名:__________ 实验成绩:___________一、实验目的1. 掌握顺序结构的编程思路和方法;2. 掌握格式输入输出和数据类型转换。
二、实验任务1.给朋友打印生日卡,生日卡格式输入:====================================My dear Zhang,Happy birthday to you!yours,Li====================================要求你的名字和你朋友的名字均由键盘输入,在输入名字时请给出提示信息。
2.已知赵六同学学号20110101111,他期末参加了高等数学、普通物理、大学英语三门课程期末考试。
编程实现:键盘输入学生的学号、以及各科的成绩,计算平均成绩。
输入输出格式参见下图。
要求:⑴学号作为一个整数而言,超出了int所定义的变量的存储范围,因此只能double 型变量来存储,但输出时要求看见的是整数形式的学号。
⑵输出对齐,成绩保留2位小数。
3.键盘输入一个小写字母,将其转换成大写字母,并输出它们的ASCII码值及其原字符。
4.计算万有引力。
由普通物理知, 两个质量分别为m1和m2的物体之间的万有引力F与两个物体质量的乘积成正比, 与两个物体质心之间的距离R的平方成反比:式中G为引力常数,如果F的单位为牛顿(N),质量的单位为千克(kg),物体质心的距离单位为米(m),则,已知太阳的质量为千克,地球的质量为kg,太阳与地球的距离为m,请计算太阳与地球之间的万有引力。
5.加法器键盘输入两个数,计算这两个数的和,并输出结果。
三、实验结果(源程序+ 注释)1.//给朋友打印生日卡,要求你的名字和你朋友的名字均由键盘输入,在输入名字时请给出提示信息。
#include<iostream>#include<string>using namespace std;int main(void){ string name1; //定义变量name1 string name2; //定义变量name2cout<<"学号:"<<endl;cout<<"请输入你的名字:"<<endl;cin>>name1; //将输入的名字赋值给name1 cout<<"请输入你朋友的名字:"<<endl;cin>>name2; //将输入的名字赋值给name2cout<<"===================================="<<endl;cout<<" My dear "<<name2<<endl;cout<<" Happy birthday to you!"<<endl;cout<<" yours,"<<endl;cout<<" "<<name1<<endl;cout<<"===================================="<<endl;return 0;}2. //键盘输入学生的学号以及各科的成绩,计算平均成绩。
实验__8__实验报告教学班级:02 学生学号:学生姓名:实验日期:2014.5.14 实验地点:X7308(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法。
二、实验任务1. 使用插入排序法将键盘输入的无序数列按升序排列。
思路分析与算法:1)从第一个元素开始,该元素可以认为已经被排序。
2)取出下一个元素,在已经排序的元素序列中从后向前扫描。
3)如果该元素(已排序)大于新元素,将该元素移到下一位置。
4)重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。
5)将新元素插入到该位置中。
6)重复步骤2。
2.选举猴王问题:N 只猴子围成一圈,顺序编号1至N。
从编号为1的猴子开始依次报数,报数m 的猴子就退出圈子,接着再报,报数m 的猴子再退出圈子,依次继续下去,圈子最后所剩的一只猴子为猴王,它原先的编号是几?思路分析与算法:1)使用一维数组存放猴子从1到n的编号,定义参加选举猴王的最多猴子数为40。
2)i为每次循环时计数变量,k为按1,2,3,…m报数时的计数变量,t表示退出的猴子数。
依次将退出的猴子对应的数组元素置0,直到只剩下一只猴子。
3)找出数组中不为0的a[i],输出该数。
三、实验结果(源程序+ 注释)1.#include<iostream>using namespace std;void main (){const int M=20;int a[M],n,temp,i,k;cout<<"输入将要排序的有几个数:"<<endl; cin>>n;cout<<"输入将要排序的数分别为a:"<<endl; for(i=0;i<n;i++)cin>>a[i];for(i=1;i<n;i++){ k=i; temp=a[i];while(k>0&&temp<a[k-1]){a[k]=a[k-1]; k--; }a[k]=temp;}for(i=0;i<n;i++)cout<<a[i]<<" ";system("pause");}2.#include"stdafx.h"#include<iostream>using namespace std;void main(){ int const N=100;int n;int m;int a[N]; int i,k,t;cout<<"请输入参加选举的猴子数目:"; cin>>n;cout<<"输入报数到就退出:";cin>>m;for(i=0;i<n;i++)a[i]=i+1;i=0;k=0;t=0;while(t<n-1){if (a[i]!=0) k++;if(k==m){a[i]=0;k=0;t++;}i++;if(i==n)i=0; }i=0;while(a[i]==0) i++;cout<<"剩下第<<a[i]<<"个猴子<<endl;system("pause");}。
实验__3__实验报告教学班级:________ 学生学号:_________ 学生姓名:__________ 实验日期:________ 实验地点:指导教师签名:__________ 实验成绩:___________一、实验目的1. 掌握if 语句(即某些操作只有在特定条件成立的情况下才会被执行)的编程思路和方法;2. 掌握if-else 语句(即在某个条件成立时执行一种操作,条件不成立时执行另一种操作)的使用方法。
二、实验任务1. 使用if 语句编程求解两个数中的最大值。
2. 键盘输入一个数,判定:能不能被7整除,并如果失败输出失败的具体原因。
3. 已知一个函数⎩⎨⎧+<<=-=(其他)2)101(53x x x y ,输入x 的值,求解并输出相应的y 值。
4. 李X 购买一批打印纸,若一次性购买100包以下,每包20元;若一次性购买100包以上(包含100包),则每包16元,编写程序,计算李X 购买N 包打印机需要多少钱?5. 个税计算问题。
根据国家的纳税政策,个人应税起征点为月收入3500元;不超过起征点1500元的(即月收入超过3500元,但未超过5000元),超过部分按3%交纳个人所得税;超过起征点1500至4500元的,超过部分按10%交纳个人所得税;应税月收入超过起征点4500至9000元,超过部分按20%交纳个人所得税。
编写一个程序,输入某人的应税月收入,计算并输出纳税后的实际收入说明:本实验暂不计算月收入“3500+9000”以上的情况。
三、实验结果(源程序+ 注释)1、//使用if语句编程求解两个数中的最大值。
#include<iostream>using namespace std;void main(){cout<<"学号:"<<endl;double a,b,max;cout<<"input a,b:";cin>>a>>b;if (a>b)max=a;else max=b;cout<<"max="<<max<<endl;}2、//键盘输入一个数,判定:能不能被7整除y,并如果失败输出失败的具体原因。
实验__1__实验报告教学班级:_______ 学生学号:__________ 学生姓名:___________ 实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.熟悉C++程序的集成开发环境;2.学习新建和打开控制台应用程序的方法;3.掌握控制计算机输入与输出基本方法。
二、实验任务1.编程实现:屏幕输出一颗“爱心”,显示在屏幕上的点阵布局如图所示。
2.编程实现:屏幕输出一头威武雄壮的雄狮。
,%%%%%%,%%/\%%%%/\%,%%%\c "" J/%%%%. %%%%/ o o \%%%`%%. %%%% _ |%%`%% `%%%%(__Y__)%// ;%%%%`\-/%%%'(( / `%%%%%%%'\\ .' |\\ / \ | |\\/ ) | |\ /_ | |__(___________)))))))提示:雄狮图案中的符号“\”如果不能正常输出,改为“\\”即可。
这是为什么?请参考教材P26转义字符解惑。
三、实验结果(要求:(1)提供源程序;(2)源程序包含必要的注释,包括:在程序头部给出本程序功能的注释、所定义变量的用途注释、程序块的功能注释、子函数的功能注释等;(3)运行结果的窗口截图,程序运行结果中输出的第一行内容必须为:程序作者的学号和姓名。
)1.2.错误的写法:#include<iostream>using namespace std;void main( ){cout<<" ,%%%%%%"<<endl;cout<<" ,%%/\%%%%/\%"<<endl;cout<<" ,%%%\c "" J/%%%"<<endl;cout<<" %. %%%%/ o o \%%%"<<endl;cout<<" `%%. %%%% _ |%%"<<endl;cout<<" `%% `%%%%(__Y__)%"<<endl;cout<<" // ;%%%%`\-/%%%'"<<endl;cout<<" (( / `%%%%%%%'"<<endl;cout<<" \\ .' |"<<endl;cout<<" \\ / \ | |"<<endl;cout<<" \\/ ) | |"<<endl;cout<<" \ /_ | |__"<<endl;cout<<" (___________)))))))"<<endl;}正确的写法:#include<iostream>using namespace std;void main( ){cout<<" ,%%%%%%"<<endl;cout<<" ,%%%\c "" J/%%%"<<endl;cout<<" %. %%%%/ o o \%%%"<<endl;cout<<" `%%. %%%% _ |%%"<<endl;cout<<" `%% `%%%%(__Y__)%"<<endl;cout<<" // ;%%%%`\-/%%%'"<<endl;cout<<" (( / `%%%%%%%'"<<endl;cout<<" \\\\ .' |"<<endl;cout<<" \\\\ / \ | |"<<endl;cout<<" \\\\/ ) | |"<<endl;cout<<" \\ /_ | |__"<<endl;cout<<" (___________)))))))"<<endl;}或者:#include<iostream>using namespace std;void main( ){cout<<" ,%%%%%%"<<endl;cout<<" ,%%/\%%%%/\%"<<endl;cout<<" ,%%%\c "" J/%%%"<<endl;cout<<" %. %%%%/ o o \%%%"<<endl;cout<<" `%%. %%%% _ |%%"<<endl;cout<<" `%% `%%%%(__Y__)%"<<endl;cout<<" // ;%%%%`\-/%%%'"<<endl;cout<<" "<<'\\'<<'\\'<<" .' |"<<endl;cout<<" "<<'\\'<<'\\'<<" / \ | |"<<endl;cout<<" "<<'\\'<<'\\'<<"/ ) | |"<<endl;cout<<" "<<'\\'<<" /_ | |__"<<endl;cout<<" (___________)))))))"<<endl;}实验__2__实验任务1. 键盘输入某台计算机的编号和该计算机的价格,并输出这些信息。
西南交大实验报告西南交大实验报告引言:西南交通大学是中国著名的综合性大学之一,以交通运输为特色,涵盖了工、理、管、文、法、经、教育等多个学科领域。
本实验报告将着重介绍西南交大的实验教学体系以及实验室设施,以展示该校在培养学生实践能力和创新精神方面的努力。
一、实验教学体系西南交大以实验教学为核心,注重培养学生的实践能力和创新精神。
学校建立了一套完善的实验教学体系,包括实验教学计划、实验教材、实验教学方法和实验评价体系等。
实验教学计划根据不同专业的要求,为学生安排了一系列的实验课程,涵盖了理论知识的应用和实践技能的培养。
实验教材则精心编写,内容丰富,既有基础实验,也有前沿实验,能够满足学生的学习需求。
实验教学方法灵活多样,结合了讲授、实践、讨论等多种形式,让学生能够全面参与实验过程,提高实践能力。
实验评价体系科学合理,既注重实验结果的准确性,又注重学生的实验操作能力和实验报告的撰写能力。
二、实验室设施西南交大拥有先进的实验室设施,为学生提供了良好的实验环境。
学校的实验室涵盖了多个学科领域,包括物理、化学、生物、电子、计算机等。
这些实验室配备了先进的实验设备和仪器,能够满足学生进行各种实验研究的需求。
实验室的管理规范,设有专门的实验室管理员,负责设备的维护和管理,确保实验设备的正常运行。
此外,学校还注重实验室的安全管理,制定了严格的实验室安全规定,确保学生的人身安全和实验设备的安全。
三、实验教学成果西南交大的实验教学取得了显著的成果。
学校的实验教学成果多次获得国家级奖项,得到了社会的广泛认可。
学生在实验教学中不仅学到了专业知识,还培养了动手能力和创新思维。
通过实验教学,学生能够将理论知识与实际应用相结合,提高问题解决能力和创新能力。
许多学生在实验教学中发表了学术论文,参与了科研项目,取得了优异的成绩。
实验教学的成果不仅体现在学生的学术成就上,还体现在学生的就业竞争力上。
许多企业对西南交大的实验教学给予了高度评价,认为该校的学生具备扎实的专业知识和出色的实践能力。
实验 11 实验报告一、实验目的1.掌握string字符串型的使用方法;2.掌握string字符串型的基本操作:大小写转换、字符统计、关键字查找、字符串排序等的常用算法。
二、实验任务1. 输入并存储一个字符串,将该字符串中的所有小写字母转换为大写字母后输出。
要求:使用字符数组(即char数组)存放字符串。
2.输入并存储一个字符串,统计该字符串中'a'字符(不区分大小写)的个数。
要求:使用string变量存放字符串。
3. 输入并存储一个字符串,将该字符串中的每个字母加10后再将字符串输出。
要求:分别采用以下方法实现(1)使用字符数组(即char数组)存放字符串;(2)使用string变量存放字符串。
4. 输入并存储一个由26个英文字母(不分大小写)组成的字符串,再输入一个英文字母,查找该字母在字符串中第一次出现的位置。
三、实验结果(源程序+ 注释+ 运行界面截图)(要求:(1)提供源程序;(2)源程序包含必要的注释,包括:在程序头部给出本程序功能的注释、所定义变量的用途注释、程序块的功能注释、子函数的功能注释等;(3)运行结果的窗口截图,程序运行结果中输出的第一行内容必须为:程序作者的学号和姓名。
)1.#include<iostream>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;int i;char s[100];gets(s);strlen(s) ;for(i=0;i<strlen(s);i++)if (s[i]>='a'&&s[i]<='z')s[i]=s[i]-32;cout<<s<<endl;}2.#include<iostream>#include<string>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;string s;int i,number=0;getline(cin,s);for(i=0;i<s.size();i++)if(s[i]=='a'||s[i]=='A')number=number+1;cout<<number<<endl;}3.(1)#include<iostream>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;char s[100];int i;cout<<"请输入一个字符串:"<<endl;gets(s);for(i=0;i<strlen(s);i++)s[i]=s[i]+10;cout<<"转换后的字符串为:"<<endl;cout<<s<<endl;}(2)include<iostream>#include<string>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;string s;int i;cout<<"请输入一个字符串:"<<endl;getline(cin,s);for(i=0;i<s.size();i++)s[i]=s[i]+10;cout<<"转换后的字符串为:"<<endl;cout<<s<<endl;}4.#include<iostream>#include<string>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;string s;char x;int i,num=0;cout<<"请输入一个字符串:"<<endl;getline(cin,s);cout<<"请输入一个英文字母:"<<endl;cin>>x;for(i=0;i<s.length();i++)if(s[i]==x){num=i;break;}if(i<s.length())cout<<"字母"<<x<<"在字符串"<<s<<"第一次出现在第"<<num+1<<"个"<<endl;elsecout<<"在字符串"<<s<<"中没有字母"<<x<<endl;}。
电力系统及其自动化实验(一)实验报告姓名:班级:班学号:实验时间:2016年3月15日1.实验内容:一、实验目的(1)了解铁路牵引供电系统与配电系统的特点,对西南交通大学—施耐德电气联合实验室系统的集中管理、保护与控制自动化、电能质量监测等进行操作与学习。
(2)通过运行等比例缩小的牵引供电系统模型,了解牵引供电系统的结构及工作过程;(3)了解认识微电网及控制实验系统,培养在新能源领域的学术研究及知识理解能力;二、实验原理(1)西南交通大学-施耐德电气联合实验室采用400V配电网络来模拟实际铁路的10kV配电。
整个平台由10kV单电源供电,进线侧配置施耐德电气ION7650电能质量监测仪表与Sepam微机保护等装置实现对电源进线处电流、电压、功率、电度、功率因数、频率、谐波、最大/最小值等状态量的监测、断路器的控制。
10kV电源出线均配置Sepam微机保护装置确保系统安全运行。
整个平台可分为3大部分,分别是牵引供电、铁路配电以及监控系统。
1、牵引供电部分牵引供电部分模拟实际牵引变电所,通过升压变压器将10kV升至27.5kV 为牵引负荷供电。
进线配备施耐德电气带通讯的断路器,同时根据需要配备施耐德电气ION7650与PM810电能质量监测装置,监测进线与牵引侧负荷的电能质量。
2、配电部份配电部分模拟铁路配电网,采用400V电压模拟实际线路采用的10kV电压。
电源由10kV经10kV/400V降压变压器降压后提供,降压后电源线路分为两部分,分别构成模拟配电所甲和配电所乙,每个配电所内加装施耐德电气电容补偿装置,补偿容量初步定为50kV A。
甲所与乙所互为备用,分别馈出两路出线连接铁路一级负荷贯通线与综合负荷贯通线。
模拟贯通线路由电感、电容以及电阻元件根据实际线路的参数搭建。
同时在一级负荷贯通线路上设置有故障模块,模拟实际铁路配电线路的各种故障,借以观察故障后保护以及断路器等的动作情况。
借助施耐德电气的PowerLogic 配电监控系统,本部分预期实现如下功能:[1]设备保护由SEPAM系列微机保护装置来满足不同高压设备(如线路、变压器、电动机、电容器、母线等)的保护功能要求。
数值分析上机实习报告姓名:学号:专业:大地测量学与测量工程电话:序言1.所用程序语言:本次数值分析上机实习采用Visual c#作为程序设计语言,利用Visual c#可视化的编程实现方法,采用对话框形式进行设计计算程序界面,并将结果用表格或文档的格式给出。
2.程序概述:(1)第一题是采用牛顿法和steffensen法分别对两个题进行分析,编好程序后分别带入不同的初值,观察与真实值的差别,分析出初值对结果的影响,分析两种方法的收敛速度。
(2)第二题使用Visual c#程序设计语言完成了“松弛因子对SOR法收敛速度的影响”,通过在可视化界面下输入不同的n和w值,点击按钮直接可看到迭代次数及计算结果,观察了不同的松弛因子w对收敛速度的影响。
目录一.用牛顿法,及牛顿-Steffensen法............ 错误!未定义书签。
1. 计算结果.................................... 错误!未定义书签。
2. 结果分析 (5)3. 程序清单 (5)二.松弛因子对SOR法收敛速度的影响 (8)1. 迭代次数计算结果 (8)2. 计算X()结果 (10)3. 对比分析 (12)4. 程序清单: (12)三.实习总结 (14)实验课题(一)用牛顿法,及牛顿-Steffensen法题目:分别用牛顿法,及牛顿-Steffensen法(1)求ln(x+sin x)=0的根。
初值x0分别取0.1, 1,1.5, 2, 4进行计算。
(2)求sin x=0的根。
初值x0分别取1,1.4,1.6, 1.8,3进行计算。
分析其中遇到的现象与问题。
1、计算结果由于比较多每种方法中只选取了其中两个的图片例在下面:2、结果分析通过对以上的牛顿法和steffensen法的练习,我发现在初值的选取很重要,好的初值选出后可以很快的达到预定的精度,要是选的不好就很慢,而且在有的时候得出的还是非数字,所以初始值的选取很重要。
实验1教学班级:学生学号:学生:实验日期:2014年3月1日实验地点:(机房)指导教师签名:__________ 实验成绩:___________ 一、实验目的1.熟悉C++程序的集成开发环境;2.学习新建和打开控制台应用程序的方法;3.掌握简单数据运算,以及输入与输出方法。
二、实验任务1.输入一摄氏温度,输出显示所转换的华氏温度。
(提示:摄氏温度=(华氏温度-32)×5/9)2.画出一头威武雄壮的雄狮。
,%%%%%%,%%/\%%%%/\%,%%%\c "" J/%%%%. %%%%/ o o \%%%`%%. %%%% _ |%%`%% `%%%%(__Y__)%// ;%%%%`\-/%%%'(( / `%%%%%%%'\\ .' |\\ / \ | |\\/ ) | |\ /_ | |__(___________)))))))三、实验结果(源程序+ 注释)1.源程序#include<iostream>using namespace std;void main(){double a,b;cout<<"请输入一摄氏温度:"<<endl;cin>>a;b=a*9/5+32;cout<<"转换的华氏温度为:"<<b<<endl;}2.源程序#include<iostream>using namespace std;void main(){cout<<" ,%%%%%% "<<endl;cout<<" ,%%/\%%%%/\% "<<endl; cout<<" ,%%%\c "" J/%%% "<<endl;cout<<"%. %%%%/ o o \%%% "<<endl;cout<<"`%%. %%%% _ |%% "<<endl;cout<<" `%% `%%%%(__Y__)% "<<endl;cout<<" // ;%%%%`\-/%%%' "<<endl;cout<<"(( / `%%%%%%%' "<<endl;cout<<" \\ .' | "<<endl;cout<<" \\ / \ | | "<<endl;cout<<" \\/ ) | | "<<endl;cout<<" \ /_ | |__ "<<endl;cout<<" (___________))))))) "<<endl;}实验2教学班级:学生学号:学生:实验日期:2014年3月1日实验地点:(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握对一般数据的输入和输出格式控制方法;2.掌握对实型数据输出形式的设置和小数位数的控制方法;3.了解数据输入的相关注意事项。
西南交大实习报告(共8篇)第1篇:工程造价实习报告(西南交大)一、毕业实习是我们毕业前的重要环节之一,是学生对以后社会生活的适应起着决定性的作用。
具有较强的实践性、社会性,其目的是通过实习更好的实现理论与实践相结合,使学生毕业前巩固和校验学过的理论知识、锻炼和提高学生的实践技能、提高分析和解决实际问题的能力,提高学生对专业现状及未来的认识,增强个人在社会上的生存能力,为毕业后参加工作,能更好的完成各项实际工作,实现自我价值,打下一个良好的基础。
二、2021年1月1日至今,我在重庆城建控股(集团)有限责任公司市政部门做预算员。
这是第一次正式接触预算工作,每天在规定的时间上下班,上班期间要认真准时地完成自己的工作任务,不能草率敷衍了事。
我们的肩上开始扛着责任,凡事得谨慎小心,否则随时可能要为一个小小的错误承担严重的后果付出巨大的代价,再也不是一句对不起和一纸道歉书所能解决。
三、实习期间我也下工地进行了实践,看了开挖沟槽土方时当开挖沟槽深度大于5m时施工单位必须向监理单位及建设单位重新提出专项施工方案,同时在施工过程中放坡系数也与沟槽深度小于5m的段落不同。
管道安装、沟槽回填、检查井钢筋绑扎、检查井模板安装、检查井砼的浇筑、道路路基和路面施工。
对道路工程的施工顺序和施工工艺有了一定的了解后,在计算工程量的时候有很大的帮助。
四、绑扎钢筋专门看了一下,以前只是老师说钢筋在一个工程中占据的费用很大。
现在亲眼所见,果不其然,在施工现场,放眼望去整条道路上的检查井基本都在施工钢筋,工人们正在忙碌的绑钢筋,大家分工明确,都很认真。
我也前去绑扎了点点钢筋,加工处理了一些箍筋,但是最后还是有很多不合格,最后还是现场的师傅给我讲解了一些原理后我才自己动手加工出来看几个合格箍筋。
其实我觉得我们能动手操作就是我们最大的进步,在学校我根本就不能把书本上的东西用于实践中去,这次我就好好的实践了一番,可以说是受益匪浅。
五、我们在学校里学的不是知识,而是一种叫做自学的能力。
西南交通大学课程设计年级:学号:姓名:专业:指导老师:二零一三年六月一.课程设计要求(简要描述课程设计的要求)实现一个简单的儿童商品仓库管理系统。
系统的主要功能是登记仓库中各个儿童用品的信息情况,对部分信息进行检查和处理,并将结果保存。
假设仓库中有3种不同类型的商品:食品、鞋子、玩具。
对于食品,要求检查是否过期,并作相应处理;对于鞋子,要求检查是否是过季产品,如果是,就要做相应处理。
二.模块划分(说明函数和类的定义)查看信息模块;添加货物模块;取出货物模块;修改信息模块;三。
源程序(程序代码,附部分注释)#include”stdafx.h"#include"time.h”#include<iostream>using namespace std;struct times{int year,month,day;};class childgoods{public:virtual void inputinformation()=0;virtual void add()=0;void totalnumber();public:char name[20];double number;float bid;//进价;int stock;//库存;times storage_time;//入库时间;int inputnumber;};class food :public childgoods{public:food(){next=NULL;}void inputinformation();void changeinformation(food **f);void add(){};void show(food*f);void showall();friend void addfood(food**f);friend void getfood(food **f);public:times shelf_life;//保质期;food*next;};void food::show(food*f){int num;food *temp;cout<<”请输入所要查看货物的编号.”<<endl;cin>〉num;temp=f;if(temp->number==num)temp—>showall();else{while(temp!=NULL){if(temp-〉number==num)break;temp=temp—>next;}temp—>showall();}}void food::showall(){cout<〈"名称编号进价库存入库时间:年月日保质期:年月日”〈〈endl;cout〈〈name<〈””〈〈number〈〈””<〈bid〈〈””<〈stock〈<" ”<〈storage_time。
实验__9__实验报告教学班级:02 学生学号:学生姓名:实验日期:2014.5.23 实验地点:X7308 (机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法;2.掌握二维数值型数组的使用方法;二、实验任务1. 从键盘输入一个四行四列的实数矩阵到一个二维数组中,求出主对角线上元素之和。
2. 输出以下杨辉三角形。
11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 1三、实验结果(算法设计流程图+源程序+ 注释)1. #include<iostream>#include"iomanip"using namespace std;void main (){ int i,j,a[4][4],sum=0;cout<<"请输入实数矩阵"<<endl;for(i=0;i<=3;i++)for(j=0;j<=3;j++)cin>>a[i][j];{ for(i=0;i<=3;i++){ for(j=0;j<=3;j++)cout<<setw(5)<<a[i][j];cout<<endl;}}{ for(i=0;i<=3;i++)for(j=0;j<=3;j++)if(i==j)sum=sum+a[i][j];cout<<"对角线之和为"<<sum<<" "<<endl; }system("pause");}2. #include<iostream>#include"iomanip"using namespace std;void main(){ int i,j,m,a[10][19];for(i=0;i<10;i++){ a[i][9+i]=1;a[i][9-i]=1;}for(i=2;i<10;i++)for(j=11-i;j<9+i;j=j+2)a[i][j]=a[i-1][j-1]+a[i-1][j+1];cout<<"杨辉三角?2014"<<endl;for(i=0;i<10;i++){ for(j=9-i;j<=9+i;j=j+2){ if(i+j==9){m=j; while(m!=0){cout<<" ";m--;}}cout<<setw(3)<<a[i][j];} cout<<endl;}system("pause");}。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==西南交大,数字电路,实验报告篇一:数字电子技术实验报告数字电子技术实验报告姓名:尚朝武学号:201X0123400044 实验时间:201X-12-24实验一(一) 1、实验内容:(1用静态法测试74LS00与非门电路的逻辑功能 2、实验原理图如图1.113、实验步骤:1) 用万用表测量双路跟踪稳压电源中的+5V电源电压; 2) 检查无误后引用通用接插板;3) 在芯片盒中找到74LS00芯片并插入通用接插板上; 4) 测试与非门的逻辑功能A. 按图1.1接线,检查接线无误后通电;;B. 设置输入变量A、B的高(H)、低(L)电平,并分别测量与非门的输出电压U;(U>3.6V时,则Y=H(1);反之,Y=L(0))。
5)用万用表测量输出电压,并将结果填入表1.1.1中 4、实验结果见表1.1.1表1.1.1(二 1、实验内容用动态测试法验证图(a)、(b)、(c)的输入输出波形。
2、实验原理图图图图(表)d74ls86管脚图和引脚图及真值表3、实验步骤1)利用实验一——(一)的双路跟踪稳压电源中的+5V电源电压; 2)检查无误后引用通用接插板;3)在芯片盒中分别找到74LS86、74LS60芯片并分别插入通用接插板上; 4)分次按图a、b、c、d接线,检查接线无误后通电;设置输入变量A的信号为100kHz 5)分别记下数字显示器显示的波形。
4、实验结果见下图图a的输入(图上)、输出(图下)波形图b的输入(图上)、输出(图下)波形三)图c的输入(图上)、输出(图下)波形1、实验内容:(1用静态法测试74LS139静态译码器的逻辑功能 2、实验原理图如图A、B 3、实验步骤:1) 利用实验一——(一)的双路跟踪稳压电源中的+5V电源电压; 2) 检查无误后引用通用接插板;3) 在芯片盒中找到74LS139芯片并插入通用接插板上; 4) 测试74LS139译码器的逻辑功能a) 按图1.1接线,检查接线无误后通电;;b) 设置输入变量A、B及E的高(H)、低(L)电平,并分别测量74LS139的输出电压U;(U>3.6V时,则Y=H(1);反之,Y=L(0)); 5)用万用表测量输出电压,并将结果填入表1.2中 4、实验结果见表1.2图A 74LS139的管脚图篇二:201X-201X西南交大数字电路第1次作业(注意:若有主观题目,请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。
《计算机组成实验 C》课程设计适用专业:电子信息类专业专业:软件工程班级:软件一班学号:姓名:某某某指导教师:陈红梅实验学期:2014-2015 第 1 学期西南交通大学信息科学与技术学院目录简化计算机系统的设计 (2)一、实验目的 (2)二.、实验内容 (2)三.、预习要求 (2)四、实验报告 (2)1. BLOCK图 (3)2. 程序设计(纸质的版本我用手抄) (4)3. 仿真波形图 (11)4、仿真中遇到的问题: (14)五、实验感想 (15)简化计算机系统的设计一、实验目的通过学习简单的指令系统及其各指令的操作流程,用VHDL 语言实现简单的处理器模块,并通过调用存储器模块,将处理器模块和存储器模块连接形成简化的计算机系统。
二.、实验内容1. 用VHDL语言实现简单的处理器模块。
2. 调用存储器模块设计64×8的存储器模块。
3. 将简单的处理器模块和存储器模块连接形成简单的计算机系统。
4. 将指令序列存入存储器,然后分析指令执行流程。
三.、预习要求1、学习简单指令集。
2、学习各指令的操作流程。
四、实验报告1. BLOCK图2. 程序设计(纸质的版本我用手抄)CPU的设计:LIBRARY ieee;USE ieee.std_logic_1164.ALL;PACKAGE mypack ISCONSTANT idle : std_logic_vector(3 DOWNTO 0) :="0000";CONSTANT load : std_logic_vector(3 DOWNTO 0) :="0001";CONSTANT move : std_logic_vector(3 DOWNTO 0) :="0010";CONSTANT addx : std_logic_vector(3 DOWNTO 0) :="0011";CONSTANT subp : std_logic_vector(3 DOWNTO 0) :="0100";CONSTANT andp : std_logic_vector(3 DOWNTO 0) :="0101";CONSTANT orp : std_logic_vector(3 DOWNTO 0) :="0110";CONSTANT xorp : std_logic_vector(3 DOWNTO 0) :="0111";CONSTANT shrp : std_logic_vector(3 DOWNTO 0) :="1000";CONSTANT shlp : std_logic_vector(3 DOWNTO 0) :="1001";CONSTANT swap : std_logic_vector(3 DOWNTO 0) :="1010";CONSTANT jmp : std_logic_vector(3 DOWNTO 0) :="1011";CONSTANT jz : std_logic_vector(3 DOWNTO 0) :="1100";CONSTANT read : std_logic_vector(3 DOWNTO 0) :="1101";CONSTANT write : std_logic_vector(3 DOWNTO 0) :="1110";CONSTANT stop : std_logic_vector(3 DOWNTO 0) :="1111";END mypack;LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE WORK.mypack.ALL;------------------------cpu实体声明--------------------------------- ENTITY cpu ISPORT(reset : IN std_logic; --清零信号低有效clock : IN std_logic; --时钟信号Write_Read: OUT std_logic; --读写信号,'1'为写 M_address: OUT std_logic_vector(11 DOWNTO 0); --地址线M_data_in: IN std_logic_vector(7 DOWNTO 0); --数据输入线M_data_out: OUT std_logic_vector(7 DOWNTO 0); --数据输出线 overflow: OUT std_logic); --溢出标志END cpu;------------------------cpuRTL级行为描述-------------------------------- ARCHITECTURE RTL of cpu ISSIGNAL IR: std_logic_vector(15 DOWNTO 0); --指令寄存器 SIGNAL MDR: std_logic_vector(7 DOWNTO 0); --数据寄存器 SIGNAL MAR: std_logic_vector(11 DOWNTO 0); --地址寄存器 SIGNAL status: integer RANGE 0 TO 6; --状态寄存器BEGINstatus_change: PROCESS(reset, clock, status )BEGINIF reset = '0' THEN status <= 0 ;ELSIF clock'EVENT AND clock = '0' THENCASE status ISWHEN 0 =>status <= 1;WHEN 1 =>IF IR(15 DOWNTO 12) = Stop THENstatus <= 1;ELSEstatus <= 2;END IF;WHEN 2 =>CASE IR(15 DOWNTO 12) ISWHEN Read|Write|Jmp|Jz|Swap =>status <= 3;WHEN OTHERS =>status <= 0;END CASE;WHEN 3 =>IF IR(15 DOWNTO 12)= Swap THENstatus <= 0;ELSEstatus <= 4;END IF;WHEN 4 =>status <= 5;WHEN 5 =>CASE IR(15 DOWNTO 12) ISWHEN Read|Write =>status <= 6;WHEN OTHERS =>status <= 0;END CASE;WHEN OTHERS =>status <= 0;END CASE;ELSENULL;END IF;END PROCESS status_change;seq: PROCESS(reset,clock)VARIABLE PC:std_logic_vector(11 DOWNTO 0); --程序计数器 VARIABLE R0,R1,R2,R3: std_logic_vector(7 DOWNTO 0); --通用寄存器VARIABLE A: std_logic_vector(7 DOWNTO 0); --临时寄存器VARIABLE temp: std_logic_vector(8 DOWNTO 0); --临时变量BEGINIF(reset='0') THEN -- 清零IR <= (OTHERS=>'0');PC := (OTHERS=>'0');R0 := (OTHERS=>'0');R1 := (OTHERS=>'0');R2 := (OTHERS=>'0');R3 := (OTHERS=>'0');A := (OTHERS=>'0');MAR <= (OTHERS=>'0');MDR <= (OTHERS=>'0');ELSIF(clock'event AND clock='1') THENoverflow <= '0';CASE status ISWHEN 0=> --状态0IR <= M_data_in & "00000000"; --取指令PC := PC+1; --程序计数器加1WHEN 1=> --状态1IF (IR(15 DOWNTO 12) /= stop) THENMAR <= PC;END IF;CASE IR(15 DOWNTO 12) ISWHEN load =>R0:= "0000" & IR(11 DOWNTO 8);WHEN shlp|shrp =>CASE IR(11 DOWNTO 10) IS -- Rx to AWHEN "00"=> A:= R0;WHEN "01"=> A:= R1;WHEN "10"=> A:= R2;WHEN OTHERS => A:= R3;END CASE;WHEN Move|addx|subp|andp|orp|xorp|Swap=> CASE IR(9 DOWNTO 8) IS -- Ry to AWHEN "00"=> A:=R0;WHEN "01"=> A:=R1;WHEN "10"=> A:=R2;WHEN OTHERS=> A:=R3;END CASE;WHEN OTHERS => NULL;END CASE;WHEN 2=> --状态2CASE IR(15 DOWNTO 12) ISWHEN addx => -- Rx:= Rx + A;CASE IR(11 DOWNTO 10) ISWHEN "00"=>temp := (R0(7) & R0(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R0:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN "01"=>temp :=(R1(7) & R1(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R1:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN "10"=>temp :=(R2(7) & R2(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R2:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN OTHERS=>temp :=(R3(7) & R3(7 DOWNTO 0)) + (A(7) & A(7 DOWNTO 0));R3:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);END CASE;WHEN subp => -- Rx:= Rx - A;CASE IR(11 DOWNTO 10) ISWHEN "00"=>temp :=(R0(7) & R0(7 DOWNTO 0)) + NOT(A(7) & A(7 DOWNTO 0)) + 1;R0:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN "01"=>temp :=(R1(7) & R1(7 DOWNTO 0)) + NOT(A(7) & A(7 DOWNTO 0)) + 1;R1:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);WHEN "10"=>temp :=(R2(7) & R2(7 DOWNTO 0)) + NOT(A(7) & A(7 DOWNTO 0)) + 1;R2:=temp(7 DOWNTO 0);overflow <= temp(8) xor temp(7);WHEN OTHERS=>temp :=(R3(7) & R3(7 DOWNTO 0)) + NOT(A(7) & A(7 DOWNTO 0)) + 1;R3:=temp(7 DOWNTO 0);overflow <= temp(8) XOR temp(7);END CASE;WHEN move =>CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:= A;WHEN "01"=> R1:= A;WHEN "10"=> R2:= A;WHEN OTHERS=> R3:= A;END CASE;WHEN shrp =>CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:= '0' & A( 7 DOWNTO 1 );WHEN "01"=> R1:= '0' & A( 7 DOWNTO 1 );WHEN "10"=> R2:= '0' & A( 7 DOWNTO 1 );WHEN OTHERS=> R3:= '0' & A( 7 DOWNTO 1 );END CASE;WHEN shlp =>CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:= A( 6 DOWNTO 0 ) & '0';WHEN "01"=> R1:= A( 6 DOWNTO 0 ) & '0';WHEN "10"=> R2:= A( 6 DOWNTO 0 ) & '0';WHEN OTHERS=> R3:= A( 6 DOWNTO 0 ) & '0';END CASE;WHEN andp => --Rx:= Rx AND A; CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:=R0 AND A;WHEN "01"=> R1:=R1 AND A;WHEN "10"=> R2:=R2 AND A;WHEN OTHERS=> R3:=R3 AND A;END CASE;WHEN orp => --Rx:= Rx OR A;CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:=R0 OR A;WHEN "01"=> R1:=R1 OR A;WHEN "10"=> R2:=R2 OR A;WHEN OTHERS=> R3:=R3 OR A;END CASE;WHEN xorp => --Rx:= Rx XOR A; CASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:=R0 XOR A;WHEN "01"=> R1:=R1 XOR A;WHEN "10"=> R2:=R2 XOR A;WHEN OTHERS=> R3:=R3 XOR A;END CASE;WHEN Swap => --Swap: Rx to Ry; CASE IR(11 DOWNTO 8) ISWHEN "0100"=> R0:=R1;WHEN "1000"=> R0:=R2;WHEN "1100"=> R0:=R3;WHEN "0001"=> R1:=R0;WHEN "1001"=> R1:=R2;WHEN "1101"=> R1:=R3;WHEN "0010"=> R2:=R0;WHEN "0110"=> R2:=R1;WHEN "1110"=> R2:=R3;WHEN "0111"=> R3:=R1;WHEN "1011"=> R3:=R2;WHEN "0011"=> R3:=R0;WHEN OTHERS=> NULL;END CASE;WHEN OTHERS => NULL;END CASE;WHEN 3=> --状态3CASE IR(15 DOWNTO 12) ISWHEN Swap=> -- Swap: A to RxCASE IR(11 DOWNTO 10) ISWHEN "00"=> R0:=A;WHEN "01"=> R1:=A;WHEN "10"=> R2:=A;WHEN OTHERS=> R3:=A;END CASE;WHEN jmp|Jz|Read|Write =>IR(7 DOWNTO 0)<= M_data_in; -- 取双字节指令的后半部分 PC := PC+1;WHEN OTHERS => NULL;END CASE;WHEN 4=> --状态4CASE IR(15 DOWNTO 12) ISWHEN jmp => -- 无条件转移指令PC := IR(11 DOWNTO 0);MAR <= IR(11 DOWNTO 0);WHEN Jz => -- 条件转移指令IF(R0="00000000") thenPC := IR(11 DOWNTO 0);MAR <= IR(11 DOWNTO 0);elseMAR <= PC;END IF;WHEN Read =>MAR <= IR(11 DOWNTO 0);WHEN Write =>MAR <= IR(11 DOWNTO 0);MDR <= R0;WHEN OTHERS => NULL;END CASE;WHEN 5 => --状态5MAR <= PC;WHEN 6 => --状态6CASE IR(15 DOWNTO 12) ISWHEN Read => R0 := M_data_in;WHEN OTHERS=> NULL;END CASE;END CASE;END IF;END process seq;comb: PROCESS (reset, status)BEGINIF (reset = '1' AND status = 5 AND IR(15 DOWNTO 12)= Write ) THEN Write_Read <= '1';ELSEWrite_Read <= '0';END IF;END PROCESS comb;M_address <= MAR;M_data_out <= MDR;END RTL;3. 仿真波形图3.1总体的仿真波形图1、我们可以看到CPU有6种工作模式,并且在不同的工作模式下实现了不同的功能。
.. . .. . . S. . . . . .. 实验__8__实验报告 教学班级:_26_ 学生学号:_201_ 学生:_ _ 实验日期:__5.26___ 实验地点:_________(机房) 指导教师签名:__________ 实验成绩:___________
一、实验目的 1.掌握对数值型一维数组的使用方法; 2.掌握对数组的插入、删除、修改、排序和查找等常用算法。
二、实验任务 1. 设有一批学生的程序设计课程的考试成绩(学生人数最多为N=100人,数据如下: 学号 程序设计成绩 2015112842 余学成 83 2015112324 思德 72 ┇ ┇ ┇
(提示:可以建立三个一维数组来存放学生的数据,其中:学号为一个long类型的数组studentID,为一个string类型的数组name,成绩为一个int类型的数组grade) (1)由键盘获取学生人数n,要求学生人数n的取值围11到N-2; (2)由键盘获取学生的相关数据; (3)用选择排序法将学生的数据按学号进行升序排列并输出排序后的学生数据;
2. 在任务1的基础上,在学生数据中,完成以下任务: (1)键盘输入一个学生的学号,用折半查找法查找是否有该学生,若有该学生则输出该学生的所有信息,按如下格式输出:
学号 程序设计成绩 2015112324 思德 72
若没有该学生,则输出“查无此人”的信息。 (2)插入一个新学生的数据,要求插入后学生的数据任按学号升序排列。
⒊ 在任务1的基础上,在学生数据中,完成以下任务: ⑴ 用选择排序法将学生数据按学生程序设计课程成绩降序排列。 ⑵ 键盘输入一个学生的学号和程序设计课程的新成绩,在学生数据中查找是否有该学生,若有该学生则用键盘输入的新成绩替换该学生的原成绩,否则输出“查无此人”的信息。
三、实验结果(源程序 + 注释) .. . .. . . S. . . . . .. //输入并升序排列学生的成绩 #include #include #include using namespace std; void main() { cout << "Name:" << endl; cout << "Number:20" << endl; long studentID[100], trans1;//定义两个长整型变量,其中一个是数组 string name[100], trans2;//定义两个字符串类变量,其中一个是数组 int grade[100], n, i, j, trans3; cout << "请输入学生人数n (11≤n≤98)" << endl; cin >> n;//从键盘输入学生的人数 for (i = 0; i <= n - 1; i++)//利用循环结构录入各学生的信息 { cout << "请依次输入第" << i + 1 << "个学生的学号、、成绩" << endl; cin >> studentID[i] >> name[i] >> grade[i]; } for (i = 0; i <= n - 1; i++)//利用嵌套循环和条件语句将信息按学号进行升序排列 { for (j = i + 1; j <= n - 1; j++) { if (studentID[i] > studentID[j]) { trans1 = studentID[i]; studentID[i] = studentID[j]; studentID[j] = trans1; trans2 = name[i]; name[i] = name[j]; name[j] = trans2; trans3 = grade[i]; grade[i] = grade[j]; grade[j] = trans3; } } } cout << "按学号升序排序后学生的成绩信息为:" << endl; cout << setw(10) << "学号" << setw(10) << "" << setw(10) << "成绩" << endl;//限定输出结果格式 for (i = 0; i <= n - 1; i++)//按特定格式输出排列后的学生信息 { cout << setw(10) << studentID[i] << setw(10) << name[i] << setw(10) << grade[i] << endl; } /*键盘输入一个学生的学号,用折半查找法查找是否有该学生*/ int bot = n - 1, mid, top = 0; long number; cout << "请输入待查学生的学号" << endl; .. . .. . . S. . . . . .. cin >> number; while (top <= bot)//折半查找法查找信息库中某个学号的学生 { mid = (bot + top) / 2; if (studentID[mid] == number) break; else if (studentID[mid] > number) top = mid + 1; else if (studentID[mid] < number) bot = mid - 1; } if (bot >= top)//当这个学生存在时,以特定格式输出该学生的信息 { cout << "该学生的信息为:" << endl; cout << setw(10) << "学号" << setw(10) << "" << setw(10) << "成绩" << endl; cout << setw(10) << number << setw(10) << name[mid] << setw(10) << grade[mid] << endl; } else if(top>=bot) cout << "查无此人" << endl;//当该学生不存在时,显示“查无此人” /*插入一个新学生的数据,要求插入后学生的数据按学号升序排列*/ cout << "请依次输入要插入的学生学号、、成绩信息:" << endl; cin >> studentID[n] >> name[n] >> grade[n];//录入要插入的学生的信息 for (i = 0; i <= n; i++)//利用嵌套循环和条件语句,将插入后学生的数据按学号升序排列 { for (j = i + 1; j <= n; j++) { if (studentID[i] > studentID[j]) { trans1 = studentID[i]; studentID[i] = studentID[j]; studentID[j] = trans1; trans2 = name[i]; name[i] = name[j]; name[j] = trans2; trans3 = grade[i]; grade[i] = grade[j]; grade[j] = trans3; } } } cout << "插入并排序后学生的成绩信息为:" << endl; cout << setw(10) << "学号" << setw(10) << "" << setw(10) << "成绩" << endl;//限定提示语句的输出格式 for (i = 0; i <= n; i++) { cout << setw(10) << studentID[i] << setw(10) << name[i] << setw(10) << grade[i] << endl;//输出排序结果 } .. . .. . . S. . . . . .. }
/*在任务1的基础上,在学生数据中,完成以下任务: ⑴ 用选择排序法将学生数据按学生程序设计课程成绩降序排列。 ⑵ 键盘输入一个学生的学号和程序设计课程的新成绩,在学生数据中查找是否有该学生,若有该学生则用键盘输入的新成绩替换该学生的原成绩,否则输出“查无此人”的信息。 */ #include #include #include using namespace std; void main() { cout << "Name:" << endl; cout << "Number:201" << endl; long studentID[100], trans1;//定义两个长整型变量,其中一个是数组 string name[100], trans2;//定义两个字符串类变量,其中一个是数组 .. . .. . . S. . . . . .. int grade[100], n, i, j, trans3; cout << "请输入学生人数n (11≤n≤98)" << endl; cin >> n; for (i = 0; i <= n - 1; i++) { cout << "请依次输入第" << i + 1 << "个学生的学号、、成绩" << endl; cin >> studentID[i] >> name[i] >> grade[i];//利用循环结构录入各学生的信息 } for (i = 0; i <= n - 1; i++)//利用嵌套循环和条件语句将信息按学号进行升序排列 { for (j = i + 1; j <= n - 1; j++) { if (studentID[i] > studentID[j]) { trans1 = studentID[i]; studentID[i] = studentID[j]; studentID[j] = trans1; trans2 = name[i]; name[i] = name[j]; name[j] = trans2; trans3 = grade[i]; grade[i] = grade[j]; grade[j] = trans3; } } } cout << "按学号升序排序后学生的成绩信息为:" << endl; cout << setw(10) << "学号" << setw(10) << "" << setw(10) << "成绩" << endl; for (i = 0; i <= n - 1; i++)//输出按学号进行升序排列后的学生信息 { cout << setw(10) << studentID[i] << setw(10) << name[i] << setw(10) << grade[i] << endl; } for (i = 0; i <= n - 1; i++)//利用嵌套循环和条件语句将信息按成绩进行降序排列 { for (j = i + 1; j <= n - 1; j++) { if (grade[i] < grade[j]) { trans1 = studentID[i]; studentID[i] = studentID[j]; studentID[j] = trans1; trans2 = name[i]; name[i] = name[j]; name[j] = trans2; trans3 = grade[i]; grade[i] = grade[j]; grade[j] = trans3; } } } cout << "按成绩降序排序后学生的成绩信息为:" << endl; cout << setw(10) << "学号" << setw(10) << "" << setw(10) << "成绩" << endl; for (i = 0; i <= n - 1; i++)//输出按成绩进行降序排列后的学生信息